Skip to content

Instantly share code, notes, and snippets.

@semarj
Created August 11, 2022 13:44
Show Gist options
  • Save semarj/3104a9377485177d866b0208c6c09fae to your computer and use it in GitHub Desktop.
Save semarj/3104a9377485177d866b0208c6c09fae to your computer and use it in GitHub Desktop.
You can't know how the company looks from any other seat than your own.
Practice with people in other seats to communicate and manage well.
Clarify the problems your team needs to tackle. Stay all the way away from
specifying the solutions. That's their job, not yours.
"My team wants to work on x because it is more fun for them, is that okay?" No.
Never. "Winning is fun." Go win.
Repetition feels silly but works wonders. Start each conversation repeating
the overall goal and connecting it to the discussion.
You have to be your team's best ally and biggest challenger. You can't be a
great leader by care-taking alone. Push for their best work.
Trust is the currency of good management. You cannot be a great manager if the
people with whom you work do not trust you.
Just tell them already. One of the best things you can do as a manager is be
completely blunt about what you see. Tell them now. Don't dance around negative feedback.
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.
Don't 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.
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.
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.
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.
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment