As someone who has been working as a software developer for five years since graduating, the claims made by this article are completely contrary to my personal experience. Finding good developers is hard. We spend months trying to hire for positions, sometimes interviewing dozens of people, before we find someone. And we pay well, use modern technologies, have a great group of existing developers, and don't expect anyone to work more than 40 hours a week.
If you are a GOOD developer, the opportunities for you are endless. And the bar for being a "good" developer is NOT very high relative to the range of abilities found among all software developers. Even horribly incompetent developers do not seem to have much trouble finding work (they do have trouble finding work at this company... usually).
I think the reason why roughly one third of "computer and information science" graduates aren't working in their field is because they themselves chose not to work in this field. The work isn't for everyone. I know quite a few people who majored in CS, were able to grind through it to get their degree, but can't stand the thought of doing this for a career. Their motivations for going into the field out of high school vary, and many are misguided, but how can you really hold a 17 year old to making a 40 year life decision?
We need more good developers. If we were allowed to hire more international developers, I can tell you we would not hire one crap developer "because they are cheap." A crap developer does not just do less quality work than a good developer, they do NEGATIVE work that costs the company more than the salary difference between them and a good developer.
From a self concerned strategic standpoint, the U.S. should use the opportunity of immigration reform to steal good developers from other countries. We are a country of immigrants, and immigration will always be important to us. Let's use it to capture the best and brightest from the rest of the world. That is how we stay on top.