OK, ok, I admit. I'm only a slightly above-average programmer. I love writing code, and I know how hashtables work and what mutexes are. But I messed up again this week by triggering a company-wide mail bomb. For the third time. Maybe that's why they made me a manager. I need to escape from having to figure out how to make my code reliable, scalable and secure. Others are much better with that kind of stuff. And it takes me too much time.
Steve McConnell writes about the differences in productivity among programmers. There are lots of statistics available showing us that some people are at least 10 times as productive as others. He even gives an example where Boeing moved 80 people off of a project, replacing them with just one guy who finished all the coding and delivered the software on time.
So, what can a manager do with this information?
Well, I can try to find out who that guy was and ask him to finish all my projects, for a reasonable fee. Though I'm sure that he is already loaded with big projects and big money. Or else he might have been fired for delivering crappy code that killed 300 people in an plane crash. We don't know.
Some authors, like Joel Spolsky and Steve Yegge, tell us to hire only the most talented programmers. "Don't burn your hands on the 95% of software developers that write mediocre code! Hire only the top 5%, the ones who know all about big-O complexity, n*log(n) sorting algorithms, graph theory and NP-completeness!"
Top performers can be a big bonus. But do you build a team around your top performers? Or do you hire top performers that match your team? Our world is too complex for a simple answer. That's why I like it so much. Still, I always feel a bit queasy when people tell me I could have done better as a programmer, and that maybe my company should have replaced me with a top performer. I admit I'm not that good at big-O complexity. But I'm quite good at organizational complexity. And this turned me into a manager and writer. So, if they had fired me earlier, they wouldn't have ended up having this prolific and productive Chief Information Officer. Our company just hasn't figured out yet how to make me stop programming and messing up people's mailboxes.