These are excellent points; but there are others that impact on the discussion that fall completely outside them (or could be "stealthily hidden in one) — let us consider entry level Computer Science jobs: most postings require at least 2 years experience with the particular software/OS/tools being used… I've seen even 5 years required for an entry level job.
Given that many graduates leave college with loads of debt, they're in a big pickle: they need experience to get a job in the field, but they need a job in the field to get experience. I've heard that this is the result of companies wanting to get more H1B-visas/foreign-hires, which they then can use to (a) write off taxes, and/or (b) not pay the actual worth/salary of the position.
I think that this is totally overblown. My whole career was in IT, and I had zero formal training in computer science. I've hired many, many IT workers, and degrees meant nothing to me... in fact, I tended to shy away from the CS majors as I found them to be inferior to others.
We keep hearing about the H1B visas and the lack of "talent"... but these stories are only coming from the biggies like Microsoft and Google. The reality is that nearly every company in existence in this country needs IT people, and many of those workers are folks who are self-taught, or just happen to have an aptitude for computers and programming.
If someone likes working with computers, and is willing to put in the time (which often times means being on call and putting in one's spare time to learn new things), then they can make a great career with computers.