It was the end of 2019, and I had been a manager for just over a year. I was leading a small team, with fewer than 15 people. We were well-oiled and functioning smoothly, but there was one feature that customers kept complaining about, and it was way way down the backlog. It was the generation of PDF bank statements. I decided to take a little time and create a somewhat rough, quick version. Two days, tops, I thought confidently.
After two weeks (haha!), I managed to understand the arcane OFX format and shipped a simplistic solution: the customer would ask customer service, who would ask the engineer, who would then hit an endpoint, grab the file URL and send it to the customer support person, who would finally send the file back to the customer. Yikes. As I said, rough version. Since everything was manual, this process led to several errors here and there, but it was enough for customers to use and see if it was working. And it was, but...
At that moment, seeing the happy customers with the new feature, I felt satisfied, but a little seed was planted in my head. A doubt, actually: "Why is it increasingly rare for me to feel like I've done something cool? Something tangible that I'm proud of?".
That bank statement task made me feel the adrenaline, the excitement (or anxiety?) of creating something from scratch. To build something with my own hands and see it reach other people's hands. This is a common feeling among programmers, but as a manager, it had been a while since I'd felt it. And until that day, I hadn't realized how much I missed it.
A year and a half after this episode, I had left management and returned to being an individual contributor (specialist). Not because I considered management work bad or unimportant. On the contrary, I ended up respecting the manager role even more after all that. But it took some distance given by time, a lot of reflection, and a bit of therapy to understand why management work didn't energize me like programming work. So, what happened?
I write the skeleton of a unit test. I add an assertion. In the terminal, the test fails. The code is already open. I add an if statement. The compiler complains. There's a typo in the if condition. I fix it. The compiler is happy. Tests pass. I push the code to git. Pull request opened on Github. A colleague reviews and approves. I merge it. Code goes to production. I notify support: the feature is live. Customers find out, and someone from customer service sends me a quote: "Thanks for that feature!!! It has improved my life a lot!".
This is a typical programmer's flow. Just in this description, there were 7 moments of feedback. 7 signals telling me if I was on the right or wrong path. 7 breaks to breathe and decide the next step.
And, in the end, to top it all off, I receive one last signal that I was done: a happy user with the concrete thing I have done. Everything went well. The task was Done. Completed. Finished. I leveled up. I won. I could indulge in the dopamine rush in my brain for having shipped something into the world. I created something from scratch with my hands and received the reward: it was working, and people liked it.
After completing the bank statement task, I continued my management work. At that time, other doubts began to arise in my daily life: what am I actually "doing"? What relevant things did I do today? What did I do to help the team? What did I do with my own hands?
Rationally, I could answer these questions in completely valid and satisfactory ways. But still, I felt a kind of void, a "meh" feeling: What was the actual outcome of everything I'm doing?
As a programmer, I received dozens of daily signals telling me whether I was on the right track. As a manager, I started to receive fewer signals, and the ones that did arrive were much less clear. In management roles, in general, you increase your impact on the organization. But the impact is much more diffuse. More abstract. It's not an artifact, a piece of code, or a "thing." As a manager, what you're "building" are people, teams, and the organization. And it's much easier to look and grasp at the lines of code you wrote or the architecture you designed than to see your direct influence on people's behavior.
When you mentor a programmer, for example, the real impact is usually not seen in days or weeks. It's usually in months, maybe years. And, over that time, it's not always clear whether the changes observed are indeed your influence and, if so, how strong it was.
For someone full of self-doubts like me, the loss of these signals, these daily feedbacks that continuously validated my work, was devastating. I became increasingly tired, confused about what to do, and, above all, drained of energy.
Returning to being an individual contributor was inevitable. At the beginning of 2021, I became a Staff Engineer and got back many of my beloved signals indicating whether I was doing something worthwhile (do I demand too much of myself?).
In this position, I don't program as much as before, so the signals aren't as instantaneous as they once were. But even if they take a few days or weeks, they inevitably show up to validate my work.
Perhaps my dependence on these signals is due to my anxiety. Maybe it's a difficulty in recognizing the importance of incremental changes. Maybe I just didn't enjoy being a manager. Perhaps I just love coding and building things too much. Or "finishing" them. Just like this text, which I've just completed.
Text ended. Done. Finished. Shipped. Delivered.