I'd be willing to take either side of a debate for "is there a shortage of people who, when given tight specifications for a piece of software (write a function that takes X as input and provides Y as output) that enumerates all of the corner conditions can produce a program in a language that they are familiar with."
At the same time, the "person who can work with the business user on the software, think about the architecture of it, identify the design necessary, come up with the estimate that actually matches the time frame that it will be done in with a reasonable error... and produce software that takes X as input and provides Y as output while being aware of where the edge conditions may exist and ask for clarification on how it should work"... I believe there is a distinct lack of that portion of labor.
Furthermore, there is also a lack of people who are able to move from the first labor pool to the second, and a lack of mentors who have the time and ability to help that group move to the second.
I don't think its incredibly difficult to hire an entry level person as long as one sets the bar low enough and has people within the origination who are capable of providing the design. On the other hand, it is very difficult to find the people who can give the necessary instruction to the entry level people to allow them to become productive within their ability.
As an aside, I also find that within the entry level group... there are a sizable portion that have the attitude of "I learned language X and that was hard enough, I'm going to stick with it and not learn anything else." That X can be found for all languages and none have the monopoly on it. However, it is disconcerting for me to see those individuals... I started out as a C programmer, and then Perl (full stack web - some JavaScript in there) and then Java (enterprise), and then Java stand alone (swing application)... and while I'm still a Java programmer, I can see other languages looming on the horizon. Java will become the COBOL, and while there are still COBOL programmers out there, its not something that one wants to get stuck in for another two or three decades waiting for that last app server to be turned off before they can retire.
----
At the "anything past entry level", I still find that the number of qualified applicants drops off substantially. For entry level, the applicant pool is very, very large. I am now despairing that many of that pool don't have the necessary skills to move beyond following someone else's design.
> and while I'm still a Java programmer, I can see other languages looming on the horizon. Java will become the COBOL, and while there are still COBOL programmers out there, its not something that one wants to get stuck in for another two or three decades waiting for that last app server to be turned off before they can retire.
I don't think this will neccessary be the case, Java is far from being in maintenance mode. It looked like it would be some years ago but there now is a lot modernization going on, both inside the language itself and inside the ecosystem. Maybe it might loose its top position, who knows, but I don't see it being practically dead anytime soon.
Sure enough there will definitly be those weired "COBOL like" enterprise things building on top of all of the bad ideas from the early Java days which stay forever and which nobody not already familiar with wants to touch for good reason.
That does strike me as odd back when I was in my second year of work (no degree) - I came in one day and my boss told me ok we have brought a bleeding edge piece of tech that cost 3x my salary.
"Go hook it up to that PDP get it working and go an talk for Brian and work out with him how to use this to digitise the 3d droplet cloud his experiment is producing.
It didn't even come with a cable just a 20 sheet photocopied technical manual.
Oh, there is. You can have saturation in the field, and employers having trouble finding people, at the same time.
Real world analogy: When I was trying to renovate my place, I had to look for contractors/carpenters. All the good ones are overbooked for 4-6 months out, many only take referrals and won't even talk to you otherwise. At -the same time-, a bunch of contractors I called said they retired or changed field because there was no job and business sucked.
Software engineering is heading a similar way. The barrier for entry for "I know how to build an app" is very, very low. But the "skill ceiling" is very, very high. There's a ton of positions, but when anyone can self teach or do a quick bootcamp and get in, well, there's a lot of competition for these jobs. At the higher end though? There's also a lot of jobs...but competition is non-existent.