Our industry is infamous for confusing terms. Roles in software development are a good example. Titles like Architect, Tech Lead, Team Lead and Engineering Manager provide endless confusion. In this article, we’ll explore the definition of the Tech Lead role.
The Short: A Tech Lead is a software engineer responsible for leading a team and alignment of the technical direction.
The Long: A Tech Lead is a software engineer responsible for leading a team and alignment of the technical direction. Providing a strong technical direction involves establishing a technical vision, resolving technical disagreements and managing the technical quality of team deliverables. Effective technical leadership ensures the team uses appropriate engineering practices (such as CD or automated testing), invests in continual improvements to tooling or technical debt, and that the system evolves to meet its changing needs and environment.
Sometimes team leadership is shared but rarely technical leadership. A Tech Lead may co-lead a team with other roles like a Product Manager or Engineering Manager/Team Lead. Where a Product Manager focuses on the “What“, the Tech Lead focuses on the “How.” Where the Engineering Manager/Team Lead focuses on “People and Team Growth“, the Tech Lead focuses on “Technical Growth” of team members and the system. The unique focus for the Tech Lead is leading the technical direction and quality for the team. They may also have added responsibilities depending on the specific team.
In the above example, a team may have a Product Manager, an Engineering Manager and a Tech Lead. Leadership is shared between the three roles but each provides a different focus. In this situation, the Tech Lead focuses more on technical topics. They will be more involved in architecture discussions and decisions. They will observe and manage the quality of the codebase as it evolves and the technical growth of the team.
In the above example, a team may have only a Product Manager and a Tech Lead. In this situation, the Tech Lead inherits the Engineering Manager responsibilities. They additionally focus on people development (e.g. feedback or career conversations) and building a high performing team. This model works well with small teams or less complex systems. As a team grows in size or system grows in complexity, the Tech Lead has less time to focus on both areas. A Tech Lead in this context implicitly prioritises one focus area over another. From my personal experience, they usually prioritise technical topics to the detriment of people or team topics.
What holds true regardless of team composition is the Tech Lead’s technical leadership. An effective Tech Lead establishes a technical vision with the team. They work with the team to update and evolve it and turn it into reality. Tech Lead’s must keep involved with code to make informed decisions, identify technical risks and to maintain trust with developers. In my presentation, “The Geek’s Guide to Leading Teams“, I suggest an ideal minimum of 30% time with code.
Not just a team lead
Early in my career, I worked on a team that had both a Tech Lead and a Team Lead. The Team Lead didn’t have a strong architectural background. They would certainly write code, but they added value to the team in a different way. They focused very much on people development. The Team Lead had 1-to-1s with people focused on feedback and career development. They actively organised activities to build psychological safety and foster trust. The Team Lead would meet with stakeholders outside of the team keeping a good information flow, or to remove blockers.
Where the Team Lead focused on team issues, the Tech Lead focused on technical topics affecting more than one developer. The Tech Lead mediated technical debates. They participated in building solutions for performance optimisations. They lead discussions on decisions that might constrain or broaden future architectural choices. They, too, met with external stakeholders but focused on technical topics. They met with infrastructure people to understand network or hardware changes. They met with other Tech Leads to ensure our system fit in with the broader company ecosystem. They met with product people to ensure our architecture supported future work.
More hands-on than an Engineering Manager
Like a Tech Lead, our industry has no common definition for the Engineering Manager. You’ll find this title varies across companies and will vary even in the same company. Some Engineering Managers are like Tech Leads, but there are many who are very different. For example, many don’t write code day-to-day. Instead they focus on:
- Maintaining a productive working environment for development teams
- Acquiring appropriate budget for development to support business goals
- Representing the technology perspective on a management or board level
- Establishing and/or co-ordinating programmes of work (delivered through development)
- Recruiting and retention to meet team or IT headcount
An Engineering Manager may sit at a team level but they also sit at a team of teams level. Many Engineering Managers may not have a development background. They may, instead, have been a Project Manager, QA or other role still involved in software.
A good Architect looks like a Tech Lead
The Architect role ensures the overall application architecture fits the business context, both now and in the future. In some organisations, Architects work with the team to establish and validate the architectural vision. Architects also look at finding the right balance of standardisation. A suitable amount of standardisation supports productivity. Too much standardisation kills innovation.
Some organisations have the “Ivory Tower Architect” who swoops in to consult, standardise and document. They float from team-to-team, start new software projects, and rarely follow up to see the result of their initial architectural vision. This is not what a Tech Lead looks like.
An effective Architect looks like a good Tech Lead. They understand what their team goals are and establish an appropriate architectural vision. They work with the team to adjust this as the team learns more about the problem and technology chosen to solve it.
What are the core skills of a Tech Lead?
Although the scope of a Tech Lead varies, the required skills do not. A Tech Lead needs to build a set of balanced skills in the following areas:
- Development – A Tech Lead must have a background as a developer. They need to know how to write code and what good quality code looks like. They should be able to help their team with any technical challenges they have, even when they are not necessarily the expert.
- Architecture – Development is only one part of building a working system. Tech Leads must have a broader understanding of how software fits into the overall system. They need a good understanding about how software will be deployed, managed and operated in a production environment.
- Leadership – An effective Tech Lead needs to have strong leadership skills, even when they are not accountable for line management. Leadership skills like coaching, influencing and delegation are keys to success.
What’s a Tech Lead again?
A Tech Lead is a software engineer responsible for leading a team and alignment of the technical direction. They may co-lead a team with other roles like a Product Manager or a Team Lead or Engineering Manager. But the Tech Lead has a unique focus on the technical aspects, or the “How.” An effective Tech Lead blends strong leadership skills, architecture skills and development skills. They steer their team towards a common technical vision. They are accountable for the quality of the technical deliverables for the team.
If you want to know more the Tech Lead role:
- Get a copy of “Talking with Tech Leads“, a book sharing real life experiences from over 35 Tech Leads around the world via Leanpub or Amazon.
- Sign up for Level Up, a curated newsletter for leaders in tech.
- Register for a training course at the Tech Lead Academy to grow your technical leadership skills.