Anecdotally, as a part-time sysadmin at a university I've seen more than a few examples of "students" in a computer science Master's degree program who are obviously in it for the perceived job opportunities. But they don't seem to actually care about the subject. They copy and paste code from google search results and if it doesn't work they are helpless. They don't make any effort to understand what is happening or why, or how to resolve their problems. They just complain that the systems "aren't working."
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.
Years ago in a university IT dept, I'd have to occasionaly serve copyright violation take-downs (we would handle them internally, and just remove the offending matter from the network. No one was ever outed). One time, looking for a machine serving up some movies or something, I tracked it down to a graduate student office, in a _network systems_ lab. When I finally found the grad student owner of said server, he was comletely dumbfounded that I could physically locate the machine by its IP address.
Big ancient companies who can afford to heavily manage and baby sit their programmers can use people like that. Not everyone needs to be a "rock star" in order to contribute.
It applies to the United States as well from my experience of being around other students in Computer Science :).
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.
You might be true but I think people here don't really care about being "programmers". They are non-passionate idiots who just want a job that can feed a family of four.
The so called IT revolution companies promise tons of jobs for these CS grads.
The problem with this attitude is that these same "idiots" also get called out when they follow their non-STEM passions in fields that don't have nearly the expected economic return that STEM fields so. Just watch any thread on college degrees/education.
What is a person with no interest or aptitude in STEM fields to do?
I always thought it was a good idea to major in what you love and then minor or double major in something that can get you a leg up in the job hunt. So if psychology is your thing, and you're really serious about succeeding there, do a second major in, say, statistics. That should give you a nice advantage in doing and interpreting research, and if you decide that clinical psychology or whatever isn't really your thing, being able to do statistics is a pretty desirable skill. You might not get a big data job with it, but it's not a bad investment.
They weed the people who don't want to do the work for the classes. That's all. The classes don't necessarily teach practical things. There are only 2-3 classes you have to take which involve "heavy" programming: data structures, operating systems, and the intro course which used to be based on SICP (if that doesn't count, pick one from the required breadth). Ironically, if you take the software engineering course here, you can end up in a group where your entire role is "testing". About a third of the upper division CS classes involve minimal to no programming whatsoever. There are also plenty of nontechnical classes you can take outside of the department which count towards the major.
It has nothing to do with fakers and everything to do with deadlines. When you have 3 large projects due each week and about a 100 pages of assigned reading it gets hard to find the time to dig around for details on trivial stuff that isn't working.
I don't understand the thinking in getting into a career field that you have no intrinsic interest in.
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?
Computer Science is a very interesting degree. Having done the program myself, you learn math you will never use* and ton of other things that can be counted as useless, however I am better for it. Calculus taught me less about how to do Calculus (I don't remember how to do an integral, but I don't get paid to do that), but it did teach me how to study properly and that grinding (hard work) really can solve some issues you have. Discrete Mathematics taught me to look deeper into things, and not just observe the first thing you see as the conclusion. Overall, I went into Computer Science wanting to learn how to program and left not learning how to code from the program (I worked full time as a software engineer through school) but I learned valuable skills that have helped me get where I am today. If you are thinking about not going to college (college is not for everyone*), I suggest you do. College isnt about what books can teach you (you can read those), its about the experiences that you gain (like my stories above), the people you meet and the bonds that you make. That is what makes it all worth it!
I'm going back to for a CS degree after a 6 year hiatus. I completed about 90 hours of a history degree before I dropped out to start programming.
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.
I don't get this at all. I need my understanding of calculus, trig, discrete mathematics, probability/stats and especially linear algebra. Then again I do computer vision, but even building web apps (that do something non-trivial) in my spare time I end up using that knowledge. Basically, build trivial stuff (simple UIs and a RoR backend?) and you probably don't need math. For anything else, you'll be stuck without it. If you can't follow a research paper in computer science or some domain knowledge needed for the job, then you won't be able to do your job.
Being someone who cherishes the ability to do complex maths without a calculator, and having friends who rely on Wolfram, I think that the difference is that when you know the mathematics, you see the mathematics. What you see as a trivial problem that is simply a solution to a homogenous second order linear differential equation, your friend who doesn't know the mathematics sees as an entirely different problem. I'm not saying that you can get by indefinitely without mathematics, but that a lot of problems that have mathematically elegant solutions have other (probably less elegant) solutions, too.
I'm not even talking very advanced stuff. I wouldn't say my math is particularly good. I've forgotten most of the specifics of what was taught in those classes. I totally use Wolfram Alpha when I can, I don't do math for the thrill of doing it, but because I have a problem and I'm trying to find a solution. I think it's more important to have the ability to break down a problem mathematically, and then read up on the parts you need than to remember everything by rote. The problem is that if you've never taken any advanced math, it's very difficult to read up on it and knowing where to start.
I'm not a programmer but. . .unless you're coding an explicitly math-intensive application, aren't there tools that could do any math that's required? Of course, the tool would have to come from a trusted source.
Like I said, might not be a problem for a simple web app, but have you ever tried writing a game? For even the simplest game I end up using a lot of (fairly simple) math, linear algebra and some physics. If you start doing stuff in 3D, you'll need even more.
If you ever do any work in Canvas (SVG) from the bottom up, you'll end up probably using calculus somewhat for things like Bézier Curves[1]. It was one of those times I thought to myself, "I'm glad I took 4 quarters of Calculus." Knowing derivatives and such for making a game is also useful when it comes to Newton's laws and knowing acceleration is just the rate of change of velocity and velocity is the rate of change of distance.
In my experience, Comp Sci grads are among the best prepared employees that we hire for programming careers. It's a great general-purpose education for the kind of work we do, although it's no substitute for hard-gained experience.
I think the value of almost any math class is that it teaches you to think logically, weed out noise (in data). . .both of which are valuable traits for programming.
I'm really starting to wonder if we're in a "developer bubble."
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.
We're seeing the start again. It's happened before.
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.
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.
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,
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.
I was just the TA for a CS class. I don't know any students, even the ones who struggle the most in the Introductory CS sequence, who can't do that. I'd say even those that failed the course can probably do that...
But what level institution are you at? I can easily imagine weak second and third tier CS students who can't code their way out of a paper bag. It looks like Reddit's r/cscareerquestions/ gets questions from a lot of these type of people.
I have a hard time believing the claim. I've certainly seen a fair share of new graduates disappointingly lacking in certain areas (for some reason, this seems to be especially true of those who hold a Masters degree but have no work experience), but managing to graduate without knowing how to do a simple for loop is really, really hard to believe.
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.
I'm at a run of the mill state school (Georgia State--returning after a 6 year hiatus), and I can't imagine how someone who couldn't write that for loop could graduate.
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.
I am at a top 10 UK university. One of the people I have been assigned to work on a group project with would probably fail this question, we are end-of-second year students.
I have a friend I've mentored through their CS degree and they're now a grader for a course. They tell me constantly about some students they have to give zeros to because their simple assignments (2nd level programming course) do not compile.
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.
There is a huge anti-CS degree movement, specially (and not suprisingly) among people without CS degrees.
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 :)
>There is a huge anti-CS degree movement, specially (and not suprisingly) among people without CS degrees.
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.
How many of them will go through all four years and complete the degree? Based on experience from my undergrad, quite a few switch majors after 1st or 2nd year, and most of those who stick with it purposefully choose the absolute minimum CS/math that's required by the major, so that alone should give you an idea about the quality of most grads.
I suspect it'll be like the dotcom bubble: zillions of students signing up because they heard you can get rich this way (and by happy coincidence you don't need the high scores needed to get into law or medicine).
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.
I think it is definitely the bubble scenario again, but there are some demographic differences that could change our expectations for the results.
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."
While it may be the bubble scenario all over again, it remains to be seen if a pop will really create the sort of disastrous effects as the dotcom bust, or if a majority of the one hit app-dev studios will get by on the sheer popularity of smartphones and tablets without having to resort to mass layoffs.
Here's a question: Imagine this new bubble has just popped, 5 or 50 years from now. What do people looking to both learn something of substance and be highly compensated for it study? Biotech? Engineering? Materials science?
Ideally look at the kinds of problems that are difficult and important and that we have a long way to go in, such as nanotech, biotech, and materials science. Compensation ought to be more or less irrelevant, you just want to do something worthwhile and get paid enough that you can keep doing it.
Bzzt. Idealism and an accompanying implicit ideology detected. Naked apes strive after status, prestige, respect, all of which are similar enough and all of which make money easier to get.
I think if you are not a super talented programmer, software development could be the least rewarding of most high skill professions unless you augment those skills with the skills from other fields.
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.
Many students take one or two classes before they realize its not like any subject they have encountered before and inability to independently figure out difficult problems leads to F's in the class.
Measuring enrollments has always been not-so-useful in CS. Let's wait and see if 2016 attrition skyrocket in tandem with 2012 enrolments, as I suspect will happen.
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.