“Don’t You Miss Programming?”
Why I wouldn’t want to go back being a developer
It’s the first thing people ask me when they find out that I used to be one of them. “Don’t you miss it? I hear you were pretty good, why did you switch to management, did they force you?”
Good question. Here’s my story.
How did you get here?
I started programming when I was 9. At the time of this writing that is 24 years ago. By the time I got my first “real” job, I already had a fair share of programming experience under my belt.
Then, after my PhD I was lucky enough to get my first industrial job at Cloud9 IDE, where I developed the language intelligence features of the IDE (in practice: parsing JavaScript, semantically analyzing, providing accurate code completion etc.) Pretty hardcore technical stuff. I did that for a few months, but got discouraged.
I was building super cool things (in my highly subjective opinion), but the IDE as a whole was very unstable. It crashed constantly. You can build the most amazing refactoring support in your IDE, but if you cannot rely on the system being up — would you use those features?
So, what did I do? I complained. And what happens when you complain in a start-up? They ask you to fix it.
So, I became responsible to stabilize the back-end.
But how?
Approach #1
By working really, really hard. By learning node.js. By learning Redis. By learning how to do cloud, and operations. By being on call all the time. By debugging issues in the middle of the night.
It took a while to realize that if I kept going this way, I would burn out quickly. I needed to change my approach to be more coordinating and less hands-on.
Approach #2
I wouldn’t say that a PhD in designing programming languages and implementing compilers is the best preparation for work that primarily involves talking to people. Nevertheless, I got into it. I started to read, and read, and read some more on the topic. I was very lucky to have a very good personal coach at the time, who supported me immensely.
I started to see that if I wanted to scale up my impact, I had to focus on leadership.
One person can only do so much, if you have the ability to convince other people to join you, you can make a real difference. And as your team grows, this naturally leads to you doing less of the low-level stuff, and more of the high-level. And guess what, I found that to be just fine for me. Very interesting, in fact. I moved from programming computers to “programming humans.”
So, over the next months that’s what I started to learn doing. I became responsible for a team of about 15 engineers at Cloud9, as VP of Engineering.
To replace me working on the language intelligence features, I managed to recruit my former PhD colleague — today he is Cloud9’s CTO. Soon thereafter, I also hired an amazing DevOps guy, who later moved on to become CIO at Arduino. Hiring good people is hard, and I was off to a good start.
And that’s how it all began.
Cool story bro’, but I asked if you miss programming…
Honestly, not really because I never really stopped. I still fiddle. I still occasionally implement an extra story in a sprint. I still play with stuff in my spare time. I still read a lot of highly technical stuff about new technologies and play with them. I still spend time doing code reviews, and found doing this in one C
Honestly, I believe keeping up with this stuff makes me more effective at my job as a manager. Rhetorically, people tend to listen more to people they perceive as one of them, and while I’m no longer really one of them, I’m working hard to keep up the “manager we respect because he actually seems to know his tech shit” thing going.
Making a difference
But yeah, I do spend the majority of my time in email and in meetings, and to be honest with you — I love what I do. Sadly it’s become much harder to measure my impact — since there’s no feature I can point to that I developed anymore.
Nevertheless, I get enough signs that indicate I’m making a difference in people’s working life and possibly their careers.
And boy, that makes me happier than any piece of code I wrote ever did.
Some nuggets:
- The atmosphere and attitude of the first team I led at my previous job was probably the best in the department — and the reason really wasn’t that our project was the most technically challenging. We made the best out of it and continued to raise the bar given our constraints.
- The person who succeeded me as a team lead in that team wasn’t exactly perceived a born leader, but during my mentoring really blossomed, and the atmosphere and attitude of the team remains great — last I’ve heard.
- In one project in my current job, people felt meetings they had were a massive waste of time, and just existed to satisfy “management.” I volunteered to try things my way, and in a recent retrospective multiple people shared they felt meetings had become much more valuable for them.
- One person told me privately that he was about to quit, but decided to stay after starting to work with me.
Today, I feel I far exceeded the impact I could have had if I would “just” write code.
A week or two ago our QA pointed out that since I stopped writing code in his project, he no longer had to spend extra time covering my code with tests, because everybody else was doing this themselves already. Yes, we raised quality bar to the extent that I was the one not keeping up.
So, do I miss programming? I’m OK. Don’t worry about me.