It's not as simple as it may seem at first. At least at the moment.
Technically, the way to handle this is to add new acl group:
Acl::add_groups(array('Programmer'));
Then allow that group to perform certain actions:
Acl::add_aco('Premium_Projects_Tickets','edit details',array('Programmer'));
The problem is that we still need to go through all the modules so far and standardize every use of acl throughout the system.
What this means is - right now you have little control to restrict people from accessing these parts of epesi that are, by default, accessible by every employee.
It's on our ticket list, it's pretty high in priority, so you can expect this ti be ready in foreseeable future.
And if you really need to get this working fast - your only option is to do what I wrote about creating group and granting permissions, logging on a user with Programmer's access level and then - checking every recordSet and editing access_* methods in respective modules as needed. This however, will prove to create some trouble on epesi updates, as you are well aware.
Kind regards,
Arek