Although the number of college graduates increased about 29% between 2001 and 2009, the number graduating with ...with computer and information-sciences degrees decreased 14%.*There are potential market-side reasons these students might be foreseeing the future. We could imagine that all the 'old' industries--banking, airlines, shipping, distribution, law, government,...--have been brought into the desktop and handheld electronic form. The labor demands here out might be more for tweaking than for software architecting, scaffolding, forging.
And the demand for programmers who build programming tools might be declining. Things like DBMS and operating systems, which once cost thousands, are now free and open source for most costumers.
This might be why students are skipping CS school. But I doubt it.
More likely, would-be programmers have already learned more about programming before they reach university than they would while there. Consider a CS major I met at an Carnegie-Mellon function.
Me: "Oh, CS, you say. I do a little bit with computers and software myself. "
"Cool.", she says. "What languages do you use?"
"Oh", she says. And at this point her eyes fall and she looks at me like I have just slipped off the wheelchair into my bowl of Ensure. "We use", she says only half-apologetically, "modern programming languages.
"Java. Have you heard of it?"
This is a CS major at the Carnegie Mellon School of Computer Science, the number one such school in the world. She is cute, small, fragile. I really don't want to break her heart.
Obviously I don't tell the young lady that I tried Java in 1994 and found it to be ridiculously disappointing, even in that olden day.
I do tell her that Ruby is of the lineage of AI languages. SmallTalk and LISP. That it is much more friendly to program. That it makes code beautiful and coders happy.
And that she might give it a try.
So here's the point. If you are 20 and want to write software. Really want it, and at least grew up with a computer nearby. You will have found most of how to do it on your own. You'll have found a group of peers online. Some from Pittsburgh and some from Mumbai. You'll have the full development stack--complete with web server, RDBMS, test tools and IDE--on the laptop you sit down with for lunch.
You probably have a number of web apps to your name, and an action game or two as well. You've animated something with ActionScript. Probably wrote an Android app.
The thing is, those are the software of the present, and near past. So I hope students are learning at school the things they'll need for the future. Like control laws for robots. Feedback loops and systems theory. Natural law.
* Generation Jobless: Students Pick Easier Majors Despite Less Pay