A tech lead once told me something that changed my outlook on what being a leader really is. They said, "the major difference between a coder and a tech lead is that the tech lead can't code their way out of their problems."
What? The lead on a technical project should be able to solve any problem that their coders get stuck on, right?
Many coders will tell you that the tech lead does not always coincide with the alpha coder in the room. The lead certainly makes the most money, so what is this role actually getting paid for?
What is technical leadership?
Being a "tech lead" is not synonymous with being a coder. The tech lead manages people, not tech. Leadership is a skill that not every coder has. Therefore a promotion to a managerial role isn't always the natural progression for top performers.
The position of tech lead usually comes with a pay bump, direct access to executives, and better office space. How else should a company reward its top people? Perhaps that discussion is beyond the scope of this article. A tech lead is better defined as a discipline separate and distinct from a programmer, although they interact often.
Spelling out "technical leadership" gets at the true nature of the position, which is "leadership of the technical team." Although a leader should have a working knowledge of all aspects of their team's functions, they don't need to be an expert in them.
With this in mind, let's look at the skill set that is most important for tech leads to have.
From coder to tech lead
Accepting imperfection. Coding is all about exactness and precision. One of the biggest transitions that a coder makes is understanding that there are many ways to achieve a goal. What you might consider "garbage code" may actually be the best solution for a team that is used to a certain framework. Coding style is often a cause of contention between coders and tech leads, so give leeway for human error.
Learning to delegate. Tech leads have too much on their plate to solve every problem. There isn't enough time in the day for one person to handle everything. Being able to effectively match people to problems is a good skill to have. Delegation is not the same as commanding — it's about thoughtfully sharing a project's responsibilities.
Acting with humility. If you put yourself up as the gatekeeper for every issue a project generates, you'll run yourself into the ground. Your coders may lose respect for you and look for reasons to undermine your authority. Coders become tech leads to learn, just as much as to teach. Your team will have plenty of lessons to share with you if you're willing to listen.
Knowing the business case. Tech leads must see the bigger picture. How does the effort of each individual fit into the larger scope of the project? Is the project being coded in a way that coincides with its marketing? If you need more resources, how will you justify that to the finance department? Depending on the size of your company, you may spend just as much time in meetings negotiating with executives as you spend in front of your programming console.
Translating the team's work. If you come from the world of coding, you need to learn two languages — the programming language for the project and the language to communicate with coders. It's up to tech leads to ensure that everyone outside of the dev team understands what the dev team is doing.
Representing objectivity. This should be the easiest part of your job, as logic and reason are a coder's best friends. However, you must now navigate the emotions of your team members. The best tech lead runs a pure meritocracy.
Coding less. Coding is not the most important part of your job as a tech lead. You will have to give up some of that time to optimize your results as a leader. This also means automating your process through template resources such as a WordPress site builder rather than coding your own site from scratch. Pat Kua, author of Talking with Tech Leads, shared a well-cited industry a standard in 2014: only 30% of the tech lead's time should be spent on coding.
How does the transition to a tech lead happen?
You won't find many resources about being a good tech lead, but there are dozens of books on clean coding, unit testing, and refactoring skills. The soft skills that you must develop as a tech lead cannot be written about so easily. You will learn a lot on the fly. Hopefully you have a friend that has been through the transition, but if not, look to mentorship from your network.
You must immediately limit your coding time. You have an entirely new skill set to learn and not much time to learn it. Coding may provide you with a sense of familiarity and comfort, but leave the problem to your dev team. Focus on your job of making your team's work see the light of day.
Expect to be interrupted throughout your day for any number of reasons. You're now the liaison between the dev team and the rest of the world. The agile development philosophy that you demand of your coders must now be applied to your business relationships. Be ready and able to move in any direction. Set aside your "no interruption" time to make sure that you keep up with your responsibilities.
Reject the notion that you have to somehow prove yourself as a leader. You should have the respect of your dev team because of your coding abilities. Be transparent about the difficulties of your transition without being too emotionally charged. They will likely respect your candor and do what they can to help you. After all, your success is their success.