Way back in time, while I was still sitting at a desk at my finance job, I started subscribing via RSS to a gentleman pseudonymed rands. He wrote classics about topics like the FrienDA, Secret Titles, and Shields Down. There was a lot of content about Engineering Management before I knew what one was or did, before I even knew that I would make the jump to software engineering, and well before I knew that rands would be my great-grandboss.
Today, as an Engineering Manager I still am not sure what one does (or that it even does a thing), but this tweet from @rands last week made me think I should write down what I think a great leader should focus on.
Clear the Minefields
In software engineering we often talk about blockers. You need to push your new code out, but Minh in ops hasn’t provisioned the servers yet. Managers are notoriously good at filling their calendar with meetings, but sometimes these meetings are the things that are important so that the people that depend on you can keep doing their jobs. You try to stay a step ahead of your team and make sure they don’t have to jump in on things they don’t need to. Other bombs are hidden in bad hires. Interviewing can be tiring, time consuming, and arduous, but getting this wrong is so expensive. And then there’s the regular day to day… wiping whiteboards, pulling design prototype print outs off the wall, picking up candy bar wrappers off the ground. You’re a servant of the people.
Regardless of seniority, every good manager will take a bullet for you.
Know Your Customer
To run a successful business, every manager in your organization from top to bottom has to know what makes the thing go. In startup companies, survival often means making sure you reach product/market fit. This means that every leader in the company needs to know where to dedicate time and energy, and maybe more importantly, when something just isn’t working. In established companies, it becomes even more important to not make assumptions, and to iterate, validate, and refine your output.
Regardless of seniority, every good manager will know what makes a great product.
Keep the Trains on Time
Humans are terrible at estimation. Humans tasked with writing software seem especially ill-suited for this task. At the end of the day, there will always be the group of things that you don’t know you don’t know. Experienced managers account for this, are mindful of delays on the assembly line, and have a watchful eye that sees when things aren’t running as smoothly as they can be. And when things start to go off the rails, as they are wont to do, a great manager knows what is a must have, a nice to have, and an ain’t gonna have.
Regardless of seniority, every good manager will ruthlessly prioritize.
@rands genuinely care about you
— Sven Chen (@pistevo) January 6, 2017</blockquote>
Candidates often ask me what my favorite thing is about working at Slack. My answer is always the same: the people. I spent over a decade as a volunteer leader in church, heading up music ministries. Something that has always stuck with me between my volunteer leadership and professional leadership was when a member of my team pulled me aside and with tears in her eyes said, “you don’t care about us”. I remember being stopped dead in my tracks because I thought I was being attacked and that couldn’t be further from the truth, but upon further examination, I could see I wasn’t saying or showing it. The job isn’t just to “care” in the “hey, friend” sense, but also to give the right feedback to help them become a better employee, to make sure you’re putting their career on a path to success, and if your team isn’t the right fit for them, that you let them know that with grace.
Regardless of seniority, every good manager will truly, deeply, madly care about their team… and make it known.