John D. Cook explains why programmers aren't (pretty much ever) paid proportionally to their productivity, even though some are vastly more productive than others:
Programmers are most effective when they avoid writing code. They may realize the problem they're being asked to solve doesn't need to be solved, that the client doesn't actually want what they're asking for. They may know where to find reusable or re-editable code that solves their problem. They may cheat. But just when they are being their most productive, nobody says "Wow! You were just 100x more productive than if you'd done this the hard way. You deserve a raise." At best they say "Good idea!" and go on. It may take a while to realize that someone routinely comes up with such time-saving insights. Or to put it negatively, it may take a long time to realize that others are programming with sound and fury but producing nothing.
Of course, there is one profession where super-productive programmers can make money proportional to their skills: running their own businesses. This is true for both services and products businesses: extreme productivity rewards the business, which in turn rewards the owner. If you are extremely productive, then the natural move is to directly link your income to your productivity, instead of letting it pass through countless middle management and corporate filters which are designed to encourage consistent, rather than exceptional, productivity.
The downside is that in order to successfully do that, a programmer will need to become much more than a programmer: being an entrepreneur is not the same thing as being a programmer - nowhere near. It can be much more financially rewarding (not to mention provide a much more flexible lifestyle), but it is another skill set to learn, and like any non-trivial skill set, it will take a number of years of practice to fully absorb.
If you read this far, you should follow me on twitter here.