Purpose
The primary purpose of the Principal Developer is to nurture a culture of continual learning within the department. Within that context they should be able to demonstrate the benefits of approaches to development and delivery either through working as a Team Member for a period of time or through group sessions.
Secondly, the Principal Developer should be the authority for decisions relating to standards and practices.
Responsibilities
To act as a champion for continuous learning so that the skill level of the department continues to improve and we deliver value to CompanyX more effectively.
To act as a champion for best practices so that we continue to drive ourselves forward.
To encourage everyone to take the initiative to solve problems so that we are all working together to make things better.
To act as an example to everyone in the development team so that they we are confident we can do things right rather than feeling pressured to cut corners.
To be able to effectively communicate with the development team and the rest of the business about best practices so that there is a common understanding and everyone believes everyone else is doing what is right for CompanyX.
Ultimately responsible for the coding standards of the department and ensuring they are applied so that we are doing work efficiently and of the highest quality.
Ultimately responsible for the management of code re-use within the teams so that we do not have unnecessary dependencies, but are also able to take advantage of re-use effectively.
Ultimately responsible for the tools and frameworks used by the department so that we are continuously improving the way we do things. However, whilst we are able to as we are still a relatively small department it is not for one person ever to make such decisions, but to make sure there is consensus about which direction to go in.
Duties
Run and facilitate presentations, sessions and dojos to improve the skills of the team.
Manage, publicise and organise (where appropriate) other team members and any sessions I am not running myself.
Work closely with individual teams to improve their working practices, both coding skills and process related. When doing so I take on the Roles and Responsibilities of a Team Member.