Thu 24 December 2009 | -- (permalink)
Both Marginal Revolution and Slashdot today are pointing to one blogger's thoughts on why programmer pay doesn't vary more proportionally with programmer productivity. I'm not going to address that blog's points directly, but would just like to suggest that while paying one programmer ten times more than his teammate because he's 10x as productive may seem like a great incentive for that superproductive programmer, I think in reality you would destroy your team's ability to work together effectively.
Software projects of a certain size just can't be built by one person, no matter how brilliant. Once you start needing to coordinate the efforts of several programmers to accomplish your goals, it's essential that those programmers be able to communicate well with one another, to feel free to criticize flaws that they see in each others' work, and to stand up to criticism when they think it's unwarranted. But labeling one programmer as a superstar makes that less likely to happen. Others on the team will feel less qualified to criticize the star's work or to defend their own against the star's criticism.
Perhaps also, the very best programmers are so good not just because of their technical prowess, but also because they communicate well and are humble enough to learn from others.
UPDATE: Ok I said I wasn't going to address the substance of John Cook's post and I'm still not, but I think this bears repeating:
The romantic image of an über-programmer is someone who fires up Emacs, types like a machine gun, and delivers a flawless final product from scratch. A more accurate image would be someone who stares quietly into space for a few minutes and then says “Hmm. I think I’ve seen something like this before.”