I was inspired to write a follow up to the recent Dear Agile question on the role of a tech lead. While I serve as a tech lead, I mention in that article that tech leads are often unnecessary and may hurt more than they help.
While it’s true that tech leads can sometimes be an agile anti-pattern as discussed in the article, they can also be useful on a project. In fact, my current position as a tech lead with one of Excella’s clients compels me to add a few points as to when we might be useful.
To serve our teams and projects, there are some things that tech leads – myself included – should strive for in order to make the role work well within an agile context.
Enable Self-Organization
Tech leads should always be attempting to work themselves out of their role. Any decision the tech lead makes should be as transparent as possible – preferably, a tech lead should be surfacing the opinions of the development team rather than making the decisions. The more authority the tech lead is able to delegate to their teams, the more service they’ll be able to provide to the overall mission.
Provide a buffer zone
In chaotic environments or stressful times, there can be a strong desire to micromanage a team. A tech lead can use their “authority” to surface the answers that stakeholders need while insulating the team from unproductive contact with those stakeholders. If a team knows they are trusted to complete the work, and is given the autonomy and space to complete that work, great things can happen.
Adding Value With a Wider Lens
Whereas developers may be writing quality code with some given objectives or stories in mind to complete, a technical lead may craft – or lead others to craft – pieces of code with a larger impact across the entire project. This wider lens enables the tech lead to have a large impact on the codebase and improve the productivity across the entire team. This might seem nebulous, so let me offer a few examples:
- A tech lead might be in a prime position to setup build, deployment, and quality pipelines, which have greater benefits the earlier they’re introduced
- Because of their background knowledge of their project’s framework technical stack, the technical lead may be in a position to help the team avoid worst practices[1].
- The tech lead can ensure that the tools, the tech stack, and the coding practices are best suited to deliver the requirements of the client.
- The tech lead can serve as an arbitrator and decision point for technical discussions, which can save time when developers reach an impasse on their differences between a certain concept or approach. This keeps things moving.
Resolving technical roadblocks
A tech lead is someone experienced in the languages, patterns, and practices of the project. This means that they are able to quickly resolve problems when a team is stumped. This keeps the project moving forward and helps the team learn as needed. A tech lead also tends to be connected to the project’s leadership on all sides, so they can get answers to questions quickly that might be blocking the team.
Maintaining the skills marketplace
Development is a field where we’re always learning. A tech lead’s job is to ensure that the team’s knowledge doesn’t stagnate. This means continuously keeping an eye out for skill gaps or differences and setting up a culture where developers are helping each other learn via mentoring, presentations, discussions, etc.
Ensuring software craftspersonship
Shipping quality code is crucial to a successful software project. A technical lead ensures that they have an understanding of code quality and its trending direction. This may mean a systematic process such as code quality reports, or it may take the form of more manual efforts such as code reviews and presentations. And as teams continuously improve, a tech lead can guide those efforts, highlighting areas of technical focus for the team. The best way a technical lead accomplishes these things is by creating a culture of quality where developers naturally work together to achieve these outcomes.
Serving as an Agile coach (when necessary)
Unfortunately, not all projects have an Agile coach – or even ScrumMasters – available (I wish! Especially if it’s one of our experts.) A technical lead for an Agile project is generally someone who’s also seen a few agile projects before, and knows some of the pitfalls. When a client or team is veering in the wrong direction, a technical lead may be able to recognize these issues and help course-correct before the project finds itself off track. To be clear, it’s always preferable to have designated people in these roles, so that the technical leader can focus on the technical excellence of the project and team.
Empowering the team
Software teams tend to work best when they are trusted, supported, and challenged to self-organize and produce quality software. There is a large degree of complexity around this. A technical lead can ensure that teams have the appropriate breathing room to allow this to happen, setting the state for conversations and creating the expectation that these things will occur. From that sense of empowerment, great things can happen.
Fostering leadership and exceptional careers
Many developers have a high capacity for – and a high demand for – growth in their knowledge and careers. A technical lead supports this to ensure that developers understand they are treated as growing professionals and not merely resources. A technical lead looks for where people are excelling and does their best to turn those into positions of ownership or leadership so that the team member can thrive within the project and their career.
While a technical lead may sometimes seem an odd addition to an Agile project, I hope I’ve convinced you of some of the value. A tech lead is not a role, but a team member who leads by example and serves the team to help them better deliver for their customer. When executed to the appropriate degree – something we’re always striving for – we aim to make the advantage of a tech lead obvious.
[1] I tend to stay away from a tech lead’s role as prescribing best practices, which can vary per project and can lead to over engineering. Instead, I see a tech lead as helping to avoid worst practices and pitfalls.