Wednesday, March 25, 2015

What Is A Good Tech Lead?

Tech leads come in a variety of shapes and sizes, and there has been a lot written on the subject of just what constitutes a "good" tech lead.  A bad tech lead can break a team, but a good one can keep the team running smoothly.  Not everyone can fill this role, and though it takes some care to find the right person it isn't as hard as some may think. As someone who has been in this role more than once (including my current role) I have some opinions on what makes a good tech lead, including what personality traits and behavior one should look for.

What Is A Tech Lead?

Before getting into what a "good" tech lead is lets talk about the role itself.  In general a tech lead is a member of the software development team who helps to coordinate the team's efforts.  They help to insure that the team's momentum is of the forward variety.  Among other things they are also responsible for communicating up and outside of the team with various other project members, including the project manager, delivery lead, product owners, architects, etc.  As the name suggests tech leads are expected to have a high degree of technical competency, and to be able to more than hold their own in a technical conversation on the project.  They should be able to make technical decisions about the project, and have a high degree of domain knowledge to make sure the decisions are well-informed.

This is a pretty cut and dry explanation of the role, making it easy to identify who should fill the role, right?  Riiight.  Let's give it a little more nuance, shall we?


What A Tech Lead Isn't

Tech lead isn't just a title.  It turns out you can't just point to a random developer on the team and appoint them to be the tech lead.  Someone either is or is not a a tech lead, based on their personality and the behavior they exhibit.  The tech lead on the team is the individual other developers go to when there is a problem that they can't solve themselves, regardless of whether that person actually fills that role in an official capacity. They're also the one who willingly takes on extra responsibilities in the interest of helping the team to complete the project.

A tech lead is not simply the strongest technical member of the team.  A lot (most?) of developers are perfectly happy to be heads-down and working on the code which is right in front of them.  They'd rather not deal with anything outside of their immediate codebase, much less deal with the politics of the project.  This is actually a very good thing, as having strong developers on the team who only have to focus on implementing features and fixing bugs keeps the project rolling. Moreover, taking a strong developer and putting them into the tech lead role based solely on the fact that they can crank out user story after user story is a great way to kill their motivation.  A tech lead may be strong technically, but they'll have the ability to communicate and demonstrate a willingness to put up with the additional hassles of being a lead.

A tech lead is also not a manager.  If the "tech lead" is spending all of their time in meetings coordinating "resources" and zero time with their hands in the code with the rest of the team then guess what, that person is not the tech lead.  They're a manager, or well on their way to becoming one.

Having gotten all things Not Tech Lead-y out of the way lets move on to what a good tech lead.

Personality Traits

There are a number of personality traits that a good tech lead should exhibit (this isn't a comprehensive list):
  • Decisiveness - My all-time favorite quote is "He who hesitates is lost."  Above all a tech lead should be able to make a decision when no one else can.  In essence they should lead.  This doesn't mean charging in blindly when there isn't enough information, but it does mean that for given a situation the tech lead should find a way forward for the team.
  • Impatience - A good tech should be impatient to solve the business' problems.  They should be chomping at the bit to tackle the technical challenge.  Moreover they should be impatient to remove blockers for the team, and intolerant of processes and practices which slow or stop the team's ability to deliver business value.  
  • Bravery - A good tech lead should be brave enough to challenge the status quo and to push for continuous improvement.  If existing processes are a hindrance to delivering value than the tech lead should be brave enough to step up and point out their flaws and suggest improvements.  They should also be brave enough to speak painful truths if they need to be heard, both within and without the team.
  • Humility - By the nature of the role they are in very little that the tech lead accomplishes is actually directly attributable to them.  In fact, it is the team itself that achieves the goals of the project.  A good tech lead should recognize this.  The tech lead might help to coordinate the work, and may even have some excellent technical insight to share, but at the end of the day they are just another member of the team (or should be!).
  • Can-Do Mindset - When given a difficult project, or a particularly complex technical problem to solve the tech lead should be approach these issues with the mindset that they are problems that can be be solved, and they should encourage the team to approach the problem in the same way.  They should be the one to point out that a two meter exhaust port can in fact be hit with a proton torpedo (After all, they used to bullseye Wamp Rats back home with their T-16, and they weren't much bigger than two meters!).  

Exhibited Behaviors

Beyond personality traits there are also certain behaviors that a good tech lead should be exhibiting.  Again, this isn't a comprehensive list by any means.  
  • Technically Excellent - Tech leads should more than just competent developers.  They should be technically adept in the project tech stack, and should be able to quickly learn new new technology and adapt to new techniques and practices.
  • Delegates to the Team - A good tech lead doesn't try to tackle every problem themselves.  They can let go and trust the team to do their jobs and complete the work.  The tech lead should not be the hero who saves the day.  If they are then they're not doing their job to grow the team.
  • Knows the Strengths and Weaknesses of Their Team - Every team is made of different personalities, and developers all have their own individual strengths and weaknesses.  A good tech lead should understand what each developer's strengths are (to be played on), their weaknesses (to be nurtured into strengths), and what makes each member of the team tick.
  • Aggressively Defends the Team - This is important. There will be times when unreasonable demands may be made of member of the team, such as requests to do work that is not related to the project, or to stay late for an arbitrary reason.  There may also be times in which outside entities come into conflict with the team for one reason or another.  It is the good tech lead's job to defend the team from these unreasonable demands for their time, and to intervene between the outside entity and the rest of the team in order to keep them focused on the project work.
  • In the Business of Building People Up - Another big one.  A good tech builds his or her people up.  Not just for the project, but for the team members themselves.  A good tech lead encourages their teammates to continue to learn and grow, and supports them in these activities. More selfishly the tech lead should also be looking for a replacement, someone who will eventually take their place.  After all, as tech lead you don't want to stay on the same project forever do you? 
  • Able to Occupy the Nether Realm Between Technical and Non-Technical Communication - A good tech lead is capable of not just speaking the tech lingo, but also of speaking the business lingo.  They should be able to communicate with non-technical individuals who have a stake in the project.  A good tech lead is able to explain technical issues in non-technical terms when the times call for it. 


As a tech lead myself I've had to learn the hard way how to be effective in the role.  I've been fortunate to have a lot of good role models, as well as a number of not so great role models to learn from.  I've made plenty of mistakes, but I try to learn from them whenever that happens.  I don't believe anyone can simply jump into the tech lead role and instantly be good at it.  It is a role that demands that you attend the school of hard knocks, no shortcuts allowed.  The trick is finding someone who doesn't mind that kind of higher education, and who can thrive in adverse situations and come out the better for it, all the while keeping the team together and advancing forward in their goals.

I hope these insights are useful to anyone looking to find a tech lead, or who might be interested in becoming one themselves some day.  Thanks for your time, and if you have any of your own insights to share please leave them in the comment section.