I think that Steve989 and Bruce143 have given the most cogent reasons for the problem. One being that STEM does not mean just engineering, but also other disciplines that are less in demand. The other is that companies think short-term.
This latter even has a hyped-up name assigned to it. People actually brag about it. It's called "lean plus," and has many corporate execs up in a twitter, as they tend to get with any trendy managerese buzzword du jour that they create.
The concept of lean plus is that a company should not spend money for things that their customer is not willing to pay for. So for example, you organize the work into different tasks, and then you hire one expert for each necessary job function only. No one is ever idle, no excess fat.
The result is that companies don't have depth anymore. Young grads who should be in a sort of apprenticeship don't much exist now. You get hired on as the expert for some job function, and you're the only one to do that part of the job. Because any other solution would drive up your overhead rates and make you uncompetitive!!
STEM = Science, Technology, Engineering, and Mathematics. In other words it is encompassing of a lot of programs - Chemistry, Physics, Engineering, Biology, Mathimatics, AA degrees in electronic techniques. Outside of engineering, I doubt there is much emphasis in hiring.
As far as education - let me pose a question - how many engineering progtrams are designed to weed out weaker students, early? I took a beginning course, on-line, from a University of California school - it was the most repulsive, difficult computer course I have taken in my life, with nearly impossible asignments for a beginner, including sample code snipettes that were not even in any text. And please note I have a PhD in chemistry, so I am not an idiot.
So, to me, the article has merit in that it considers all of science - and there are not many jobs in the S part of STEM. The education system may or may not be failing us - but like any industry, it has to maintain a market.
Our company experience 2 years ago, looking for c++ programmers, entry level OK if talented, the H1B prevailing minimum wage in Chicago was about 70k(for 3+ years exp),
we got 12 responses on Monster , (WHERE ARE ALL THOSE STEMS?)
the 2 entry level guy, said they did many Java and C++ courses for 4 years BS CompSci, could barely write few lines of code, had never heard of reentrant thread functions and I did not bother to verify veracity of thier college claims,
the others 10 w/ 3+ years experience all needed H1B's and were asking 80k+
WHERE ARE ALL THOSE STEMS?
Good luck finding those STEMS if you are trying to hire
I'm not extremely familiar with the H-1B Visa program, and my industry experience is fairly limited, but I'm wondering if the assumptions made might be skewing how we're thinking about this. For example, it sounds like the assumption is that employees on an H-1B visa did not receive education from a US university, and I didn't think that was the case.
With that, it eliminates option 1 (Training) from the possible answers. And as for option 3 (Cost), I don't think it's an inexpensive process. That leaves one available option -- work ethic. We've reached the entitlement generation, where everyone "deserves" a college education, but nobody wants to put in work beyond it.
Fortunately, this kind of unhealthy arrangement is not open-ended: either an employee gets his green card and is eventually free to go, or he realises that the company is dragging its feet on this proccess, and finds himself another employer where the visa could be transferred (although it is a painful process).
In my case, I got a GC in 3 years and had no obligations to stay. I still work there, anyway :)
I know that a lot of people believe that this is simply a matter of US companies wanting H1B engineers because they can pay them less. Personally I think that is oversimplifying a complex issue a bit. But if that really is the reason, it amounts to reverse offshoring. In fact, it's worse.