The role title Technical Lead is one I see often, especially at bigger companies. And during my career, I have been fortunate enough to have held the title (or similar titles) on a number of occasions.
But what exactly is a Technical Lead? In fact, what even is Technical Leadership?
There are probably many definitions that can be found on the Internet, but for me it is about taking ownership and responsibility for the technical direction of a software application(s). This is not the same thing as managing the software team, or managing the software project. These roles already have clearly defined titles and responsibilities i.e. Software Manager and Project Manager.
So where does a Technical Lead fit into the equation? While the Technical Architect will make the decisions that define the overall approach to the application at a high level, the Technical Lead will take ownership and responsibility for how that architecture is implemented by the software team.
That means taking responsibility for the code quality that is produced by the software team. Defining the coding standards, adherence to best practice, mentoring other team members, ensuring the team clearly understands what is being produced and why. A Technical Lead, like any other type of leadership role, should display good leadership qualities. They don’t necessarily need to have all the answers, but they should be able to make the decisions (with the concensus of the software team if necessary) and own them.
I have worked in several software teams where the culture was more akin to a dictatorship than a democracy. But a good Technical Lead will make everyone in the team feel valued and empowered. This is the essence of good leadership. To be someone who others want to follow.
So what are the traits of a good Technical Lead? Here are the qualities that I think can be attributed to someone who makes a good Technical Leader.
- A T-shaped developer. This is a term that defines someone who has both deep knowledge of the technologies that are used by the software team, as well as good breadth of knowledge across other domains e.g. design, networking, architecture etc. For example, someone who has a deep understanding of building applications using the .NET Framework, but also good knowledge across other domains.
- Commercially focussed. Although it’s important for a Technical Lead to have deep and broad technical prowess, they should also have a focus on the business outcomes and shape the application accordingly. You don’t want to focus so deelpy on the technologies that you forget about the business objectives and corporate realities that the application should achieve.
- A great communicator. This is so important, because translating complex problems is no easy feat, even if the audience is a technical one. This is even more so if the audience is a non-technical one. Everyone on a software team needs to have a single, united and shared vision of what they are building. There can be no room for ambiguities in comprehension. A good communicator should have the necessary skill to translate this technical vision to the rest of the team and the surrounding business.
- A good problem solver. Often, there will be problems or difficulties faced by a software team. While it is not necessary that the Technical Lead will or should have all the answers (this is simply unrealistic), they should at least be able to explain the problem in terms that the team all understand, and mediate between the proposed solutions. They should also be able to make the decision as to which solution will ultimately find its way into the application and take ownership.
- Always learning. Just because you’re a Technical Lead doesn’t mean you know everything. Of course not. It means you want to continually progress and improve your skills and knowledge, and want to keep learning. Like anyone who builds software applications, we are all a work-in-progress. A Technical Lead is no exception. And this also sets a good example to everyone else. Realising this simple truth also keeps you humble. No-one wants to work with a know-it-all (I’ve worked with far too many of those).
- Advocate for change. Good leadership is knowing when to change the course of the ship. And to do that, you need to have everyone on board. You cannot change the course of the ship single-handedly or by fiat. As mentioned earlier, good leadership is about people wanting to follow you. If you can win the hearts and minds of everyone involved, then you can change the course of the ship as a collective. And that’s always the best outcome.
I hope this article has explained what is meant by Technical Leadership, and what qualities it takes to become one. Having good technical knowledge on its own is not enough. You need to have other qualities too as descibed in this article.
Keep learning, stay humble, and always listen to others.