As in any intellectual profession, the productivity of individual programmers varies wildly. Some say the time needed to solve a particular problem can vary with a factor of forty–or even a hundred!–from one software developer to another. And that is assuming they are all capable of solving the problem at all. I do not know which number is true, or how common the extreme cases are, but I do believe they vary a lot.
So, assuming programmer productivity really does vary that much, what does that mean for the people at the ends of the spectrum? Let’s focus on compensation. I don’t know about other countries, but here in Sweden salaries for software developers don’t vary with a factor of forty or a hundred. No company would pay a programmer twenty times as much as his coworkers, even if he made twenty times as much money for his employer as the average guy. That means the most productive people will never be paid what they are worth, unless they start their own business.
Take Niklas Zennström as an extreme example. He and a partner founded both Kazaa and Skype together, companies that made them billions of dollars. What would their fortunes look like today had they stayed employees?
My conclusion is that if you aim to become a top achiever, you should also start planning for running your own company. Once you are able to produce forty times as much as your colleagues you probably should not be there any more.
It is not only about money–it is about being allowed to use your skills to the maximum, too. I imagine that the more productive you become, the greater the risk of you being held back by bad management or processes becomes.
As for the people at the bottom of the productivity scale, most of them are probably just young and inexperienced and will soon improve, if they care to.