Going back has made me rethink almost every negative thing I've ever said about college (at least with respect to STEM programs).
The contrast in what I'm doing now and the history degree I was going for before is completely night and day. The difference in rigor between the departments (same school for both) is shocking.
The biggest specific difference is that Computer Science feels like a coherent program, where each class builds on the previous ones, whereas history felt like I was just taking a bunch of loosely associated classes with no overall goal.
Something as simple as generating an ssh key pair and using it for authentication leaves them completely bamboozled. By their questions it is clear that most haven't bothered to learn anything about it.
They don't care about security, performance, best practices, or anything but completing their problem sets and projects and getting their degree.
I don't understand the thinking in getting into a career field that you have no intrinsic interest in. And how they think they are going to get past even a half-hearted technical interview is beyond me.
Many of the less knowledgeable students that are not interested in the subject matter past saying they have a degree in CS, simply copy and paste code they find online or from friends without ever figuring out how it works.
Professors I have had generally say, "You can use a code snippet or library you find and you cite it, but if I ask you to explain how it works, you better be able to do so."
India is just insane - 99% of people are in "IT" or "Computer Science" or "Software Engineering" solely because of the initial wave of people who made it to the United States as programmers.
The so called IT revolution companies promise tons of jobs for these CS grads.
Think of all the people, more or less all of them driven, successful and highly intelligent who go into finance each year. How many of them are in it for pecuniary reasons? Most people get a job as a means of getting money, are to greater or lesser degrees alienated from their labour and are not achieving peak actualisation or anything close to it in their work. Those who do are living the dream and if you don't know anyone who does so it hardly seems a plausible goal, does it?
http://news.ycombinator.com/item?id=4603414
later confirmed here on HN by the hiring supervisor who observed the problem,
http://news.ycombinator.com/item?id=4919749
that many CS grads, even CS grads with master's degrees, can't get through a hiring screen that includes the question, "Write a loop that displays the numbers 1 to 100." Yes, something that simple is something too hard for many computer science graduates who are seeking jobs after graduation.
And that, ladies and gentlemen, is why you can't suppose that a computer science degree indicates ANYTHING about a job applicant's suitability to work for you. If you want to hire a programmer who will program well for you, test the job applicant's programming skill during the hiring process by having the applicant do a sample of the work you expect the programmer to do after the programmer is hired. In general, for hiring for any job, don't worry about degrees, but be sure to ask for a work-sample test.
References for why it's a good idea to hire on the basis of work-sample testing rather than on the basis of college degrees can be found in my extensive FAQ on the subject, written for Hacker News threads about hiring.
http://news.ycombinator.com/item?id=4613543
LAST EDIT: As I expected, people still don't believe this story. I thought it was rather amazing when I heard it. But, with further thought, I've decided that this really is an empirical issue. It may be that some jobs have less drawing power, and attract mostly applicants who are trying to get a green card to stay in the United States. (That seems to be one thing going on in the applicant pool for the job that had the hiring process, with two computers sharing screen views over the Internet as the applicant worked on the problem, described here.) The way to find out what applicants to the job you offer can do is to put them to a work-sample test, realistic for the job you want done. I hear that FizzBuzz is still screening out a LOT of applicants for some jobs,
http://www.globalnerdy.com/2012/11/15/fizzbuzz-still-works/
but FizzBuzz isn't a lot harder than "write a for loop," and certainly ought to be a job test that any CS graduate could pass. Try the people who next come to your workplace looking for a job, and see what they can do.
The only way I think that would happen would be if they were fairly weak to begin with and had a ton of performance anxiety, but I'd expect that to be exceptionally rare.
You could maybe pass the intro to CS class (mostly theory, not much programming), but unless you were willing to pay someone else to take tests for you there is absolutely no way you'd make it through data structures, or algorithms.
Even in an intro to MATLAB class I took that was designed primarily for non CS majors (mostly physics and biology majors) that substandard level of programming would have resulted in an F.
If one knows they will get zero if it does not compile (and they make this clear in the course), then I would be doing everything to remove code until it does compile and hope for some points versus none. I've seen some of the code snippets and it's just as bad as one would think. One person even wrote rude output statements when a user entered the wrong info (i.e. calling the person an "idiot" and such). Ironically, this person's code also did not compile.
The affirmation that almost 100% of grads can't write a trivial program would mean that somehow CS grads are worst at programming than a sample of random people.
Which language paradigm the question required? functional? logical? imperative? according the comment, they were phone interviews, meaning you had to dictate the program statements by phone, that's insane. It's impossible to take seriously those numbers.
Disclaimer: I have a CS degree, so my opinions are obviously biased :)
I used to be one of those people until I broke down and decided to finish my degree.
I think most of the people who speak out against college didn't go (or didn't finish) a STEM degree. I've seen both sides (history, and CS). Most of my previous criticism of college is applicable to history (at my institution at least), but not CS.
There are so many little holes that I've filled in that I didn't even know I had.
>The affirmation that almost 100% of grads can't write a trivial program would mean that somehow CS grads are worst at programming than a sample of random people.
You're right that something is off about that story. There is no way that someone could get through the entire program I'm going through without knowing how to write that for loop.
Eventually there's a popping noise and such folk leave the industry for sunnier pastures. The rest of us go back to being wildly unpopular and bickering amongst ourselves about the finer points of ... well, everything.
The most important thing to recognize is that entry-level skill requirements for programming will always trend down, not up, as the tooling and UI for common industry tasks becomes incrementally easier. C was easier than assembly, and Java was easier than C, and JS was easier than Java...whatever comes after JS must be easier than JS.
Lowering the costs of entry means that capital markets have a lower impact on the business of tech, as more things will get done without any money changing hands - but the need for customization is likely to increase simultaneously, as niches will become cost-effective targets for new software.
In effect, the tech market will increasingly be folded into the rest of the economy. Or "software eats the world."
5 years? Still no idea.
Everyone wants to learn to code. Every other week there's a blog post on "why everyone should learn to code." Last year, NYC Mayor Bloomberg posted his new years resolution was to learn to code[0]. Soaring enrollments is just another sign.
[0] https://twitter.com/Codecademy/status/155038379216609280
Talk to some of the old timers who were there for the early 1990s before the web. Eventually, businesses are going to have their must-do bespoke applications done, or there will be enough powerful packaged applications that do what all these bespoke apps are doing now.
And we'll again have a mass migration from tech, until the next great thing comes along.
I think of it as a series of gold rushes. The good news is I think we may have a good 40 years before the gravy train runs out.
People hear "A billion dollars" and immediately want in to whatever got someone that much money.
Many of those students do not realise that a straight mathematics degree has been proven for many decades to be far more valuable, flexible in a larger variety of careers, and even significantly more enjoyable (across the breadth of a career) until it is far too late.
The only silver lining is that the US university system is remarkably flexible and so being able to change major(s) reduces the risks somewhat.