This is the first in a series on strong technical leadership. Being a strong tech lead is very different from being a strong engineer. Let’s start by dispelling a common leadership myth: that you should “lead by example.”
Back when I was a first-time tech lead at Dropbox I had the misfortune of juggling two intimidating responsibilities at the same time:
1. Build a multi-exabyte distributed storage system and migrate our data off Amazon S3, with limited resources and an extremely tight timeframe.
2. Figure out what the hell I was doing as a tech lead.
The latter turned out to be far more challenging.
Everything was great when the team was small but as we expanded the growing pains started to set in. I didn’t feel like everyone was doing their share of the dirty work. It felt like the same few people were always jumping in to help with emergencies, respond to alerts, fix dashboards, and keep the lights on. I was one of those people, and I was starting to get frustrated.
My solution to this problem was to “show people how it’s done.”
I tried increasingly hard to set a good example: jumping on every pager alert immediately, being the first one to respond to team emails, constantly fielding questions on chat. I was working 16 hour days and struggling to get the team on board, while instead just going overboard.
You can guess where this is going.
The more I jumped in the more the rest of the team felt crowded out, the more they wondered if it was easier for me to solve a given issue, the more micromanaged and disempowered they felt, the more they suspected that maybe I just liked working all the time, and the more confused I got that people weren’t following my lead. The result of this effort was that the team members felt less happy, I felt more burned out, and less was getting done. That was all until a more experienced lead pulled me aside and said “hey, stop trying to lead by example.”
It took me a while to figure out what that means.
We all need to set a good example but trying to lead by example is weak at best and passive-aggressive at worst. A good leader needs to communicate clearly, to set expectations, and to take an active role in directing team members. Time to suck it up and own your role.
In the specific case above all it required was having an explicit discussion with the team about expectations and responsibilities for people who are on-call. This felt pretty awkward at the time but the team appreciated the clarity. It also required me to chill out a bit: it turns out that emails don’t have to be responded to instantly and the sky isn’t always falling. By codifying expectations I was forced to reason about which ones were valuable and which ones were just me being a micromanager.
Expectation-setting dovetails nicely with the concept of accountability — actually holding people responsible for meeting expectations. This is a big topic on its own and worthy of another blog post, but the high-level point is that a team of highly talented engineers thrive most in an environment of accountability as opposed to an environment of oversight. Guess what’s required in order to hold people accountable to expectations?
Actually setting them.
Ok cool, now you’ve been all “leveraged” by setting expectations. Time to sit back and watch the team do the work right? Whoa whoa, put down the top hat and monocle and pick up that shovel again.
Modern tech workers can be an anti-authoritarian bunch at the best of times. If you see your role as bossing people around you’re going to lose the faith of your team almost instantly.
Expectation-setting is a required part of a tech lead’s job, but you’re a member of the team too, you still need to get in there and do the actual work. Being on the ground with the team helps you ensure a high quality bar, helps you understand what’s going on with your system, allows you to build empathy for your teammates, and helps make sure your team hits its goals. You’ll likely be the hardest-working person on your team. Congratulations, welcome to tech leadership.
“Leading by example” doesn’t work. Setting a good example is necessary, but isn’t sufficient for strong technical leadership. Acting like a tech lead means setting clear expectations and embracing direct communication… but don’t let the role go to your head: you’re a member of a team not the boss of the team.
Up next? Probably something about embracing small failures on a team. Stay tuned.