Software development teams naturally have leaders. I see two types of leaders: team leads and technical leads.

Team leads care about projects, tasks, velocity and related things and usually have titles like Team Lead, Project Manager or Technical Project Manager. They can be programmers and know how to code, but their main focus is planning projects and organizing processes.

Today I want to talk about technical leads. You’ll probably call them Engineering Lead or Lead Engineer. Their role is not always clear, sometime they can lead a team and participate in the project management activities, but keep the focus on coding and delivering products. Sometimes they can have a specialization on some specific area or domain, like Lead Back-end Engineer or similar. But they have something in common.

Recently I’ve been asked by a coworker who wants to move to the technical leadership - “what do I need to improve”? I wasn’t ready to answer, because I didn’t have a clear picture what technical leaders do, precisely :) I started to think and reflect more and I think I have pretty good understanding now.

Software engineers have clear goals: making individual contributions and delivering products/features.

Technical leaders care about opposite: empowering a team, making sure a team uses best practices like pair programming or writes good tests, invests into documentation and tooling, cares a lot about reliable architecture and clear codebase, you name it. Goal of a technical lead is to make sure that everyone in a team contributes as much as they can and constantly push efficiency and quality of work for the whole team forward.

Again, it’s not about being “the guy”, it’s about thinking of team contributions more than yours.