1 - virtually no supposed 5x or 10x programmer makes even 2x more. If people are really 5x, why on earth don't I see $300-$500k salaries? Particularly given the fall in communication costs ala Brooks, it would be an enormous win for employers
2 - at least in the bay area, there would be tons and tons of highly qualified candidates if moving to the bay area wasn't a financial nightmare (cost of living is horrific and the pay doesn't come anywhere close to making up for it); and if buying a decent 3 bedroom home and having kids didn't nearly require winning a startup lottery -- or at least enough for a good downpayment to get to a conforming mortgage.
3 - I'm in my 30s, and in my cohort of developers I know a number (all of them very skilled and in high demand in the bay area) who have moved to the midwest or austin because financially they're so much better off
4 - the majority of complaints about unavailability of developers, particularly in the bay area, are after the fact justifications to (1) cover employers not paying salaries commensurate with the cost of living, and (2) the ability to import (cheaper, more easily controlled) h1b labor
4a - with a side of companies ducking their responsibilities to america, the state they are in, and their communities to help create the employees they need. Now obviously I don't think 1-4 person startups have any such responsibilities, but somewhere between that and google/fb/hp companies have responsibilities to their communities and countries that bay area companies in particular almost completely duck. For example, why isn't facebook or google, in lieu of whinging about difficulty hiring (while illegally restraining wages, ain't that beautiful) running hacker schools themselves? It couldn't be because they'd rather let someone else pay for it and cherry pick the winners (saving money two ways)?
Small sample size. These types of developers are very few and far between. I worked with one that I keep in touch with and he is making somewhere between 400 and 500k at his current job. His output of good code was pretty amazing to see. He did manage to produce the work of 5 average Bay area engineers consistently.
Some reasons you don't see higher salaries:
1. It's very hard to measure the difference in programming ability directly. Good programmers also tend not to realise just how much better they are, and are generally unwilling/unable to demand higher salaries (not because they're programmers, but because most people by default aren't good at these things.)
2. Good programmers tend to cluster around good companies, one of their advantages being that they're surrounded by people at their level. Think Google, Facebook. Over there, if everyone is as good as you but making the same as you, then you don't feel there is a disparity.
3. Some programmers DO make 300-500k. You just don't hear about it.
4. More importantly, some people make 300-500k in roundabout ways. E.g. some great programmers work as freelancers and make that amount, because that's one way to solve the problem of companies being unwilling to pay so much more.
5. Some programmers with more business-fu start consultancies and startups, making lots of money that way in a non-obvious way.
If there was really a shortage you'd see salaries for programmers going up. Instead there are documented cases of companies colluding to keep pay down. Based on the high salaries you could argue that America has a CEO shortage and needs to increase visas for foreign CEOs.
Because it's much easier to measure performance of CEO's, at least artificially. If Google does well, then you (supposedly) know that Larry Page is doing well. That's how the market treats it, at least. But can you really tell me that you're able to tell me which of the 10's of thousands of engineers that Google has is responsible for that success?
Also, there's the issue of leverage. Just like a programmer can build software that is used by millions, and therefore has a lot more leverage and creates more wealth, so a CEO usually influences even more customers than the programmer. Paul Graham has an article about exactly that - the idea of a startup is to give e.g. programmers a lot more leverage than they usually have.
And arguably, the fact that a few engineers can build WhatsApp and earn billions is an example of that in action - getting more leverage by building a company, proving success, then gaining the money it gives. But the average exceptional programmer, while being 10X better at programming, won't necessarily also be better at business or money generation, etc.
Lastly, the fact that there are cases of companies colluding to keep pay down proves the opposite of your point - that salaries should have been even higher!
Originally I wrote a much longer reply but after re-reading it it came across as much more anti CEO compensation than I intended. I don't view short term market movements as an accurate reflection of company or CEO performance. If you willing to use easy to calculate but broken metrics I can supply a few for programmers. How about lines of code? This also ignores under performing executives getting big salaries and severance packages. No one is going to pay me millions if I get fired.
"And arguably, the fact that a few engineers can build WhatsApp and earn billions is an example of that in action"
I view employment at a startup like buying a lottery ticket. Someone is going to get a large payday but that doesn't mean they're better than someone that doesn't get one. Even with the possibility of a big payout your expected return is pretty low.
I think I stated the collusion argument badly so let me try again. If you're in charge of a major corporation and experiencing a talent shortage would you tell your HR department to exclude a large portion of the local candidate pool? That's what those companies did.
What is clear is that, assuming CEO's do affect the value of a company significantly, they'll tend to affect it much more than even the best programmers, especially at a company the size of Google. That's just an issue of leverage. So a (possibly semi-broken) method of judging whether you made billions for the company will still spit out compensations of millions.
As for startups, I was talking specifically about the founders, not employees. And yes, I agree that startup's succeeding, at least on the Whatsapp scale, is very similar to a lottery. But smaller startups/consultancies can make much more money for the programmers who start them, who have skills that the market cares about more than just programming well.
What you're describing as a great programmer is the equivalent of a chef in the kitchen, what you're describing as good programmer is a talented amateur cook, and your medium programmers are ordinary people that can cook an edible meal.
We have a shortage of professional developers, and a huge number of people who wouldn't get hired if they had the same skill level in a profession where there wasn't a shortage.
We've put lots of meat in seats to compensate for the shortage of mature, professional developers. Meat that can get away with incredibly immature, irresponsible and unprofessional behavior because, hey, who else are they going to get?
Fuck me, the ones that manage to build only slightly more shit than they break already get labelled "decent" programmers.
And it's self perpetuating, because if you combine the amateur playgrounds of most software departments with the systematic wage suppression you create a career perspective anybody with any sense would steer clear of.
With all those clowns calling themselves programmers, and the rest of us being tarred with the same brush, who the fuck wants to be a programmer when they grow up?