In our world, we organise in Pods – an autonomous group of 6-9 people with all the skills needed to solve a problem. Multiple Pods form a Team. Within a Pod, there can be multiple Senior Developers, but only a single Lead Developer. They have different and overlapping responsibilities and accountabilities.
Every project must have exactly one Lead Developer, and has one or more Senior Developers.
It is the accountability of the project or product manager to ensure that these roles exist in a team, and that the roles are filled with skilled team members able and willing to fulfil the role.
A Senior Developer
Every project must have at least one Senior Developer who has:
- high competence in the core technologies used in the project
- reasonable competence in all technologies used in the project
- a willingness to learn, and takes action to generate opportunities for learning
- an understanding and ability to explain high level architectural principles
- the ability to generate implementable steps through the selection of appropriate patterns.
They are responsible for the following activities:
- performing code and design reviews against industry and company best practice, defined implementation plans etc.
- demonstrating “technical common sense” to ensure the team is producing clean, supportable, sustainable products
- embody best practice around software engineering and software delivery, including testing, automation, deployment, etc. As an example, what technical standards are to be followed? How will we handle branching? Code reviews?
- actively participate in creation of detailed designs
- helps the wider organisation through activities like lunch and learns, pattern generation, training etc
- actively mentors less experienced developers, typically spending 10-30% of their time on this alone.
You are probably a “Senior Developer” if team members keep asking you how to do things. We have the same expectations of Staff and Contractor Senior Developers, including that they spend significant time coaching and developing others.
The Lead Developer
In our projects, we expect the most senior developer to take on the role of “Lead Developer”. This role entails more leadership activities – the Lead Developer is accountable for:
- Being a “Senior Developer” i.e. the Lead Developer also does all of the things that a Senior Developer does.
- Ensuring that the Developers and Senior Developers are fulfilling their responsibilities.
- The creation of the detailed technical designs necessary for implementation
- Work closely with architecture to ensure continuity and coherence between detailed technical designs and high level solution and reference architecture
- assist with planning and scoping of work, including helping design the delivery team
- Assist with interviewing
- meet with senior management (IT or commercial) to ensure proper understanding of the project, delivery, etc. on both sides
- Lead the development team and create clarity of vision, design and expectations
The Lead Developer role requires the person to spend less time actually writing code – in some weeks, you might spend 30% or less of your time actually writing code, depending on the stage of the work.