One day you are sitting on your chair, coding as usual, writing unit tests (right?), piece of paper at your side with a sketch of what will supposedly be the next rocking feature of your company's product. Everything is fine, life is going pretty well 💯.
A minute later, you have a 1-on-1 with your manager and she tells you that you were selected to be the team's Technical Leader! So exciting 😮 New role, new challenges... and new responsibilities, of course.
You may have some doubts about the position, though, and it's completely understandable. After all, it won't be just coding, designing, and bugfixing on a daily basis. From now on, you will be accountable for the technical health of all of your team's code and the technical skills of the people in it. This is something new for any developer.
But fear not! The road is full of enjoyment and learning. It will push you out of your comfort zone and improve your skills (yay! 💪). I faced this situation twice (maybe three times...):
- The first time, in a small telecommunication start-up with roughly 50 people (7-8 developers). As it usually happens in this type of company, I was not only the tech lead, but also the functional analyst, and the main developer. I was in charge of a whole solution and a team of 4. Surely was a roller coaster.
- Second time, in my current job. A much bigger company (~800 employees) with around 200 developers and more than 20 teams. I started as a developer and became a tech lead a year after, due to my team's growth.
- We can say there was a third time, when my manager asked me to become the tech lead of a second team.
Of course, everything to be said about the role won't fit in a blog post. Nevertheless, I'll try to write down my two cents on some important topics, in no particular order.
Communication
Everyone says that soft skills are important in this role. And guess what? They are absolutely right 🙇.
As a software developer, you should of course communicate with your team, mostly with other developers, your tech lead and your manager. But as a tech lead, you will find yourself communicating with people in many different roles and teams: managers, QAs, functional analysts, other tech leads, business stakeholders, upper management, and so on.
Now, it's not enough to know how to write or speak properly. Take into account that you'll reach different roles and teams (inside and outside engineering), thus, you will need to prepare information accordingly. For example, you will not be speaking of technical debt at the same level with other developers than with upper management or other business stakeholders. For the former, you may talk about undesired dependencies between different modules and a lack of a proper interface for some of them. For the latter, you may talk about how improving the code architecture could help adding features quicker in the future.
You will have different audiences and you will need to align your message based on that.
Become the technical face of your team
You will be accountable for every technical decision you and your team make. It might not be entirely your responsibility (you may not be the one who decides to go this or that way in a specific feature design, because you might have autonomous developers on your team) but you'll need to be aware. You may find yourself talking about these decisions in a meeting later.
There will be more meetings (as people will need a tech person from the team) and more questions to answer. Again, this is not entirely your responsibility ⇒ you may not be the one who answers every question, but you should take care of that and make sure the question gets answered, whether you do it yourself or route it to the proper person. As a leader, you will know about the ownership of each developer on the team, so you’ll be able to route the question accordingly.
Reliable source of information for your team
In this position, you will have more context. Either through meetings, your manager, or random discussions, you will have more knowledge about the business and the roadmap of the company.
That also gives you the responsibility to transmit this information to the team. That way, your team will be aware of why we are doing certain things. What's this feature for? Why did we put a high priority on this refactor? Why...? will be pretty common questions, and you should have the information to answer them. Your team will trust you.
This information also gives you a way to prioritize certain technical debt. That is, if you are facing a specific feature next quarter, you may choose to pick a proper refactor from the tech debt backlog which will help develop that feature quickly.
As I usually say to other tech leads, you don't have to know everything. Don't be afraid to say 'I don't know'. Be honest to the team and yourself. In the meantime, you should be able to look for those answers.
Technical debt stakeholder
Now, you are the main stakeholder of the technical debt of your team. You need to create a plan to track it, control it, and tackle it.
Check out some useful tools in your company. Make a list. Prioritize. Put some effort into making everyone understand the importance of reducing it.
Work with your team on a way to reduce it on a daily basis. It will be hard, but don't worry 🙂.
Also, be clear about it. Don't hide it. Try not having hidden debt. The more you know, the better you will prioritize, and you'll be able to come up with a better strategy.
Self-awareness
One of the key tasks in this role is to build trust.
First, build trust with your teammates. A proper flow of communication and decision-making will be crucial.
Then, build trust with tech leads and managers from other teams. There will be times when they will reach out for help or the other way around. Trust will help things run smoothly.
But mainly, build trust on yourself. That's self-awareness. Be decisive. Be the best version of yourself. Be hard-working and smart-working (as much as you can at least). Demonstrate yourself that you can do this. You will find yourself actually growing, and, when you realize that, it's an amazing feeling.
One last thought...
Becoming a technical leader sure is a challenging task. You will soon realize the impact you can generate on the team and the company. It's gonna be hard, it's gonna be fun. Take the step!
In the end, you may figure out how to put all the knowledge and experiences you faced in this role on a blog... and finding that it's really, really difficult to cover everything. So you just make a list of only 5 points hoping it helps anyone (and hoping to write more about it in the future!)
Happy leadership! 😊