It's fairly well recognized that some programmers are up to 10 times more productive than others. Joel mentions this topic on his blog. There is a whole blog devoted to the idea of the "10x productive programmer".
In years since the original study, the
general finding that "There are
order-of-magnitude differences among
programmers" has been confirmed by
many other studies of professional
programmers (Curtis 1981, Mills 1983,
DeMarco and Lister 1985, Curtis et al.
1986, Card 1987, Boehm and Papaccio
1988, Valett and McGarry 1989, Boehm
et al 2000).
Fred Brooks mentions the wide range in the quality of designers in his "No Silver Bullet" article,
The differences are not minor--they
are rather like the differences
between Salieri and Mozart. Study
after study shows that the very best
designers produce structures that are
faster, smaller, simpler, cleaner, and
produced with less effort. The
differences between the great and the
average approach an order of
The study that Brooks cites is:
H. Sackman, W.J. Erikson, and E.E. Grant, "Exploratory Experimental Studies Comparing Online and Offline Programming Performance," Communications of the ACM, Vol. 11, No. 1 (January 1968), pp. 3-11.
The way programmers are paid by employers these days makes it almost impossible to pay the great programmers a large multiple of what the entry-level salary is. When the starting salary for a just-graduated entry-level programmer, we'll call him Asok (From Dilbert), is $40K, even if the top programmer, we'll call him Linus, makes $120K that is only a multiple of 3. I'd be willing to be that Linus does much more than 3 times what Asok does, so why wouldn't we expect him to get paid more as well?
Here is a quote from Stroustrup:
"The companies are complaining because
they are hurting. They can't produce
quality products as cheaply, as
reliably, and as quickly as they would
like. They correctly see a shortage of
good developers as a part of the
problem. What they generally don't see
is that inserting a good developer
into a culture designed to constrain
semi-skilled programmers from doing
harm is pointless because the
rules/culture will constrain the new
developer from doing anything
significantly new and better."
This leads to two questions. I'm excluding self-employed programmers and contractors. If you disagree that's fine but please include your rationale. It might be that the self-employed or contract programmers are where you find the top-10 earners, but please provide a explanation/story/rationale along with any anecdotes.
I thought up some other areas in which talent/ability affects pay.
Financial traders (commodities, stock, derivatives, etc.)
designers (fashion, interior decorators, architects, etc.)
professionals (doctor, lawyer, accountant, etc.)
Why aren't the top 1% of programmers paid like A-list movie stars?
What would the industry be like if we did pay the "Smart and gets things done" programmers 6, 8, or 10 times what an intern makes?
[Footnote: I posted this question after submitting it to the Stackoverflow podcast. It was included in episode 77 and I've written more about it as a Codewright's Tale post 'Of Rockstars and Bricklayers']
It's probably unfair to exclude contractors and the self-employed. One aspect of the highest earners in other fields is that they are free-agents. The competition for their skills is what drives up their earning power. This means they can not be interchangeable or otherwise treated as a plug-and-play resource. I liked the example in one answer of a major league baseball team trying to field two first-basemen.
Also, something that Joel mentioned in the Stackoverflow podcast (#77). There are natural dynamics to shrink any extreme performance/pay ranges between the highs and lows. One is the peer pressure of organizations to pay within a given range, another is the likelyhood that the high performer will realize their undercompensation and seek greener pastures.