Starting in 2009, I've been working as a software engineer, lead developer, engineering manager, vice-president of engineering, and chief product officer. During this journey, I had the opportunity to support talented engineers in different career transitions, from individual contributor to lead developer, from lead developer to engineering manager.
I found many shared struggles while mentoring them; that's why I'm writing a series on how to get prepared to move into these positions.
What is a Lead Developer?
A Lead Developer is the technical leader of a team of developers. She's in charge of the success of a project. She animates the delivery to build the right things, the right way, and on time.
She is responsible for advocating on best practices, communicating on the progress, mentoring other developers, providing technical guidance to the team, and deciding on technical trade-offs.
Depending on the organization, we can refer to a lead developer as a lead engineer, a team lead, a technical project manager, or a tech lead.
In an engineering career ladder, the lead developer position often sits between the individual contributor track and the people manager track.
It's not an engineering manager position as engineering management includes people management responsibilities. However, moving into a lead developer position is a solid first step in engineering management.
Moving into a lead developer role is also a significant progression in the technical leadership track. It's an excellent way to get prepared to become a software architect, a staff engineer, or a principal engineer.
This role opens a lot of opportunities.
Become a Lead Developer?
If you want to become a lead developer, a critical aspect to consider is the shift of responsibilities.
A lead dev is responsible for the result of a team on a project. It's not anymore about your own technical excellence, or what you individually build or contribute to building. It's now about the success of the development team. Let's discuss the main areas to work on to be prepared to move to a lead developer position.
You can usually pretend to become a lead developer after a few years of experience as a developer or software engineer. These first years are critical to consolidate your technical skills and learn to be autonomous in your developments.
You start to have a solid sense of how to build things to answer the business needs, and you did it with success on several projects.
A useful exercise is to discover how to articulate larger pieces of software. You need to understand the technical decisions and the trade-offs regarding a given architecture. You can muscle your tech decision-making by reviewing existing projects and chatting with current tech leaders on how and why we build this way.
Be a role model
As for any leadership position, it's critical to embody the excellence and the behavior that your organization expects for developers.
If you lead a team of developers, you become their representative, and they deserve to be well represented. To become a lead developer, you need to become first a great developer.
A critical success factor is how the team collaborates.
Get interested in project management practices. How to prepare the work? How to slice the tasks? How to measure and communicate on the progress?
Get interested in each other skills. Who is comfortable doing what? What your teammates like or not like? What do they want to learn?
Any teamwork requires some upfront preparation and a proper animation to collaborate efficiently. Ask if you can contribute in a way or another in these aspects. Your tech lead or manager should be happy to delegate you some parts of it, and it will be an enjoyable exercise to train your leadership muscle.
Be a mentor
A lead developer contributes actively in helping her teammates to learn, to become better software engineers.
There are plenty of opportunities to strengthen your mentoring skills. You can improve by explaining an intricate part of the tech stack. You can also help to onboard a new developer on the team. You can mentor a junior developer or an intern.
The most important aspect is to have the proper attitude: be always willing to help. You can evaluate your progress by how often your teammates are coming to you to ask for your help or work with you.
The foundation of efficient teamwork is efficient communication. As a team, we need a shared understanding: why we do things, what's our mission, what our goals are.
Frictions, duplicate work, or a waste of effort often come from a few misunderstandings between team members. To mitigate this inherent challenge, you'll need to work on your communication skills.
You can improve by training yourself to be crystal clear when communicating. Listen carefully, ask genuine questions to ensure you understand correctly, re-phrase with your own words. Adapt your message to the audience's knowledge and domain of expertise.
Contribute to helping the team communicate well, document the significant changes, and amplify the essential pieces of information.
Last but not least, to move to a lead developer position, you will need to earn your teammates' and manager' trust.
We build trust by our actions and our behavior, by being consistent, by being reliable, by helping others.
A lot of small and concrete actions will contribute to building the strong grounds, the foundations of the team's trust. And if you want to become a lead developer, you can start making these actions right now.
- 📖 Since then, I wrote a small free guide for junior Engineering Managers