Sunday, September 19, 2010

Qualities of a Great Tech(nical) Lead

Lately, I've been thinking a lot about the qualities of a great engineering tech lead. In the 3+ years I worked on Google Reader, I had the extraordinary privilege to work with one of the best out there. Since I left that team in February of this year, I've experienced several new and different engineering lead styles and I thought I'd try to capture some of the main desirable qualities that every tech lead should have, in my opinion. Since I am a designer and have little in the way of qualifications to judge engineers on the details of code, this post should be viewed through the lens of the designer/close team member, not a fellow engineer.

A good tech lead should: 

Be able to think abstractly about UI design
Following up from my previous post ("The role of a Great Designer"), from the design perspective, the most valuable engineering relationship is the one where the engineer can think about design in the abstract. Many engineers get "stuck" when they don't receive pixel-perfect specs, including edge cases for a feature or product. On a small implementation team (in this post, "implementation team" refers to a team of a product manager, a designer and several engineers working closely together), an engineer who can think abstractly about interface design will (should) always edge out engineers that can't. An engineer who can implement from a whiteboard drawing (or create or modify one to move the product forward) is a desirable quality to look for in a tech lead.

Be the most skilled engineer on the team
I have worked with some tech leads in the past that have made it to tech lead because of seniority or other political reasons, but are clearly not the most skilled engineer on the team. Tech leads are called as such, because they are meant to lead by example, not manage people. If your tech lead is not the most skilled engineer on the team, something is wrong.

Produce an impressive amount of work
Given that a great tech lead is going to be the most skilled engineer on the team, you'd expect that their efficiency in writing, reviewing and shipping code would also be up and to the right of most others on the team (unless of course, they are getting bogged down with managerial duties, in which case you have a different problem on your hands.) A great tech lead makes an oppressive amount of work look effortless, setting the bar for the rest of the team.

Be able to prioritize "non-work"
Engineers (or anyone, for that matter) can get burned out pretty quickly. A great tech lead should not only be able to make a ton of work look effortless, but should also set a work-life-balance example for the rest of the team. Vacations should be *real* vacations (hey! I saw you checking your email). No dialing into meetings, no sending off a quick code review. Less experienced/capable team members will burn out much more quickly trying to follow the example of someone who never stops working, and that's not useful to the team unit as a whole.

Have a broad awareness of related projects (both internally and externally)
The best tech leads out there are information sponges. Be wary of a tech lead who has extensive knowledge of only his or her own area of expertise. At Google, most full-time employees have a vast amount of internal information available to them. A great tech lead will be tracking related (and even unrelated) projects going on inside and outside the company in order to identify possible areas of overlap or opportunity for collaboration or integration with other teams or services. A really, really great tech lead might even see some opportunity to further their own project by reviewing or checking in code for a (seemingly) unrelated project.

Be able to fully complete engineering tasks, no matter how grungy they get
I've been able to work with a vast array of strong talent in Google engineering. Some of the most creative and brilliant people I've ever worked with can bust through all kinds of gnarly problems early on in the project when it's still new and exciting but will lose interest or look for the next big "creative rush" to come along. A good tech lead knows that the follow through is just as important as the kick off, and will push through the remaining 10% of the details that often get overlooked. This is especially important with regard to design, as most of the "fit and finish" of the UI work falls into this bucket.

Should have slightly higher than "engineer average" communications skills
A tech lead at an engineering organization like Google is going to be the most important person on the team. This is the person that everyone looks to for technical direction, possibilities and openness to pushing the envelope. A great tech lead will be able to communicate easily with non-engineering types almost as easily as they can with fellow engineers. They will be able to phrase challenging technical problems in a number of different ways in order to make designers, product managers, marketing folks or external audiences feel well-informed and able to complete their own work well.

Is always open to new ideas
A great tech lead's first response to any new idea should not be "No." If you find your tech lead saying no before the idea's even been given a chance to be articulated, then that causes all sorts of problems on the team. If team members feel like their ideas will never get heard, or if they begin to feel like they are merely taking on the overflow grunt work from the tech lead that they don't have time to get to, you won't have a very productive, effective or cohesive team (and that always shows in the end result). A great tech lead will not only be open to exploring all kinds of suggestions and ideas from anyone, but should encourage them.

Generates new ideas constantly
Tech leads that don't come up with new ideas on an almost daily basis probably shouldn't be leading a team. Creativity, productivity and efficiency go hand-in-hand with engineering leadership and all are important. A tech lead who is simply following instructions handed down to them from execs or product management isn't going to be an inspiration for the strong, creative, intelligent members of the team.

And maybe most important of all:

A great tech lead doesn't necessarily make a great people manager
These two roles often get (arbitrarily) conflated. Just because someone has risen to the role of technical lead of a group because of their skills, accomplishments and leadership ability, doesn't mean that those are the same skills necessary or required for a good people manager. Tech leads are, above all, still individual contributors on the team, and should not automatically be burdened with people management. For someone without the skills or desires to handle personalities, career planning, etc for those on their team, adding on these responsibilities can often just take a great tech lead back to mediocre. There are some folks that are good at both, but it should be up to the individual to decide wether that's a role they'd like to take on, not assumed automatically with technical leadership.

Great tech leads emerge organically, and should be supported and encouraged by their company. They are, indeed, few and far between.


kushal said...

Would love to see an equivalent post about product managers!

Ann said...

Great post! I could resonate with almost every word in this post.

- Ann Catherine

Jenna Bilotta said...

Kushal, I've got one lined up for design tech leads. Product shouldn't be that far behind!

Jenna Bilotta said...

Ann, thanks for the nice words!

clive.boulton said...

Excellent. Forwarded on to a couple of great tech leads.

Ladling on people mgmt and other admin bureaucracy. Gets the same results as promoting the best sales person to VP sales (no results).

Brian Su said...

Great post! The problem for me, is I have yet to work with a technical lead who "Produce an impressive amount of work" + "Be able to prioritize "non-work" together in one person. I really hope I can become what you have posted here.