I work for a company that just did a round of hiring for Support Engineers in the Valley. For this job, we require a decent working knowledge of Linux (or relevant *nix), basic scripting, and case handling skills. There were other, more specialized skills we also looked for, but competent Unix driver would suffice. We don't need hardened sysadmin, just people who aren't helpless when they see #. Sounds easy, right?
This was the first time I interviewed candidates. We went through piles of resumes to weed out candidates that weren't a good fit (no Unix/scripting/etc) and then started interviews.
I was honestly stunned at by the sheer number of lies on resumes. Candidates would advertise "5+ years of Linux experience" when in fact they had zero Unix skills. They couldn't name 10 Unix commands, let alone how they were used. Out of 300 candidates for 8 positions, we got 3 usable hires - out of Silicon Valley! The talent shortage wasn't due to salaries - we were offering decent money, even considering west coast cost-of-living. The candidates we got weren't even as talented as I would have preferred, but they were usable, and trainable.
I can't excuse the tactics immigration attorneys are using to stuff cheap H1B visas down our throats - we've seen too much of that already. I see the job postings with "Requires 20+ years of Linux experience," "15+ years of Java experience" - for 40K. H1B visas need to pay actual, prevailing wages, and they certainly don't now. That garbage needs to be stopped, now.
The talent shortage might be due to any number of external causes, but it certainly does exist.