Auto Ads by Adsense

Monday, April 19, 2010

Tips for Tech Leads

One of the unending sources of frustrations of being an experienced engineer in a company full of fresh graduates is having to deal with new tech leads---many engineers fresh out of school are great designers and engineers, but couldn't lead a team out of a paper bag. It didn't help that Google's internal leadership training was derived from team-building exercises for experienced executives, rather than leadership 101 that would have been appropriate in this situation.

My favorite remedy for this is the Peopleware, which I also mentioned in An Engineer's Guide to Silicon Valley Startups. However, that book seems to be out of print available only direct from the publisher, so I'll do my best to summarize my tips for new tech leads:
  • Have lunch with your team at least once a week. If you learn nothing else about leadership, learn to eat with your team. (If you're an industry veteran, I know this sounds basic, but I assure you that I ran into multiple tech leads at Google who did not do this, because no one told them that this is necessary and essential) If necessary, put it on the calendar. Communal eating is such a major bonding ritual since the dawn of humanity that not to do this marks you as an idiot tech lead or manager. One of the best tech leads I know at Google, Arup Mukherjee does this not just once a week, but nearly every day. In Peopleware, Demarco and Lister describe a situation where a crafty tech lead turned making dinner into a team-building exercise. That's the way tech leads should be: even when they're leading, it's not obvious. When a great leader is finished, the team says, "We did it all by ourselves without a leader!"
  • Schedule 1-on-1s with every team member, at least once every two weeks. This ensures that your team member has time to catch up with you and tell you about problems that are important but not urgent. Many people have a fear of speaking in public, and private meetings ensures that little nagging things that could blow up don't blind side you. You can also use this time to provide feedback. Most people crave feedback, and being able to provide useful feedback regularly distinguishes a great leader from the rest.
  • Make sure that members of your team don't hear from you only when things go wrong. Many tech leads only talk to team members only if something went wrong. Do this enough times, and your team mates will start avoiding you out of repeated Pavlovian training. If this means you have to find ways to praise them every other time you see them, so be it. In Orson Scott Card's book, Ender's Game, the protagonist instinctively knows something that many executives do not: bad news should come from the top level, and good news should come from line management. This is something that every executive should learn and do.
  • Make a big deal out of milestones. Celebrate every milestone. Reed Hastings was a great cheer-leader for every person in his company. When I applied that to small teams of 3 or 4, it was just as motivating. Most technical leaders err too much on the side of not providing sufficient positive feedback to encourage teams.
  • Try to give team members whatever they need in order to get things done. Your role is to support them. Avoid grabbing the glory by taking all the interesting jobs and treating them as minions to do work you don't want to do. Note: if you work at Google, this might not apply to you. It's more important to get promoted early at Google so your evaluations of your team-mates matter more so they can get promotions --- this is another way incentives get mixed up in big companies in a way that don't at startups.
  • You're spending well over $100k a year per engineer. There's no reason to skimp on $5,000-$10,000 worth of hardware sitting at his workstation so that he's more productive. Yes, it's nice to be frugal, but one big sign for me that a company has gone too far is when I'm tempted to bring my home machine to work so that I can have a faster machine at work. And no, I don't consider upgrades every 18 months a waste of money if your business depends on the productivity of engineers, but many companies do. I just don't understand it.
Do all of these things and you still might not be a great leader (so much of leadership is built into who you are, and not really teachable), but you'll at least not be the kind of tech lead that people and talk about years later about how bad a tech lead you are. And ultimately, if you eventually wish to have a career at a startup or even start your own company, you'll discover that these soft skills are as important as your ability to code.

(I now have a book full of useful tips like these: Startup Engineering Management)


Unknown said...

I've been leading tech teams for 12 years, and I spent a few minutes trying to think of anything to add to this list, and couldn't. This is a great summation of the right things to do. Especially the idea that your job is to serve your team. I always tell people that my job is to go to meetings so they don't have to. And if their keyboard breaks, I'll give them mine while I go get a new one.

Shalmanese said...


Are you familiar with Michael Lopp's writings (Rands in Repose) ( In particular, this article seemed to echo a lot of what you say about 1:1s:

Piaw Na said...

No I'm not. They read good.

bills said...

This is a good start, but there is really a lot more to it than this. Most of the time and effort spent in technical leadership involves making your team as productive as possible and your product as successful as possible. This is easy with top-notch people on a product with a winning strategy, but can become much more challenging when one of those two ingredients is lacking. Team productivity is much more about building consensus, aligning vision and fine-grained task management than it is about faster workstations or communicating when things go well. Making sure that everyone is aware of the goals and doing everything they can to accomplish them takes much more than a weekly lunch or 1:1. You have to convince each member on the team that they are a critical piece of the puzzle and that what everyone is trying to accomplish really matters to the company and stakeholders. Then, as the product evolves and the plans or vision changes, it's necessary to re-synchronize that vision across all the team's members.

Piaw Na said...

A short blog post like this can't turn you into a great leader. It can only make you aware of important things so that you're not a bad leader.

Surprisingly enough, communicating your vision isn't the most important challenge when your team-mates aren't even talking to you because you can't be bothered to eat lunch with them. That's the problem I'm trying to address here. Once you have team-mates' attention, the other factors you talk about come into play.

This is why Google's Leadership education was not as effective as it could be: the EDGE workshop focused entirely on the issues you talk about, ignoring the fact that most people in the workshop really needed basic "do this" pointers.

Unknown said...

Move the last 2 things to the top of the list, especially if as a tech lead you really are a manager. At pretty much at every place i have worked over the last 10+ years, i have know more about my job than my lead or manager or project manager. Sadly, I am not a good speaker, nor a butt kisser nor want a lobotomy so I probably won't be a manger in most places and thus am marginalized.

Unknown said...

dogmatixx, some meetings your team should go to or you should take them.

Unknown said...

link broken ?

Piaw Na said...

Thanks, Fixed!

Unknown said...

Thanks.Yes, for technical leadership its important to make your team as productive as possible and your product as successful as possible. Brainstorming can also help.