In 2018 I chose to become an engineering manager. It was clear to me that good teams, like good code bases, require constant work. Only, I wasn't just interested in shaping my team. I wanted to influence how the company worked in general, all with the top-level goal of creating a good environment for myself.
I started getting involved in hiring, sales pitches, writing offers, strategic meetings and everything else that makes a software agency tick. Simultaneously I was on multiple client projects, leading one or two myself.
Unsurprisingly, focusing on anything for more than 2 hours became impossible. I somehow adapted and this is how I've been working ever since.
Why I'm writing this
I can't pretend that there is some wisdom to glean. Rather, I want to record where I stand after a few years of working in such a scattered way. I hope to reflect on that in the future and see what has changed.
Facts and feelings
These may not be all be true right now, but have occurred at various times.
- It feels like I have very little time during a given day, yet I sometimes don't remember what I've done by the end of it.
- I get interrupted a lot and I'm often multitasking.
- I spend 4-5 hours per week in 1-on-1s and 3-6 hours on other regularly scheduled meetings.
- I review between 50 and 100 pull requests a month according to GitHub.
- People say "I know you're busy so I'll try to not take too much of your time". I'd much rather dedicate time to them than the dozens other things on my list that I have to do alone.
- The term "glue work" describes a lot of what I do.
How I still get things done
I knew in theory about the benefits of breaking down tasks. Now I also do it because of necessity. I try to make everything achievable in small chunks. For example:
- I encourage developers to make smaller pull requests that can be reviewed in only a few minutes.
- Most of my writing happens in 3 phases, spread from hours to months apart: i) notes captured as quickly as possible, ii) fleshing out the text, iii) a final edit and review.
- I deliver improvements to projects in tiny steps. That aligns well with my development philosophy and is easy to do with feature flags.
I still reserve time for learning, thinking and experimentation, though mostly outside normal work hours. Because of that I am careful to invest in learning what is interesting and useful to me. If it also benefits my employer, I record the time spent as work time and use my training/education budget.
Whether with normal work or experiments, my plans are often ahead of the execution and I don't have time for everything. That forces me to make a compelling case for my ideas and get other people to help.
What I want to change
I am doing some of these already, but I'd like to go further.
- I'd like to get better at delegation.
- I hope that by spending more time on documentation, I will spend less time on repeating myself.
- I want to take more time to mentor others, even when it doesn't "scale", because I really like teaching.
- Generally, I want to make myself replaceable, so that I can focus on what matters to me.