Computer Science (CS) was whooping it up big-time during the dot-com mania -- everyone and their brother/sister wanted to be a programmer. CS enrollment soared because students clearly saw the field as the road to riches. You couldn't turn around without hearing about yet another 18-year-old millionaire. Everyone older than 18 became jealous enough to open The C Programming Language by Kernighan and Ritchie -- at least until they started to read it.
The dot-com bust put the kibosh on the CS mania. After soaring to the heights, CS was in the depths. But that's not enough of an explanation for the persistent out-ness of CS these days.
The revamping of CS programs
There's a lot of debate about whether CS is too tough for today's students (see Alice for example). I've been associated with a technically-oriented course at Cornell University, and I've seen firsthand that students are dramatically less prepared than they were in previous years.
The failure of student preparation is a big topic at teacher conferences. Whether it's from the self-esteem movement or the conversion of schools from primary education halls to primary discipline tanks, this is a real effect. Throughout the past 10 years, the course I mentioned had to drop more than 40% of its content to keep the same grade distribution due to students' lack of preparedness.
CS programs have responded to this trend, and there's little doubt that CS curricula have been watered down significantly in the last decade or so; this gives the curmudgeons much to gripe about. While the CS of old went its own way, often lofting itself into the most recondite of mathematical excursions (we've lost some high-flying topics such as advanced pointer theory), the CS program of today has become much more applied. I think this is great.
Don't get me wrong: I'm not for getting rid of mathematical and technological rigor -- far from it. But when that rigor becomes an end unto itself, that's a problem. When you find that your latest CS problem set calls for you to write a "compiler compiler" (i.e., software that creates abstract compilers -- and, yes, this is a real example), things have gone too far. For too long, CS was floating in the academic clouds, detached from mere concerns such as code optimization, speed of execution, or using languages that 99% of employers actually wanted you to use.
It should be lauded that CS is coming back to Earth. You actually stand a good chance of being trained in something you can use on the job these days. So why hasn't that helped slow the exodus of students from CS programs?
The misperception of outsourcing's effect on programming jobs
You'll find the real answer if you spend some serious time with corporate programmers, which I do. It turns out that there's widespread despondency out there among many pros working for Fortune 500 companies. The bugaboo can be summed up in one word: outsourcing.
If I had a nickel for every corporate programmer who told me that they wish they had gone into any field other than programming, I'd have -- well, a lot of nickels. The general feeling seems to be: "How can I stake a career on a job that may be gone tomorrow?" And that's what's affecting potential CS students as well.
I used to teach classes of 400 to 500 students in the hard sciences at Cornell, and I would sometimes ask them if they ever considered other disciplines. The most common objection to CS was just that outsourcing = death.
Well, the rumors of CS's death have been greatly exaggerated. The real problem is the pendulum of perception has gone too far. Yes, outsourcing is a problem, but it turns out that it's not a catastrophe. Many U.S. companies don't want to take out detailed contracts with a consultancy in Mumbai -- they just want someone to do their programming. And they're willing to pay for it. As a result, there's a shortage of qualified, experienced programmers in the United States, as anyone on headhunters' e-mail lists (and therefore keeps getting daily beseeching e-mails) can attest to. If I were tempted to live in New York City, it would be pretty easy for me to pick up a job that paid $100 per hour or more.
All this gives me hope that the two sides of the equation -- U.S. programmer supply and demand -- have become roughly balanced, with a deficit on the supply side. Potential CS students have yet to cotton on to that, but I do believe it'll right itself in time.So, potential CS students, listen up: There are programming jobs out there. Now get to work.
Steve Holzner is an award-winning tech author of more than 100 books about topics which include AJAX, XML, Java, Joomla, PHP, and Ruby. His books have sold more than 3 million copies and have been translated into 18 languages.