Tyler Cowen asks why pay differentials in software development do not reflect the large differences in productivity across developers. James Kwak gives what would have been my answer.
the way salaries are set at companies. At a high level, they are set by management teams, headed by a CEO (who is rarely a former developer), and supervised by a board of directors. The people making these decisions do not understand the nature of software development
The challenge in an organization is to link business knowledge with software development skills. Pure coding ability is not useful if it is employed on a bad idea. Tyler's example of a good developer is someone with business knowledge. So, if the suits do not understand what geeks do, that is problem. But if the geeks do not understand the business, that is a problem as well.
One is tempted to demand that CEO's be experts in everything. We have seen what happens if bank CEO's do not really understand mortgage security valuation. If they do not understand software development, they can really mess up there as well.
It is not possible for CEO's of large organizations to have enough knowledge to oversee every aspect of the organization. Either they have to be really good at subdividing responsibility or they need to limit the scope of their businesses. Limiting scope requires humility, a trait that is not selected for in the process of filtering business executives.