In the past four years, I’ve been working as an engineering manager. First, as the co-founder of RisingStack, then Godaddy and now Uber. In all of these cases, I was and am between the tech lead engineering manager and the people engineering manager.
This article summarizes a few lessons learned, as well as shows you how I manage to work on code. Hopefully it gives you a few ideas to adopt too, if you are an engineering manager with an appetite for coding.
If you’d like to learn more on these types of engineering managers, I’d recommend reading Benjamin Encz’s Flavors of Engineering Management.
As an engineering manager I found code reviews tremendously helpful for not just ensuring quality across the codebase, but because of its knowledge sharing nature. I look at code reviews more as a broadcasting channel for the changes applied to the code base rather than a way of ensuring quality.
As an engineering manager, code reviews are a great way to:
- understand the state of the project,
- mentor new team members,
- ask clarifying questions, that can spin up a conversation about an things the team might have missed previously.
If you’d like to and still have the time to work on the codebase sometimes, I’d highly recommend picking bug fixes or small features. Bug fixes let you dive into the breadth and the depth of the codebase and understand how it works, while also contributing back something useful to the team.
With features, I’d be more cautious. Your schedule is sometimes unpredictable, as you might be getting pulled into meetings unexpectedly, so you can easily end up blocking your team.
If you live in an area where there are coding schools / community-driven mentoring sessions around you, and you have the time to attend, I’d give that a try! Depending on the format, it can be teaching or pair programming, with a lot of explaining on why things work in a given way. To look for mentoring events, give meetup.com a try!
It also worked great for me to work on open-source projects either as a maintainer or a contributor. Back at my days at Godaddy, I’ve started Terminus, a Node.js library dealing with graceful shutdowns and health checks, and I’ve kept maintaining it ever since. It is a great way to stay up-to-date with both Node.js and Kubernetes through incoming pull requests and issues, as the library build on those technologies.
If you’d like to do something similar, but you don’t have a project, I’d recommend searching for the labels “help wanted” or “good first issue” on GitHub to get involved with a project. To stay with the example at Node.js, you can take a look at the issues labeled with “good first issue” using this link.
Depending on what flavour of engineering management you are practicing, you may have the chance to work on code once in while. If you do, keep in mind to pick tasks that are small and not time sensitive, so you won’t block your team.
Did I miss anything? What are you doing to keep in touch with coding as an engineering manager? Please let me know in the comments below!