What makes a good tech lead? A great question, but one difficult to answer. much like trying to answer… ‘what makes a great manager?’ or better yet… ‘what makes a great father?’. Many times, it is too many ‘things’ that when summed… create the greatness. I am not sure I can actually document what it takes to be a good (or even great) tech lead, but here is my attempt.
I am attempting to answer this question, from the point of view of being a tech lead and working with a tech lead.
Let’s start simple. A tech lead is a person. well… hopefully we can all at least agree on this. A person, that is a member of a team. This is a key distinction for me… a member of a team… not an outsider, looking in, but a full-fledged team member. Responsible for the success of the team… and still a member of the team when failures occur. More important of these two.. is the ‘still a team member, participating in all repercussions dished out to the team’… when the team fails. And it will happen. Unfortunately, I have been unable to limit my team participation to only teams that have succeeded… Although, I have learned more from the teams that have failed. Not that I wish to continue the learning process forever, but a failure every now and then keeps the soul honest. A ‘good’ technical lead will only consider themselves successful, when the team is successful and each member has been recognized for their participation.
As part of the team… the tech lead will be the person working on the grungy work nobody else wants to be associated with. The type of work that nobody wants to work on, but when done properly… silently… just makes the team better… and multiplies the teams productivity for reasons many will never understand. This will include the continuous removal of roadblocks impeding the process of allowing the team to move at near 100% efficiency. It will also include the process of expanding the technical capabilities of each member, both business and technical. A good tech lead will be able to bridge the gap between the business and the technical. Gifted with the ability to speak ‘technical’ to the technical members and ‘business’ to the business members. This never ending pursuit of expanding the capabilities of the team members will allow the team to continually deliver more and more business value. This will also include the spreading of knowledge among all members of the team… the habit of concentrating business knowledge within a few key people will slow the expansion of business value… the tech lead will force all members to become business experts. The technical staff should be business focused… with the ability to deliver in a technical manner.
In my experience, vision is a differentiating factor between a senior developer and a true tech lead. The tech lead will provide technical vision for the team but will not make each and every decision. They will make sure the team understands the vision but will delegate to the team… letting their own decisions guide the development process. A good tech lead will surround themselves with people they can trust and, therefore… allowing the team members to trust the vision of the tech lead. A sure way to lose the trust of the team will be a tech lead that keeps all of the direction and decisions in his/her head. The team will expect the tech lead to ‘lead’ and not mandate. Reactionary… does not make a good tech lead. A good tech lead should always be ahead of the curve… proactively evaluating the current health of the team. They will work with the team to establish estimates and milestones… not mandating.
Tech leads either shine or falter here. A good tech lead will encourage debate, knowing when a resolution is not possible… listening to the debate and changing the course of the debate, not by mandating direction, but by asking the proper questions… forcing the team to think. A good tech lead will allow themselves to be swayed by the discussions.
Why is that all of the good tech leads are pragmatic? It is not that they do not like to get things done… but there are times to do the right thing (or do something right) and then there are times to just get something done. This needs to be a business decision, not purely a technical decision. Please keep in mind… doing the ‘get something done’ should be because it is the correct business decision and not because you are too tired or just freakin’ lazy to do the right thing.
The tech lead role is more than just a senior developer. It is more than just being able to write a lot of code… quickly. It is knowing when to write code and when to be clearing roadblocks for the team. This communication and silent leadership differentiate the tech lead from the senior developer.
One of the most important differentiators for me is the ability of the tech lead to maintain a relationship with the product owner and the business. This relationship is more than just being friendly with the business, but a relationship of understanding how the product works… and more importantly, WHY !!! The trust that will result, when the tech lead is considered an integral member of the business, will be the ability to push back on business decisions with respect. Many times, the ideas generated by the business will be near impossible to accomplish technically… at least in a timely manner and with a reasonable expenditure. Many times, the tech lead will have the ability to analyze the requests of the business and provide alternatives that are equally as beneficial… with quicker turn-around times and lower cost. It is a sure sign of a less than awesome tech lead that does not understand the product / business problem and only offers constraints instead of solutions.
If you are aspiring to be a tech lead, please heed this one seriously… patience is a virtue. Seems like I have heard that one before from my father. And it has served me pretty well so far. Entering into delicate situations with a calm demeanor will settle the mood of the team and allow for better decisions, as a result. Please do not take this as a one-size fits all… there will be times, when the only solution is to ‘light the ship on fire’… but please remember… this is a last result and when you ‘light the ship’… really do it… 1/2 way will only make you look like you upset. Any interested in knowing what happens… when you ‘light the ship’… please contact me directly. ;)
Feedback… this is a tough ‘thing’ to receive when it is less than positive, regardless of who is delivering the message. A good tech lead will be the first to step up to receive less than positive feedback… whether or not it is directed at the team, at the tech lead or at an individual team member. A good tech lead will deal with issues, but never in an arrogant manner. A tech lead will never survive the role if their purpose is to make the team and/or individuals on the team to feel inferior. A humble personality and the ability to be assertive and possibly ‘flip the table’ if required.
So… summing this up. A good tech lead will possess the following :
- ability to get the team to work together
- technical vision
- ability to discuss and debate, but also the ability to listen and be changed by team discussion
- ability to manage the project
- pragmatic !
- ability to communicate with the business and developers
- know the product… and thus, the trust of the business
- a great personality
Please enjoy and let me know what you think.