I’ve got this theory about what it’s like to be a manager and what it’s like to be a developer and which role suits a particular individual best, and I think it explains pretty well why I deeply, profoundly hate the former and dearly, truly love the latter.
A few years ago, the company I work for decided that I was such a good programmer that I had to stop doing it immediately. I was now to tell other programmers what to do, using all the social delicacy and interpersonal self-confidence I’d built up over two decades sitting in a dark room and staring at a monitor. I was being promoted into management.
There are lots of stories about programmers who faced the same promotion that I did and were smart enough to turn it down. I turned it down, too, the first time the offer came. The second, though, came a few months later and with significantly more urgency — if you want to actually go anywhere at this company, bub, it’s probably best to stop declining what we think of as a compliment. OK, fine. I’ll take your damned promotion and nicer office and staff and crap. Fine.
And a year and a half later, I was so despondent that I finally worked up the courage to issue an ultimatum: I get a demotion or I walk. That was a fun talk. I had to have it two or three times, which isn’t usually how ultimatums work. The idea of actually sliding back down the org chart is not a notion that makes sense to the people you have to demand it of. But if you’re patient and throw in phrases like “utility curve” and “return on investment” into the inevitably rambling, discursive rant, you can get them to some minimal level of understanding: You don’t want to be like them. Middle management isn’t everybody’s goal. Upper management either.
And so I actually got my demotion. I was a programmer again. Or I was for two months, before my new boss left and I was moved into his job. Managing three times as many people as before.
I’m a goddamned walking example of the Peter Principle, people! What does it take to see that?
I really did try. I gave it an honest shot. But I simply don’t like the work. I can fake it OK, but a lot of it is tedious and some of it is gut-wrenching and more often than not it’s unpleasant. It’s not something that comes naturally. It takes effort, not only to do the work, but do to the job. I don’t have the mindset.
During the year that I’ve been a manager again, I’ve been thinking a lot about this, about reasons beyond the simple fact of the responsibilities that I don’t like the job. I mean, since I’m a programmer, I should be able to come up with an algorithm to explain what’s going on here, right? (The simple fact that I wrote that last sentence actually goes a good way towards explaining why I shouldn’t be a manager, but social dysfunction is another post.)
So here’s my theory: Managers must work shallow and wide, while programmers must work narrow and deep. People who are naturally tuned to one particular method of work will not only enjoy their jobs a lot more, but be better at them. I’m a deep guy, I should be doing deep work.
I didn’t say it was a particularly insightful theory.
Say you’re given a group with ten projects, each of which has ten significant types of work, across both management and technology — client interaction, scheduling, front-end interface, business logic, whatever. The further down you dig, the more specific, complex and stand-alone the work gets. The more integrated it is into other work on the same project.
Here’s a manager’s workload:
And here’s a programmer’s:
The manager must be involved with each and every project, but at the highest level. He doesn’t care about the race condition that’s plaguing the project three levels down, he just cares what the impact on the schedule is going to be. And when he gets that information, he gratefully moves on. He gets to talk to a lot of people, and go to presentations and say “we” when listing progress, and assemble the stakeholders at the steering committee to gain consensus to move forward. Digging in isn’t what managers do. If they do, they’re micromanagers, or “assholes.”
The programmer, though, wants to be involved deeply and profoundly in just a few projects — he wants to own them, top to bottom. Maybe it’s a whole program, or a single feature, or some underlying library. Whatever. He wants to live in it, neck-deep. He has to worry about all — literally all — of the obscure technical details that make computers go. Jumping between projects — context switching — is a great way to burn a programmer out, because the cost of unloading one project from his head only to load up another one is enormously high. The idea of switching between two projects in a day, much less ten, is not only exhausting, but depressing.
Some people are naturally wide, some people are naturally deep. But the assumption is, in most business contexts, that you can — and should want to — jump between the two as the need or situation dictates. But this is a load of crap.
My personality — like most programmers — is almost preternaturally tuned to deep, extended concentration, hopefully without the interruption of, y’know, other human beings. The idea of coming into work and attending meetings all day — talking to people — leaves me depressed and surly. I’m sure that the notion of being locked in a room with nothing but a keyboard and a monitor makes natural manager-types itchy as well.
The point of all this is that the intersection of someone’s predisposition and personality and the duties of their job is vastly important, and far too often ignored. I’m a good programmer because I’m a bad manager. If I were a good manager, I’d probably be a terrible programmer. I’m not saying that being a programmer is better than being a manager, just that it’s better for me. Somewhere out there, there’s an unhappy programmer thinking to himself, “Well, gosh, what we really need to do is really organize this work, and talk about it, with everybody who might ever conceivably be involved. Oo! My status report needs doing!”
It’s not a question of “rising” from one to the other — though the promotion track, unfortunately, often goes this way — it’s a question of finding the job that fits best, where you’re going to be most valuable and comfortable, and then running with it, running like hell.
It’s taken me too long — far too long — to realize this, because it’s hard to look at the accepted progression of things and realize that it doesn’t fit. I don’t want to be a manager. It’s not what I’m good at, what I find satisfaction in. The trick now is fixing the situation.
I’m afraid it’s going to involve talking to people.
Hi there! My name's GREG KNAUSS and I like to make things.
Some of those things are software (like Romantimatic and Buzz Clock), Web sites (like the Webby-nominated Metababy and The American People) and stories (for Web sites like Suck and Fray, print magazines like Worth and Macworld, and books like "Things I Learned About My Dad" and "Rainy Day Fun and Games for Toddler and Total Bastard").
My e-mail address is email@example.com. I'd love to hear from you!