I’ve been on a number of development teams and one thing that makes a huge difference for the team is a good tech lead. I’ve been on teams where there was no “official” tech lead but where one team member became the unofficial tech lead. The following are the traits I believe contributed to this person’s acceptance as a leader. I’ll start with the most obvious quality first. A quick disclaimer though. I know there are both men and women in software development but to use he/she everywhere in my post when referring to someone will become annoying and distract from the message. Ok, on we go…
Exceptional Technical Skills
A good tech lead will know the technology stack he is working in at deeper level than a normal developer. To show you what I mean, think of a developer as a person who has a sink. (I first heard this metaphor used by Scott Hanselman in one of his talks). This person uses the sink every day and becomes very adept at knowing just how far to turn each knob to get the water to the exact temperature needed to wash their hands, or do dishes or any number of other tasks that a sink can be used for. However, they never bother to open the cupboard doors and look underneath the sink. They know that when they turn the knobs, water comes out and when it hits the drain it disappears. But they don’t know where the water comes from, or where it goes. They don’t know that there are supply pipes that bring water to sink as well as drain pipes that take the water from the sink and send it outside of the house. A good tech lead is like a person who is curious about where the water comes from and where it goes beyond the confines of the sink. He isn’t afraid to open the cupboard doors to see the piping and where it goes. He takes apart the piping to figure out how the trap works and is able to clean it out when it becomes clogged. In the same way, a good tech lead not only knows the language and database he may be using to solve a particular problem, but will also understand the operating system and how the application being built will interact with it. If there is a runtime such as in Java or .Net, the tech lead will understand how the runtime functions. He will look under the covers to see how things work instead of just accepting that they do.
Excellent Troubleshooting Skills
A good tech lead should be really good at troubleshooting issues. He should be able to think abstractly about how the system should be working, what error is occurring, places where that error would be likely to occur and what is likely to cause it. He should also be able to look at things from a higher level (more abstract) to be able to see potential trouble signs on the road being travelled.
A Sense of Humility (servant leader)
A good tech lead will not see himself as being different from the other developers. He will be consider himself just another member of the team. This person is happy to share his knowledge with other team members and pretty much anyone else who asks. When asked a question, he will give an answer without making the questioner feel stupid or belittled in any way. A good tech lead will give the team or another developer credit for a job well done even when he has had a part in solving the problem. He will also guide the team by asking questions which allow the other developers to see where something could go awry and learn as they answer the questions thereby moving in a better direction. He will not just take a position and expect everyone to accept it just because he’s the tech lead.
Knows How to Listen
A good tech lead not only shares his knowledge, but also listens to the opinions and thoughts of the developers around him. In fact, most of his time will be spent listening and understanding so he can better guide the team. The importance of this skill cannot be overlooked. Some developers that are highly skilled make terrible tech leads because they just won’t listen.
Not Afraid to Question the Status Quo
A good tech lead will not be afraid to ask “Why?” Why are we using this platform? Why are we using this particular language? Why are we using framework A over framework B or a particular framework at all? He won’t accept an answer of, “This is what we always use” nor the excuse of “this is a really cool technology”. He will ask the hard questions and if in disagreement, will defend his position in a professional and charitable manner, explaining why he feels something should be done another way.
In general, when there is a person on the team that has these traits, even if not “officially” a tech lead, you will see the team starting to treat this person as a tech lead by bouncing development questions off of him, looking for and valuing his opinion before settling on a solution, and not being afraid to ask pretty much anything even if having to ask the question of someone else would be embarrassing. If you notice a person like this, you’ve found your tech lead.