Why are there so few good developers?

I don’t think of myself as a rockstar developer. I started programming at a young age, but I’ve only been doing professional web development for the last few years. That said, I’m starting to think that maybe I’m not so terrible after all (which itself becomes deeply troubling once you read about Dunning–Kruger). The reason is that almost everywhere I turn, I hear clients and employers complaining about how they can’t find enough good developers. The people who call me about a job routinely tell me that they’ve been looking for more than a year. And this is in the middle of a recession, when presumably you should be able to swing a stick and hit ten developers. What explains this discrepancy?

A few reasons why there should be more good developers:

Lots of demand
This one drives all the rest of the reasons, but it’s worth considering on its own. There are lots of employers and clients out there looking for great developers to hire. You’d think that this would drive people to school in droves to learn the skills necessary to get those jobs.

Good money
Web developers don’t get paid like doctors, but I know a lot of twenty-somethings pulling down six figures doing development, which is 2-3x the median household income in the US. And some of these web developers don’t even have college degrees.

Flexible working arrangements
I also know plenty of web developers who work remotely (myself included) and often work the hours they want.

Freedom and self-determination
If a client calls with something that I don’t feel like doing or don’t have time for, I can turn it down. If I want to take a month off and go to Greece, I do. Granted, if you have a job, you can’t just do whatever you want, but the field offers so many opportunities that you can often make your own rules far more than in other industries.

Fun, engaging work
Subjective, obviously, but I love the fact that every day I’m sitting down and creating something from nothing. An awful lot of jobs out there are about doing monotonous work that ultimately creates nothing.

Less crap
There’s politics in every workplace, but I feel like the development world is less egregious than the business world. I worked in a mid-size company for a year after college as a product manager and there were definitely more politics and games than I see now as a developer. Developers seem more interested in just getting things done.

Some possible reasons that there aren’t more good developers:

My perception is off
Maybe there are a lot more good developers than I realize and the clients that I’ve run into who have been looking for awhile are just outliers.

Too geeky
Maybe “normal” people see programming as being too geeky and they just aren’t attracted to it, no matter how much it pays or how easy it is to get a good job.

Supply chain delays
It could be that programming is a skill that takes many years to develop and the supply chain just hasn’t caught up. Maybe there’s a tsunami of developers in schools all over the country right now that are about to start pouring into our industry and restoring the supply/demand balance.

Lots of skilled web developers who can’t hold professional jobs
Maybe there are lots of web developers who are technically skilled but they can’t hold down a job for whatever reason.

Good developers start their own companies
One thing I’ve definitely seen that at first glance seems like it would be a contributing factor is that really good web developers often just start their own startups. But on the other hand, that would theoretically create more jobs.

Too hard for most people
I’m not sure how I feel about this one, but maybe programming is just really difficult and the average person simply can’t do it, no matter how much education they receive. Maybe there’s a fixed proportion of the population who can grasp development and the demand is climbing faster than the population, so we’re destined to have a structural imbalance in supply and demand for the foreseeable future.

None of these seem to be sufficient to explain the fact that 3-5 times a week, I get recruiters calling me frantically for a remote job paying six figures and can I start tomorrow?!?!? Why are there so few good developers?