ок, пойдем с другой стороны - как бы вы написали сотрудников и экшены без базы?
Я бы делал так. 5 интерфейсов по тому как написаны описаны роли.. Test ( canDoTest) Code (canDoCode) и т.д. абстрактный класс Job с методом whatCanIDo которая проходиться по методам и возвращает только результаты, что я умею. Или сервис с таким методом, который бы обходил интерфейс Job.
Programmer extend/implement Job
{
canDoTest => false
} И т.д