Nothing we do will fully prepare us to become a tech lead. It is a role with completely new expectations and skill requirements.
As a tech lead, responsibilities rise beyond writing code or designing software. Being a tech lead involves taking care of an entire team to make it rise beyond its own expectations. This includes both technical and non-technical team members.
Keep in mind that being a tech lead does not always involve having the title. Most people I know that are filling the role of a tech lead do not have the title.
“If you do what you’ve always done, you’ll get what you’ve always gotten.”
If you’re reading this, you were either forced by me to do it, or you are looking for ways to be a better and more effective tech lead. Either way, you should continue reading as I promise you’ll go away from this with at least one more bit of knowledge than previously.
The following lessons were born out of my own mistakes, and a few colleagues who survived to tell their story.
If we thought to be a software engineer was hard, wait until we take on being a tech lead. Everyone can be a tech lead when their whole team is enjoying what they do and doing great things. As soon as a deadline appears, or tech debt starts to rise, it starts to stink pretty badly.
The difficulty of being a tech lead is two-fold. We get to deal with the complexity of team members working together, as well as the difficulty of designing performant and scalable software architectures.
Being a tech lead means that we will have to accept that perfection does not exist. We will need to learn to accept failure and realize when something is “good enough”. It’s inevitable when attempting to solve tough problems.
“If things seem under control, you are just not going fast enough.”
Be critical, but don’t kill yourself trying to reach for perfection on every single thing we do. There’s a reason why Olympic athletes focus on one single sport. If athletes tried to be great at all sports, these athletes would suck at all sports.
Be nice to yourself, but never stop trying to get better.
A common mistake new tech leads make is to unintentionally become just another person that says “no” to everything.
If any of the following statements are true, this can indicate that someone is doing a poor job at empowering team members.
The tech lead must:
Every one of the points above is a situation we must avoid as they can be the culprit of a low team’s productivity.
“When you treat people like children, you get children’s work. Yet that’s exactly how a lot of companies and managers treat their employees. Employees need to ask permission before they can do anything. They need to get approval for every tiny expenditure. It’s surprising they don’t have to get a hall pass to go take a shit.” —Rework
Great tech leads empower every team member so that the rest of the team is making decisions that the tech lead understands and respects.
As a software engineer, I understand it is a ton of fun to solve the hard technical problems. solve. We research different ways to solve the problem, seek the most simple solution and celebrate a victory when we want that red, failing test going green.
As a tech lead, we cannot take on all the coding tasks, and cannot take on all the hard or interesting problems, regardless of our experience. We generally have a ton of responsibilities that require attention and time. If we only focus on one thing at a time, our other responsibilities will die a painful death.
We have many more responsibilities that need time and attention, and if we are focused solely on a single task, those other responsibilities will fail to be fulfilled.
When we take on the difficult problems, it also allows for other engineers in the team to stop growing and problem-solving. This will most likely lead to team members who are frustrated and will cause everyone to find someone else with which to work.
Avoid being the bottleneck when problem-solving. A tech lead’s experience and knowledge are important, but not absolutely necessary. Find a way to delegate but still be part of the conversation.
As engineers and tech leads build trust, tech leads can be less involved and slowly but surely start delegating full activities so that we can focus on more important tasks.
Software engineers usually rise to the position of tech lead because their engineering skills were recognized, being able to output tons of high-quality code with surprisingly high speed. However, when promoted to a tech lead role, it is no longer our responsibility to output the same amount of high-quality code, but rather to help to multiply ourselves by making everyone else just as productive as we used to be.
If we stop to write code, we will stop having the ability to teach others how to be as productive as we used to be. Don’t code all the time, but don’t stop completely.
The role is called “tech lead” for a reason, and it is essential that we find some time to spend in the codebase. Staying involved helps to keep respect from the rest of the team. It also helps to guide in better decision-making as our knowledge will stay minty fresh regarding the current shape of the application’s architecture.
Avoiding to spend time coding will most likely end up in us not understanding what it truly means to implement or maintain any part of the application. This is a true recipe for disaster. Bad decisions will destroy our trust with other engineers, increase the time that it will take to deploy new features, and lead to low morale across the team.
It is absolutely essential that we make coding a priority at least some of the time. This is fairly difficult, but there are many ways to make time for coding.
Some tech leads will block out time in their calendar to ensure that there is always time during the week to write or review code with the other developers. Others will review commit logs, and provide feedback to developers – similar to a loose pair-programming style. Any approach is fine.
It is suggested tech leads follow the thirty percent rule: Continue to code at least thirty percent of the time. That thirty percent is roughly 2.5 hours of happy quality coding time. How great!
Great tech leads know that they should not be measured with how many coding tasks they complete. They should be measured by the productivity of their full engineering team.
Every action that a tech lead takes to make their team better is a step in the right direction. Take time to sit with each team member to understand where they come from, their interests, their strengths, and what motivates them.
Doing this will increase the overall productivity of the team as it will be easier to see how everyone fits together
Connect other engineers with opportunities for them to grow.
Allow team members to take risks so that continued learning and growing is possible. Allow team members opportunities to contribute to the team. Encourage the sharing of information across the team.
One-on-one meetings are crucial for the success of a tech lead.
The traditional one-on-one meeting consists of us and our team member, seated opposite each other, in a small meeting room. Boring!
Try something different. Try going for a walk, getting coffee, going for lunch or dinner, or even playing a game!
It’s extremely difficult to be a good tech lead if we don’t understand the mental state, priorities, and concerns of everyone on our teams. Very few people will have the same mental state or priorities. Having time for one-on-ones is a must in order to keep the team productive and united.
Being an incredible tech leads involves having amazing relationships with everyone in the company. All the way from Product Managers, Sales, Marketing, etc. To communicate with other departments we have to speak in a way that is much different than the way we would communicate with other engineers. It’s something we have to keep in mind constantly. Speaking with a high level of technicality will confuse most people.
Great tech leads find relatable ways for non-technical people to understand technical topics. The best way to do this is to think about things that non-technical people utilize and find varied ways to explain tasks in terms that are more relatable.
To see how good we’ve gotten at explaining technical topics, it is a good exercise to practice with friends and family. Use every tool available, including whiteboard sessions, drawing things, metaphors, and everything else that comes to mind.
It is also a good idea to encourage our engineering team members to communicate in the same way. By doing this, the rest of the company will have a better understanding of everything and increase empathy with the team.
Engineers who can speak about projects in ways that are understandable by everyone often achieve great success. It is not helpful if we know how to solve the toughest problems but have no clue on how to communicate that to others.
The absolute best tech leads try to set the example in communication with the business. We strive to bring other engineers long to some meetings and ensure that each team member is in sync with the rest of the business.
There are several things that change when going from a software engineer to a tech lead. Amongst those things, one of the most important is our zoom level.
As software engineers, we can afford to be extremely laser-focused on a specific task or technology. We definitely need to have some knowledge of the surrounding systems that connect everything together, but the zoom level is typically pretty close.
Great tech leads realize that our role is to no longer be so focused on a specific system. Our role is to now become that perfect glue that sticks everything together in the strongest and most reliable way possible. This includes software, systems, and team members.
Being that glue involves knowledge on what other teams are working on, what technologies or patterns they’re utilizing to build their systems, all for the sake of being able to steer the team and the company in the direction that will make integrations and future development as seamless as possible.
Throughout our day, we need to ask ourselves: what zoom level am I at right now?
And if you’ve read this far, you probably care enough about doing well in the role of tech lead that you have a natural aptitude for being one. I believe the best tech leads are people who have adequate technical skills and high levels of empathy.
Written by Victor Dozal who lives and works in Austin, TX. He enjoys building useful things, writing about his journey as an engineer, and consuming lots of coffee. You should subscribe to him on YouTube :)
Need help with your project? Struggling with a problem? I'm at your service.