I became an engineering manager a few years ago now and have since moved into a role where I’m responsible for both direct ICs who report to me but also for other managers and the direction of an entire department. Titles are always funny as they’re so dependent on where you work – but one thing that is fairly universal is how difficult transitioning to a leadership role can be when you’ve been writing code all of your professional life.
I came across this post a while ago about engineering management lessons learned, and a lot of them resonated with me. The biggest takeaways for me:
- Going from being great at something (writing software) to being awful at something (setting all of that aside and leading others) is hard!
- Don’t make decisions unless you have to. Whenever possible, allow the team to explore ideas and make decisions on its own.
- 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.
- 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.
- Figuring out what motivates your team can be tough. It takes a lot of trust-building to get to the point where you can get honest answers out of them, but it’s worth it.