This essay is part of the series Essential Roles within Development Teams.
A tech lead is the modern day equivalent to the first mate aboard a sailing vessel. The role is best filled by someone with boots on the ground who is heavily engaged in day-to-day operations—a person with skin the game who directly feels the consequences of the abdication or neglect of the tech lead’s responsibilities.
A tech lead is focused on maintaining quality of implementation, translation between between stakeholder requirements (e.g. product) and technical requirements, tooling and support systems, integrity of deployed services (performance, stability, reliability), and other related matters like managing technical debt. There are certain areas where there is overlap between engineering managers and tech leads or between product managers and tech leads and in these areas collaboration is essential. Examples of these areas including onboarding support and project planning.
The tech lead is not a level on a career ladder. It is a set of responsibilities that any engineer can take on once they reach a senior level. Good candidates for the role of tech lead have more than just technical skills. They are good communicators. They can give presentations, support onboarding new team members, and can write clear documents. They can talk to people in different teams and in different roles. They are good at prioritization, eager to push work forward and make decisions, and willing to step in to contribute directly to help push tasks over the finish line. A common challenge for tech leads is learning how to balance their own technical commitments with the work that is needed for the whole team needs to be successful.
Responsibilities
Here are some of the typical day-to-day responsibilities owned by tech leads.
Project planning
While a tech lead isn’t entirely responsible for project management they contribute significantly to project planning by working with managers, UX designers, and product leadership to scope and refine technical requirements, develop milestones, decompose milestones into tasks with specific deliverables, estimate costs, assign out work, and opportunistically look for ways to pay down technical debt in the course of delivering on immediate needs. In a nutshell, a tech lead ensures that user stories from a product manager are translated into tasks with explicit technical requirements, clear acceptance criteria, and the technical context necessary for other developers on the team to begin the work. If the team’s tech lead isn’t crafting these tickets then they will ensure that this work of pre-planning is delegated to someone (i.e. a feature can have its own “tech lead”). The tech lead encourages and facilitates the following:
Work is scoped appropriately and larger tasks adequately broken down.
All work is tracked - especially tasks that are frequently unaccounted for such as technical investigations (spikes), documentation efforts, and technical debt.
Overall standards for crafting work tickets is maintained.
Design documents are written as needed to de-risk large or complex projects.
With adequate support and feedback even less experienced tech leads can do all of the above without micromanaging or creating unnecessary work that feels like “process for process-sake”.
Code quality, documentation, and technical debt
While this is a shared responsibility between the tech lead and the engineering manager, the lead lead has an important role to play and is the first line of defense. A tech lead ensures that the work required to maintain code quality in the code base is getting done and accounted for during planning and within cost estimates. This includes maintaining adequate documentation; instrumenting projects with formatting and pre-commit tooling; overseeing naming conventions and the evolution of shared terminology; deprecation and removal of outdated code; ensuring adequate architectural guardrails are in place; ensuring adequate test coverage and a comprehensive and cohesive test strategy; managing (and minimizing) dependencies while prioritizing urgent upgrades; promoting security best practices; and generally encouraging the team members to follow whatever standards are in place at an organization level (e.g. API versioning guidelines).
Neglecting code quality contributes to the accumulation of technical debt which is the responsibility of the tech lead to manage (see Technical Debt Management).
Observability and overall system integrity
Even if your project planning, architecture, and code quality are flawless, things will go wrong. The tech lead is responsible for ensuring that members of the team have the tools they need to monitor the health of the systems they work on as well as diagnose and address issues rapidly. Applications should be instrumented with monitoring to collect logs, metrics, errors, and traces. A tech lead ensures that team members know how to access this data and leverage it effectively, making improvements to the teams monitoring strategy as needed to minimize alert fatigue and maximize signal-to-noise. If a team has an SLA with its customers, the tech lead is responsible for translating that SLA into metrics (SLIs) that can be monitored to track performance against internal objectives (SLOs). They are also responsible for ensuring monitors which are escalated are well curated and actionable e.g. have an associated runbook.
When things do go wrong, it’s the tech lead’s responsibility to notice and prioritize remediation. When application performance or stability degrade, if a test suite is flakey, if builds on the main branch are frequently failing, it’s the tech lead’s responsibility to address the issue or delegate to someone else.
Ownership and accountability
Taking on the tech lead role is a significant commitment and responsibility for a single individual. While it isn’t necessarily a long-term position, it does requires a high level of dedication to a particular team and is not suitable for someone who is only with a team part-time.
Ownership does not imply that the individual who is responsible for something is providing solutions and making improvements directly. As an owner, one is accountable for the health and quality of some area, which means identifying and prioritizing issues, identifying subject matter experts (SME) and delegating to them, consulting with SMEs as needed, contributing directly whenever necessary, and communicating up to request additional resources as is needed. A tech lead ensures the areas they are responsible for are stable or trending in a positive direction.
Single individual as tech lead
This should be the default case. There is a single individual who owns all of the tech responsibilities who is an individual contributor (IC) on the team and not a manager. The tech lead is often not the most senior IC on the team; however, a tech lead is at least at the senior engineering level or higher. There are, in fact, some compelling reasons why it might be favorable to have a less senior engineer with sufficient experience on the team own the tech lead role: it’s a growth and learning opportunity for the less experienced engineer and it frees up more senior engineers to engage in mentorship, technical advising, and other cross-organizational efforts.
Multiple tech leads
In this scenario, responsibilities of the tech lead are assigned to multiple ICs on the team. This can look like specific responsibilities for specific individuals with no overlap or responsibilities shared between multiple individuals with some or complete overlap. This setup is most common when a team maintains multiple products where each is assigned a distinct lead. The primary failure modes in this scenario is that you develop siloes within the team with low bus factor and each project progresses slowly due to dispersion of resources.
Manager as tech lead
While all engineering managers should have direct personal experience with the tech lead role and be intimately familiar with its responsibilities, in the vast majority of cases they are ineffective in the role because they are too far removed from the work being done. They simply do not have the information they need to know if they are doing the job well. The longer a person has been in a management role the more likely it is for this to be true.
In some cases, a manager may have been recently transitioned into their role from a contributor role. Very rarely, managers have made personal commitments to remain effective as contributors. In these cases, it’s possible that an engineering manager can fulfill some or all of the tech lead responsibilities. While an engineering manager can always assist the tech lead on a team, having the tech lead responsibilities be owned by a manager should be avoided in the long term. This setup is particularly harmful to teams that lack more senior engineers.
No explicit tech lead
There is often a belief that the engineering manager is filling the role of tech lead when this is generally not feasible as previously discussed. This is sadly the most common occurrence and one of the most obvious and avoidable reasons for a team’s underperformance. In other cases, there is simply a lack of awareness of the critical nature of the responsibilities of the tech lead role and/or a lack of self-awareness around the complexity of a project being assigned to a team. In these cases, organizations naively perceive an explicit tech lead as unnecessary.
Staff+ contributors can aspire to fill the role of tech lead as needed on whatever team they are currently embedded within. As a staff+ engineer you can always be embodying the spirit of a tech lead and showing up in this capacity as is helpful. While this isn’t as explicit or generally as effective as having a specific set of people on the team fill the tech lead role, it does provide some degree of coverage and should be a more commonplace expectation.