Greg Knauss has a theory on why developers often make poor managers. Here’s a snippet:
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.
Interestingly, I usually prefer “wide” to “deep” but I’m mostly a programmer. That said, I know exactly which kinds of projects suit my talents and which don’t, and try hard to avoid those that don’t.