Engineering management lessons
Welcome to engineering management. It’s fun, it’s exhausting, it’s
rewarding — but most importantly it’s new! What worked for you before
won’t work now. You’ll have to acquire a new set of skills, and shed
some bad habits in the process. Here is a short guide to get you
started.
Do
- Attract, nurture, coach, and retain talent. Talk to engineers to tease out concerns early, then fix them if you can.
- Communicate to every engineer the next most important issue for them to work on.
- Be the tiebreaker when the development team can’t reach consensus.
- Be the information hub. Know what every engineer is working on, and help connect the dots that wouldn’t otherwise get connected.
- Provide administrative support. Schedule issues, coordinate releases, and make sure the bureaucratic machine keeps ticking.
- Enforce behavioral and performance standards. Fire bullies and underperformers.
Don’t
- Personally fix bugs and ship features. You have to write code to
remain an effective tiebreaker, but that’s where your coding
responsibilities end.
- Supervise the quality and volume of people’s work. Software
engineering isn’t an assembly line. If you find yourself supervising too
often, you haven’t attracted the right people or given them the right
incentives.
Motivation and culture
- You’re the one who makes hiring and firing decisions. Everything that happens on your team is your responsibility.
- Engineering is a seller’s market: people work for you because they believe in you. Access to their talent is a privilege.
- Authority isn’t bestowed freely. It’s earned by making good decisions over time.
- Don’t make decisions unless you have to. Whenever possible, allow the team to explore ideas and make decisions on its own.
- Do make decisions when it’s necessary. Few things are as demoralizing as a stalled team.
- Don’t shoot down ideas until it’s necessary. Create an environment
where everyone feels safe to share and explore ideas. The folks writing
the code have a lot of information you don’t. Rely on your team and
you’ll make better decisions.
- Building intuition on how to make good decisions and cultivating a
great relationship with your team will get you 95% of the way there. The
plethora of conceptual frameworks
for organizing engineering teams won’t make much difference. They make
good managers slightly better and bad managers slightly worse.
Emotions and people
- Management happens to be prestigious in our culture, but it’s a
skill like any other. Prestige is a distraction — it’s fickle and
arbitrary. Guard against believing you’re any better than anyone else.
The sooner you get over prestige, the sooner you can focus on doing your
job well.
- Management also attracts scorn. Ignore it — the people who believe
managers are useless don’t understand the dynamics of building a winning
human organization.
- If you feel something’s wrong, you’re probably right. Don’t let anyone bully you into ignoring your feelings.
- If you find yourself blaming someone, you’re probably wrong. Nobody
wakes up and tries to do a bad job. 95% of the time you can resolve
your feelings by just talking to people.
- Most people won’t easily share their emotions. Have frequent
informal conversations, and tease out everything that might be wrong.
Then fix it if you can.
- Your team looks to you for leadership. Have the courage to say what everyone knows to be true but isn’t saying.
- You’re paid to discover and fix cultural problems your team may not
be aware of. Have the courage to say what everyone should know but
doesn’t.
- Hire great people, then trust them completely. Evaluate performance
on monthly or quarterly basis, then fire if you have to. Don’t evaluate
people daily, it will drive everyone (including you) insane.
- Most intellectual arguments have strong emotional undercurrents.
You’ll be dramatically more efficient once you learn to figure out what
those are.
Tiebreaking and conflict
- Don’t judge too quickly; you’re right less often than you think.
Even if you’re sure you’re right in any given case, wait until
everyone’s opinion is heard.
- Once everyone is heard, summarize all points of view so clearly
that people say “Thanks, I wish I’d thought of putting it that way.”
List any points of agreement with each view, and state what you’ve
learned from everyone. Then make your decision.
- Once you’ve made your decision, enforce it. Don’t let the team
waste time going in circles to placate disproportionally strong voices.
- Reopen the discussion if there is significant new information.
- When disagreement gets personal or people don’t accept well-reasoned decisions, it turns into conflict.
- Most conflict happens because people don’t feel heard. Sit down
with each person and ask them how they feel. Listen carefully. Then ask
again. And again. Then summarize what they said back to them. Most of
the time that will solve the problem.
- If the conflict persists after you’ve gone to reasonable lengths to
hear everyone out and fix problems, it’s time for a difficult
conversation.
Difficult conversations
- Have difficult conversations as soon as possible. Waiting will only make a bad situation worse.
- Never assume or jump to conclusions. Never demonize people in your mind. Never blame, yell or vilify.
- Use non-violent communication
— it’s the best method I know of to critique people’s behavior without
offending them. It smells like a management fad, but it really works (I
promise).
- Have the courage to state how you feel and what you need. People
are drawn to each other’s vulnerability but repelled by their own.
Vulnerability isn’t weakness.
- Expect people to extend you the same courtesy. If someone makes you
feel bad for stating your needs and feelings, it tells you more about
them than about yourself.
Rough edge
- People will push and prod to discover your boundaries. Knowing when to stand back and when to stand firm is half the battle.
- Occasionally someone will push too far. When they do, you have to show a rough edge or you’ll lose authority with your team.
- A firm “I’m not ok with that” is usually enough.
- Don’t laugh things off if you don’t feel like laughing them off. Have the courage to show your true emotions.
- If you have to firmly say “I’m not ok with that” too many times to the same person, it’s your job to fire them.
- Unless you’re a sociopath, firing people is so hard you’ll invent
excuses not to do it. If you’re consistently wondering if someone’s a
good fit for too long, have the courage to do what you know is right.
- Don’t let people pressure you into decisions you don’t believe in. They’ll hold you responsible for them later, and they’ll be right. Decisions are your responsibility.
- Believe in yourself. You can’t lead a cavalry charge if you think you look funny on a horse.
Post a Comment