In old Caché versions it was possible to create a new role based on predefined %Developer by copying it and adding some resources as needed. It was true at least from 2010.1 to 2015.1.
After upgrade from 2015.1.4 to 2017.2.1 it turned that it's only partially true now. User with a "New-Developer" role can enter Studio and open existing cls/mac/etc for editing and everything is OK unless he tries to create something new (Ctrl-N), than he gets a pop-up with %msg: <User xxx does not have enough privilege to execute stored procedure %CSP.StudioTemplateMgr_Templates>
The solution found was simple: user defined roles based on %Developer should be assigned to %Developer rather than contain all its resources inside. The simplest way to achieve it is to make a "New-Developer" role a member of %Developer. To be fair, InterSystems docs always contained a note:
InterSystems recommends that you do not modify predefined roles. Rather, create a new role based on the predefined role and modify the role that you have created.
but it was not clear enough how it should be based: by copying or by assigning. In modern Caché versions only the last way seems to be valid.