Management Essentials: How to be a Great Tech Lead

Akshata Naikar
8 min readDec 12, 2020
Take the Lead, Own the Execution

I became a tech lead many years ago (10 years ago, to be precise!). I had been promoted to senior engineer and was working on a team with several junior as well as senior engineers. It was a kind of a surprise that I was promoted to tech lead, because I wasn’t the most senior person on the team by either years of experience or title. However, in retrospect, I had a few advantages. I had good verbal and written communication skills. I was able to breakdown the high level business requirements into low level design specifications. I was able to collaborate with different teams and explain the features I was building. I was able to mentor junior developers and prioritize their work. Finally, I was able to get things done and show progress. In the end, this pragmatic urgency was the deciding factor and was explicitly called out by manager, at that time, during the promotion announcements.

The tech lead role, after all, is a leadership position, even when it’s not a management position - Camille Fournier

The idea that the tech lead role should automatically be given to the most experienced engineer, the one who can handle the most complex features or who writes the best code, is a common misconception that even experienced managers fall for. Tech lead is not the job for the person who wants to focus deeply on the their own code and a tech lead who does just this, is not doing their job.

But what is the tech lead job really? What should we expect from this person?

As with many titles in software engineering, “tech lead” lacks a common definition. The closest definition I could draw based on my experience is a description used by Patrick Kua in his book Talking with Tech Leads.

A leader responsible for software development team, who spends at least 30 percent of their time writing code with the team.

Different focus areas for Tech Lead

My job as a tech lead was to continue to write code, validate the business requirements, guide the team on feasibility analysis, provide design solutions, perform code reviews, be responsible for end-to-end feature delivery and deal with all the details on the project management. I could be the tech lead, despite not being the most senior person on the team because I was willing and able to take on the responsibilities of the role, while rest of my team focused purely on writing the code.

If you’ve found yourself in the tech lead position, congratulations! You have what it takes to be the point of contact for a team. Now its time to learn some new skills!

THE MAIN ROLES OF A TECH LEAD

“It is not enough to do your best; you must know what to do, and then do your best.” — W. Edwards Deming
“It is not enough to do your best; you must know what to do, and then do your best.”
W. Edwards Deming

Systems Architect and Business Analyst: In these roles, you are expected to identify the changes needed to the system and the features that need to be built, in order to deliver the projects. The goal here is to provide some inputs and structure to start estimating and breaking down the big project into smaller workable chunks. You need not perfectly identify all the components of the project but spending some time upfront would definitely help identify major pitfalls, if any. This role requires you to have a good understanding of overall architecture of your system along with understanding the business requirements and translating them to software.

Project Planner: The main goal of the project planner is to break work down into rough deliverables. We need to look for ways to get as much productive work done, in parallel. One tried and tested method is to apply agreed-upon abstractions to enable parallel development. For example, if you are building a frontend application that consumes an API object, there is no need for the API to be completely finished before you start frontend development. Instead, you can start to code the frontend using dummy objects. At this stage, you will want to start identifying priorities, distinguish must-have vs nice-to-have features and plan to deliver critical pieces early in the project. You will also need to gather inputs from experts on your team, who know the affected parts of the software deeply and help you out with the details.

Software Developer and Team Leader: In these roles, you will continue to write code, communicate challenges and delegate. As software project progresses, unexpected issues arise. You will be tempted to put in extra hours of work and take the project to finish line. In your position, as a tech lead, you must communicate this obstacle first. Your product manager should know about any possible challenges as early as possible. It’s not uncommon to see scope being cut down by product managers towards the tail end of the release, in order to meet project deadlines. In any case, you need to keep your manager and product team informed about the issues and make an informed decision to mitigate the risks. Also, you need to be able to delegate some of your tasks to other team members when you have your hands full and pitch in and sign up for more tasks when you have the bandwidth.

As a tech lead, you will be expected to wear the hat of a software developer, a systems architect, a business analyst and a team leader who knows when to do something single-handedly, and when to delegate the work to others. Don’t worry, you don’t have to do all of these tasks as once. It is more of a learning curve and eventually you will get better at it with lots of practice.

Great tech leads have a number of characteristics. I have listed the most important ones below.

Understand the architecture: If you are a tech lead and don’t fully understand the architecture of your system, then take the time to learn it. Figure out how data flows into the system, where it lives and what are the moving parts of the system. If you are supporting a product, it is very essential to understand the features it supports and core logic for the same. It’s almost impossible to lead projects well, when you don’t understand the architecture you are changing.

Be a Team Player

Be a team player: If you are doing all the interesting work yourself, stop. Look at the tricky, boring or annoying areas of technical need and see if you can unstick those areas. My preference has always been to tackle latency related issues, develop new web service APIs, prioritize technical debt and complex architecture issues. This gives me ample opportunity to learn more about the system architecture and hone my performance tuning skills. As a tech lead, you are a senior engineer / talented software developer and its reasonable for you to take on some of the harder tasks. You want to encourage your team members to learn something new and give them opportunities to stretch themselves. You should be able to gauge the team members’ strength and capacity. If you have a junior team member, give them simple features to implement initially and gradually progress them towards harder tasks. This way, you will set them on the path to success.

Lead technical decisions: You will be involved in most of the major technical decisions for the team. Please note, there is difference in being involved vs being the one who makes all the decisions alone. If you start to make all the technical decisions without soliciting the input of your team, they will resent you and blame you when things go wrong. But, on the other hand, if you leave everything up to the team, decisions that could have been made quickly can drag on without resolution. Hence, as a tech lead, you need to determine which decisions must be made by you, which decisions should be delegated to others with more expertise and which decisions require the whole team to resolve. In all of these cases, be clear about the topic of discussion and communicate the outcome.

Communicate — concisely, clearly and effectively

Communicate: In your role as a tech lead, instead of having every team member sit in the meeting, you represent the team, communicate their needs, and bring information from that meeting back to the team. If one universal talent separates successful leaders from the pack, its communication skills. Successful leaders write well, they read carefully, get up in front of a group and speak. They pay attention in meetings and are constantly testing the limits of their knowledge and the knowledge of the team. Now is a great time to practice your writing and speaking skills. Write design documents and get feedback on them from better writers. Write blog posts for your technical or personal blog. Speak up in team meetings, stand ups and look for opportunities to speak or demo something you have built in front of an audience.

Please note listening skills are as important as speaking skills. In my career, I have seen people talk and talk and talk, without giving others a chance to speak and hear what they say. They don’t realize that they are being disrespectful and miss out the different and fresh perspectives other people might bring! Sometimes it is essential to let our body of work do the talking. If you propose a design solution without backing up with solid evidence, research or prior experience in similar field, you might not be able to convince the stakeholders to move ahead with your solution. Hence, you need to work on building up your technical credibility, listening skills along with speaking and writing skills.

It doesn’t matter whether you choose to dive deep into technology, or become a manager, if you cannot communicate and listen to what people other people are saying, your career growth from this point on will suffer.

Assessing your own experience

  1. Does your organization have tech leads? If yes, is there a job description for this role? If not, how would you define it? How would a tech lead define this role?
  2. Who is the best tech lead you have worked with? What are some things that person did that made him/her great?
  3. Have you ever worked with a frustrating tech lead? What did he/she do that frustrated you?
  4. Are you interested in becoming a tech lead? Are you comfortable to lead a team on a project you are technically comfortable in? Are you ready to push yourself to take on additional responsibilities? Are you willing to spend less time writing code? Did you speak to your manager on what they expect from a tech lead?

--

--