In the middle of 2019, there was an opening at my job for a Development Manager position. Rather than take the role as described, I made a request to change my role to Technical Lead instead. I explained what I felt that meant (as my company had never had someone with that title before) and discussed it with our CTO. I felt that our organisation needed someone who had a responsibility to building a strong technical team, and to ensure that our day to day practice was as good as it could be. And I wanted to take more responsibility for that kind of thing. I felt that the Development Manager position was also important; someone responsible for the department and how it interacts with the rest of the company at a high level. I just didn’t want that to be my job!
Very luckily for me, there was someone else in the company who felt the same way but approached it from the departmental side. In the end, the role was split in two and I entered my current role as R&D Technical Lead. This was great! I had been allowed to take a position which let me make the changes I felt were important for the Development team. The company felt it was valuable and let me try.
There were two problems though. First of all, I was stuck on a big project which needed to be finished, but that was a legacy code nightmare. It took up almost my entire year to get through it, leaving very little time to think about other things. And secondly, I had no idea what I was doing. I’ve not been a Tech Lead before, and as a Developer, I’m still on the younger side. My experience is in developing for and maintaining a large legacy codebase in C++, and leading projects within that framework. This was a whole new ball game. I had a lot to learn.
Fast forward to now, January 2020.
I have a lot to learn.
As I mentioned, that big project took up most of my year. No time to work on this role directly. But! That project has ended and I’m now in a position to think about what being a Tech Lead means to me and start my journey to be as good at it as I can be. So I thought I’d try to share as much of that as I can with you all, because learning together will be more fun than sprinting into the darkness alone!
What is a Tech Lead (to me)?
Early last year, I made the decision that I wanted to try to be considered a Technical Lead by the end of 2024. As part of that, I had to put a lot of thought and research into what people consider this role to be. There’s a lot of scope to move around in the Software Development industry and the structure and criteria of a job role are entirely defined within the context of the organisation that it’s a part of. This leads to an interesting issue where lots of positions with equivalent responsibilities have different names. This can make it tough to figure out what it is you’re trying to achieve, and also makes the conclusion you come to somewhat of a personal opinion.
For me, I think a Technical Lead can be described as the following:
“A Tech Lead is a Software Developer who is responsible for ensuring the quality of the technical output of their team is as high as it can be.”
There are a lot of things hidden inside that definition for me, and it’s still evolving as I learn more. So let’s break down that sentence.
“A Tech Lead is a Software Developer…”
This is very important to me! A Technical Lead to me is someone who is actively involved in developing solutions. Writing code and designing software. This is the day to day work of the team. If you aren’t aware of what that’s like, then you can’t be sure that it’s being done in a way that can create the best experience and best output, because you won’t know what the practicalities of creating that output are.
One of the reasons this role appeals to me over Development Management, or even CTO type roles currently, is that it stays close to what I enjoy; writing code. I don’t have to make excuses to justify that work. It’s core a part of the role.
“…responsible for ensuring the quality of the technical output…”
To me, this is where all the ambiguity lies. But it’s also where all the hidden gems are!
Ensuring the quality of technical output means so much to me. If you’re experiencing the development process on a day to day basis (as I believe you should be as a tech lead) then you’ll be able to experience things that slow you and the rest of the team down. Technical things in your solution is the most obvious thing to a developer. Framework improvements, refactoring, or architectural clarification. These are great and useful things to do that improve the technical output of the team by making the code that you should be writing clearer. And as a senior technical staff member, I’d be lying if I said the coolest bit wasn’t being a part of designing and implementing the code that the organisation needs. But these may not always be your pain points! This is about the quality of the team’s output, and the team doesn’t just throw out code into a void. It works as part of a larger organisation, or at least as part of a larger purpose, which means interacting with other functions to deliver what they need. You can write a bunch of fancy code, but if it doesn’t do what your stakeholders need because there was a breakdown in communication then it’s not very useful!
So to ensure the quality of the output of the team, you may need to look at your processes and find what’s slowing you down. Does it take too long to log and work on issues? That’s going to lead to less detailed issue reporting, which leads to more opportunities to get the work wrong. But as a Tech Lead you have the opportunity to deal with this.
Yet another way to ensure quality is about the people in the team. The best work comes from people who are comfortable and content. Not every member has to be a super passionate, high performing power house. That’s not realistic (and often not a healthy dynamic!). But to ensure the quality of your team’s output, you need to be ensuring that they’re growing, and in a position where they aren’t worrying about job security, or being made to feel unsupported or unwelcome. These things also come in the realm of your care as a Tech Lead, because they’re things that can drop the quality of your team’s output. Which is great! Because you should care about that kind of thing at every level, but as a Tech Lead you have the ability to try to do something about it.
Finally, a Tech Lead is responsible for all of that. If you’ve truly been given a responsibility, then that means you should also have the tools to be able to fulfil that responsibility. That’s great! It means that, hopefully, your organisation has given you permission (within reason!) to be able to make changes for the better. To spend your time on things that you believe will generally lead to a better working environment. That’s pretty cool!
“…of their team…”
This is the final part of that definition that I’d like to mention in more detail. A Tech Lead is the leader of a team. This means doing your best to exhibit leadership skills. Setting boundaries (to allow others to do the same), leading by example, and often times it can mean managing people. This is often the part that fills people who come from a purely technical background with the most trepidation. People are complicated. They’re unique, and messy, and interesting. And depending on what other roles exist in an organisation, it may be up to a Tech Lead to be responsible for creating an environment where those people can be their best selves. Even if there’s a dedicated manager or Team Lead to go alongside the Technical Lead role, there will always be a component of leading the individuals and building a team that’s conducive to the work you need to do. And in my opinion they should be one of the major considerations in driving your decisions.
As you can see, a Tech Lead can be responsible for a lot of things. Which means learning a lot of skills in order to be able to do it well. I had intended to add the skills that I think I’d like to prioritise in my journey to be a strong technical leader, but I think this blog post is already a bit long! So I’ll leave that for another time. I’m sure you can see how amorphous it is as well. It depends on the needs of the organisation, your personal aspirations and temperament and the skills of your team. But it’s a great opportunity to build things that are interesting and a joy to work in; software and teams!
What resources have I started using?
As part of this journey, I started doing research on what people consider the role to be. Some of the following have been useful to me. Hopefully they’ll be useful to you too.
Pat Kua’s Blog – Definition of a Tech Lead – In the first developer conference I went to I saw a talk by Pat Kua which lead me onto his blog. He’s made it a focal point of his career to describe and empower the Tech Lead role. I highly recommend his blog and talks if it’s something you’re interested in!
The Lead Developer Conference – The Lead Developer Youtube – One of the conferences that I’d love to attend is The Lead Developer in London. This conference is specifically aimed at technical leaders, new, old, and aspiring to help them build high functional and content teams. All their talks are provided free on their youtube and I can recommend them!
Where do I go from here?
Finally, I thought I’d go through what my first steps on this journey are going to be. Personally, I’ve found an affinity for leading teams. It’s something I’ve had a lot of practice in, and building teams is something I enjoy doing. But as I said, a Technical Lead is a Software Developer first. And with only 6 years of professional experience, the technical aspects of the role or something I personally feel I want to be more confident in.
I have been developing in a C++ application for most of that career, but more recently I’m designing a system that will mostly be written in C#. As such, I’d like to really get C# knowledge under my belt.
C# Certification – MCSD 70-483 Exam – I’ll be starting the year by getting the Microsoft C# Certification as a way to guide my learning, and as something that I can use to prove that skill exists.
Attend conferences – I have been lucky enough to go to a few conferences during my career and each one was a pretty amazing experience. I was too nervous to talk to anyone else, but I feel like they’re a huge opportunity to learn, and inspire learning. So I’d like to attend at least one more conference this year.
Write Blog Posts – There is so much to know in tech (and in the world at large) and I’m always terrified my sieve like brain is going to forget all those amazing pieces of information that the studying, reading, practice, and discussing can give you. So to do something about that, I want to try to do more technical writing and personal ruminating.
So that’s where I’m starting. And that’s what I’m shooting for. I hope you’ve enjoyed joining me as I gather my thoughts on this. I’d love to hear your thoughts, experiences, and aspirations!
Comment below, feel free to share the article, or get in contact with me.