That's an exaggeration. OK, now let me try again: it's not guaranteed that you're able to find a commercially proficient programmer capable of shipping working web applications for $125k. That programmer was once available in quantity, but AppAmaGooFaceSoft have bought up all the supply in San Francisco available at that price, and many prices higher.
People unwilling to pay the new market price for that developer describe this state of affairs as a "shortage."
Graduates of coding schools are wonderful. We should encourage as many as possible to begin rewarding careers as software developers. Most do not yet have skills sufficient to fill the modal position in the software industry. If you were to wave a magic wand and conjure up 100 developers who did, that would be wonderful and you'd be the most popular person in Silicon Valley for a few days, but they'd disappear into the vast, vast demand for people capable of shipping things. AppAmaGooFaceSoft will probably hire ~10k developers this year... like they did last year, and the year before that.
You mentioned you're surprised that there exists demands for developers. AppAmaGooFaceSoft make billions of dollars in profit every month, almost entirely as a direct consequence of their ability to ship software. They have not yet discovered a number of engineers at which they cannot ship more software in more markets. There exist other companies which are using software to nip at the heels of billion dollar industries, and they're also quite capable of throwing 500 developers at a problem that used to require 10,000 people spread across 200 companies.
It's a good time to know how to code.
It's always a salary shortage -- in other words, a shortage of talent for what employers want to pay.
For instance, they pay big money to a recruiter, but then when you get hired you get a hand-me-down laptop from a salesman who couldn't sell anything. They wonder why project A is 6 months late and you show them that you spend 6 months working on project B (a one-off for a delightful customer) and C and D (total loss for business reasons.)
If the talent shortage was legitimate you'd see people applying more controls to the problem rather than bitching about the talent shortage or making up startups to do something about the talent shortage.
Out of that if even a third went into software as a trade there would still be a shortage as software is eating the world and 10% of population cannot fill that void. Upping that numbers comes at the cost of stealing from other trades such and research, medicine and engineering thus fueling shortages in other constrained markets such as medicine.
This does not even account for the guy working at the local gas station who clearly is too bright to be there but under-motivated. If you actually factored those individual out the pool of possible talent contract even more.
Long and short of it, there has always been a shortage and will always be a shortage until software salaries pay to attract that upper 30% away from more lucrative career paths, but doing so will further strain other upper end markets that require the same mental skill sets.
So how do we fix it, in my opinion medicine hold a good example. Developers who are creative by nature tend to not be good at assembly line type thinking and are very prone to meritocracy.
e.g. I know developer A is a good developer I will let him take this and he can get it done. Where developer B is a bad developer so I will ignore him. Meanwhile if we delineated based on ability developer B could take a lower order role say writing unit tests for A.
This works in medicine by having the role of doctor, nurse, medical assistant. There are roles that can be filled by people that don't quite make the cut to be a good developer the problem is management is not that great at delineating development roles and developers (as a generalization) don't suffer fools very well (hell we even go thru massive amounts of effort to try to come up with BS interview trivia and code tests to filter bad developers out).
So what happens is we end up giving very good junior developer C the task of working with A because he has merit. But the dirty secret in the industry is given the pace of change you would be hard pressed to tell a good junior from a senior after a year on the job. So we end up wasting the juniors talent by keeping them artificially repressed in a roll that developer B could fulfill for everybody as a constant resource that provides only the skill-sets they are capable of fulfilling. then we lose that junior because he can make more money jumping ship due to his artificial deflation that does not reflect the reality of his skill set.
If you notice a pattern, the above is a recipe for bad developer B becoming the lead over time, as attrition takes good developers and B is promoted because he cannot find another position based on merits.