There is a never-ending debate around whether or not managers must have technical skills. That debate won't end today. But hopefully, we can shed some light on a role that perfectly embodies why this debate isn't going anywhere: the humble tech lead.
The perfect tech lead looks like an employee with the middle name "collaboration," whose communication skills rival upper management all while feeling at home co-leading on projects with a team lead or engineering manager.
To straddle the divide between technical skills and management skills might sound complicated. Thankfully, when the roles and responsibilities of the tech lead are clearly defined, success in the position is not hard to come by.
Let's dive in.
What Is a Tech Lead?
Generally speaking, a tech lead is someone who's expected to provide technical leadership for a singular software team.
That begs the question: what does it mean to provide technical leadership? Well, for starters, a tech lead is likely to be the first person other teams go to with technical questions about their team's work. For instance, if a software engineer has a question about how an API change will affect another team's software flow, their first ask would be the tech lead. Or, if a project manager wanted to know if implementing a feature carried challenges, the tech lead would be the first person they'd ask.
You might think of a tech lead as a hybrid between an individual contributor and an architect.
How Is a Tech Lead Different From a Team Lead?
A lot of ink has been spilled on the differences between a tech lead and a team lead. Some of it is semantic, but not all of it.
The quick and dirty is that while a team lead focuses on personnel decisions, like thinking about what team members are going on vacation or whether someone is overburdened, a tech lead's primary focus is on technical topics.
That might mean software libraries, or it might mean asking whether the team has enough hardware to scale.
What Are a Technical Lead's Responsibilities?
When talking about a tech lead's responsibilities, one key thing to keep in mind is to remember that it's a collaborative role. So, when we say things like a tech lead should provide guidance in technical architecture, that means they work with team members to determine the best architecture to solve a problem.
It doesn't mean that a tech lead should hide in a dark closet for three days to outline architecture, then present it to the team and fight against modifications. They should help guide the team through technical decisions, not silo themselves and dictate solutions.
Again, remember that collaboration should be the objective when reading the following responsibilities.
Ensure Code Quality
There's an ongoing debate on whether or not a tech lead should personally be coding (more on that in a bit), but they absolutely should be observing and managing the quality of the codebase.
Their close proximity with developers will allow them to make informed decisions on legacy code or software quality issues.
Improving software quality could mean taking a look at leading indicators, such as PR size, refactor ratio, and rework ratio, which can impact your software delivery pipeline.
Make Architectural Decisions
A good tech lead must understand how the software will be deployed, how to choose the right framework, which tools are required for product development, and how to work in concert with an engineering manager or product manager.
They must also have the communication skills to lead these discussions and the awareness to involve fellow tech leads to ensure product strategy is supported by current architectural decisions.
Manage Technical Debt
According to some estimates, tech debt will cost businesses $5 trillion in the next 10 years. That's a big number. A tech lead should limit the number of developer frameworks to combat this. This goes back to architectural decisions. Too many frameworks will increase tech debt.
Another issue we discussed also makes a return: code quality. There is no surer way to bury yourself in tech debt than to sacrifice the long-term stability of the codebase for what is expedient now.
Managing metrics like rework, refactoring, and PRs merged without review can give a tech lead a solid overview of the potential tech debt. A good tech lead will understand that too often, short-sighted business decisions impair organizational health in the long run.
Sending the elevator back down is a critical component of a tech lead's duties. As you are now on the path to management, it is your job to mentor junior developers on the team.
This will also include self-education by attending meet-ups and maintaining collaboration with other technical leaders and stakeholders, ensuring choices localized to a particular team fit within the broader company ecosystem.
Heard of Interact? It is a free community-driven conference for engineering team leads, managers, VPs, and CTOs looking to improve themselves and their teams.
Should a Tech Lead Code?
Opinions differ. Some will tell you that tech leads should spend at least 30% of their time writing code. Others will tell you that tech lead should be a role that focuses primarily on coding. Still, others will say that tech leads shouldn't code at all.
In my personal experience, it's difficult to be both an effective coder while also serving as a tech lead for a productive team. A productive team means that the tech lead will need to spend a lot of time collaborating with engineers on their own team and other teams and answering questions from both outside and within the team.
At the end of the day, the most important factor in this equation is that your tech lead does not become a bottleneck for their own team. But if they want to get their hands dirty and lead from the front every now and then, helping out junior devs with low-priority projects is a nice morale boost.
Hiring a Tech Lead?
If you think your team needs a good tech lead, there are a few things you can look for to find one. This applies whether you're looking to hire one from outside the company or promote from within. A background in coding is a must. However, in their day-to-day capacity, a tech lead will employ soft skills like communication and collaboration more often than a hard skill like coding.
You often hear this duality conveyed when describing the ideal tech lead. If you're hiring from within your organization, should you expect your best coder to be the ideal tech lead? Likely, no. Conversely, a candidate for tech lead with a purely managerial background - no matter how awesome - won't have the technical chops to make informed decisions around things like architecture or the codebase.
Instead, you're looking for someone who:
- Is good at delegation, i.e. a people manager.
- Has a strong technical design background.
- Has enough experience in the technical world to understand the tradeoffs to technical design decisions.
- Is a good communicator. They should be able to break down complicated topics into easy-to-understand explanations
- Forms strong interpersonal bonds with the people on their software team.
- Has a balance between leadership skills and technical skills.
A tech lead is closer to management than an individual contributor. So, you want to look for someone who shows strong signals for good management work. Much like any other management, don't expect the perfect candidate to fall in your lap. Just like any other role, you'll need to grow your tech lead's competence over time.
If you're head of engineering and want to measure how your tech leads manage code quality and tech debt, use LinearB to track review depth, rework ratio, and change failure rate metrics. And coach your tech leads to get their team using WorkerB notifications for high-risk work or PRs merged without review to improve these metrics.