Let’s tell a story through metaphor!
Imagine you are a chainsaw repair-person. Fascinated by the intricacies of the machine, you get lost for hours in the maze of valves, gears and other miscellaneous chainsaw-bits. People bring you their chainsaws, and you fix them. Sometimes those chainsaws have problems so strange and arcane, you impress yourself with the solution. Often, you derive great satisfaction from just knowing what the problem is from the second you lay eyes on it.
Now imagine that, because of your expertise at chainsaw repair, you are handed a set of three actual, running chainsaws. And you are told to juggle them.
Fortunately, you’re okay at juggling chainsaws. Not phenomenal, but you haven’t killed yourself yet, and hey, there’s nobody else around to do the job. You’re the chainsaw guy.
But busted chainsaws continue to come in. So you might understand the beads of sweat on your brow, as you juggle chainsaws, and try to repair those others at the same time.
Fact of the matter is, at least one of those jobs is going to suffer. Actually, both are.
And this is where I pull the curtain back on the metaphor. Because with a lot less drama, I’m turning into this guy, and I doubt I’m alone.
Programmer, Meet Chainsaw
The life of a programmer is not well understood. I think of it best as something like a chess player, or a puzzle solver. A programmer finds solutions to problems, and he or she does it by thinking very deeply. If you watched a programmer work, you’d see someone stare at a computer for long periods, type a few lines, stare… delete those lines… stare….
Programming isn’t a spectator sport. For example, this scene from the otherwise unremarkable movie Swordfish is perhaps my favourite depiction of what programming is not like:
For example, there’s not enough swear words.
One thing Hugh Jackman’s character does get right here, however, is being left the hell alone. That’s when a programmer can actually get work done. Any interruption is devastating on their time — this is a phenomenon well established, but perhaps best explained by Paul Graham.
When a programmer is interrupted by a non-programmer for a “quick chat”, or a request to “jump onto this quick phone call”, their productivity is getting pantsed for a certain multiple of that time. The focus that a programmer needs to accomplish their job is scattered by unrelated concerns, and the time it takes to get that focus back is real.
So what happens when that programmer, gainfully fixing chainsaws, is told to now start juggling them? It’s the Peter Principle at work: a perfectly-functional person is promoted to manage other programmers. But that programmer must continue programming.
How the hell can he do either job well?
In my opinion, a manager of programmers has one vital role, a top job, if you will: to ensure that the programmers have the right conditions to do their work. To do that, the manager has to run interference to the rest of the business looking to get the programmers’ time. So as a manager, you need to become the gatekeeper for feature requests, bug reports and customer interaction. As a programmer, all that shit is toxic to your productivity.
I feel like the problem is a slippery slope: once a programmer takes on team responsibilities, the slide towards management is inexorable. Because once you voice your concern that you can’t do your programming job with all these damnable interruptions, the solution is clear: hire more programmers for you to manage! And like a jail cell door slamming, you are now fully a manager.
I call out now to my friend Farley, a project manager in the Java world by day, and an iOS developer (and Clojure fanatic!) by night. When we talk about that transition from programmer to manager, we both recognize the deep sense of loss. It reminds me of the malaise that strikes at the heart of Jim Kirk in that masterpiece of cinema, Star Trek II: The Wrath of Khan. It’s a coming of age story for a man late in his career.
Kirk has been promoted to management, made an admiral when he is happiest as a captain. And his friend Bones calls him out on it in this turning point scene in act one:
“It’s about you flying a goddamn computer console when you want to be out there hopping galaxies!”
Putting down the chainsaws
At this pivotal moment in a career, you have a choice: put away your tools, or put down the chainsaws. Embrace management, or be a programmer.
My current situation demands I juggle those chainsaws for a while longer, but it’s important to recognize what you’re doing, and remember what you’re meant for. Until that day comes, me and Farley, and if my guess is right, so many of you, will plan, and will set our hearts on a way to take back the keyboard.