79 comments

[ 3.4 ms ] story [ 117 ms ] thread
I am surprised there is a problem with CS grads not finding jobs. Granted, I am in VT, but we can't fill programmer positions for anything here; though, I wouldn't hire a Java-only recent CS grad unless s/he could find a way to really show they were fantastic problem solvers. (as we don't do Java or much OO in general)
I was under the impression that VT as a whole was having a very hard time filling jobs... I just can't see myself moving to Burlington and having to survive those winters (though I bet you get a lot of coding done when it is -100* outside). I have a hard enough time with Connecticut winters.
You know, I can't really speak to that. I know it's not a good place to try and make a good living as there just aren't many opportunities out here to make >45k a year.. most everything is entry level, retail, or hospitality around here. So I guess I was surprised when we are offering a very good job for the area that we got so little interest, but it makes sense in that most qualified people are just leaving before they become qualified.

I imagine dealer.com is nabbing good local hackers faster than we can find them

With the job market the way it is, you might consider advertising in more populated areas (like MA and CT) targetting people who might relocate for the right position.
We have done that to some degree, but only highly targeted ads (communities specific to our CMS)
I don't really get this line of thinking on hiring CS grads. Most CS programs don't teach Java, they might use it to teach some computing principle or how to solve problems but I'd imagine you'd be hard pressed to find a grad who is loyal to Java just because of their CS courses.
I'm loyal to Java (read: will choose this language over others in the general case because of my experience in it) because it's the language I, by far, have the most experience in. When I was ready for AP Computer Science, the AP test was in Java. From there, half of my classes in computer science were in Java. C was the other frequent language.

With that much immersion, when I started doing things on my own, I would naturally move toward Java because I was rather good at using its API, and writing in it flows most naturally to me.

I am under the impression that most CS grads get more experience in Java than anything else?

It was C++ for me, but that was almost ten years ago now.

Maybe, but why does that count against them? They have a degree in CS, no curiculum worth its salt produces CS grads that are also software developers ready to hit the groud running.

If you've got a a CS grad, then you have someone who understands and can apply computing principles. If your technology is too difficult to get them up to speed in a month or two, I'd look at your choice of technology.

Maybe it's different in the UK, but a huge percentage of my graduating classmates couldn't write code to save their life. There are people who are bad at their job in most fields, but maybe CS is just easier to bullshit through.
It's the same here in Belgium. I'm a dropout but some of my friends are currently getting their CS degree and the majority of them couldn't write code, even if their life depended on it. They see it more as a job then something they like doing.

When I was still attending school I also noticed that the majority of the people really didn't care; it was just a small percentage of the group that loved CS & programming. But I guess that is something you see everywhere in life.

> They see it more as a job then something they like doing.

I still don't see why this is a bad thing. A plumber who didn't grow up dreaming of pipe repair can still fix things. You don't have to love a job to at least be minimally competent at it.

Just because they don't love their jobs is no excuse to be unable to do it. But I guess they're unemployed, so the problem fixes itself :)

No, I think it's different. Programming is so much harder than plumbing from an intellectual standpoint that there is a strong correlation between people who enjoy programming (and thus do it in their free time, and strive to excel at it) and people who are competent programmers.

You could probably spend two weeks with a good plumber, having never picked up a wrench in your life, and with the right tools be able to do 98% of the work a plumber ever needs to do.

Take someone who has never used a computer and put them next to the greatest programmer and teacher ever, and that person will probably be able to do ~2% of the work a typical programmer will ever need to do.

Since the intellectual barrier to entry is so high, hobbyists are likely the only ones to do it well, as it just takes so much of the brain power of someone to be able to be a good programmer. So someone who isn't using all of that brain power, or a significant portion of it, thinking about coding is simply just not going to be able to compete with someone who is.

Compare that to a plumber and I think your analogy falls a part.

Part of this is the employers fault - they don't want CS grads they want specific start-on-monday skills. It's no more reasonable to want a CS grad that knows VB than it is to hire a Mech-Eng and expect that they know how to change the fanbelt on a 1987 ford.

The mean reason behind the article is that 'CS' grads covers a wide range of courses, a lot of which allow anyone to walk in off the street and start doing CS.

Imagine if the headline said, "50% of MBAs can't find jobs" - but in the small print they admitted that they included all business-type courses, including learning to type for beginners.

It's much the same situation here in Colorado. It seems like the applicant pool is even smaller than it's been. The number of qualified engineers is really mind-boggling, and competition is pretty fierce.
As a master's computer science student graduating in December, I'm curious as to what jobs are available in Colorado. Most of the jobs I've seen (and many I'm not interested in/don't beleive myself qualified for) are in Silicon Valley.

[edit: Just checking StackOverflow Careers shows many Colorado jobs that I hadn't seen before, some of them having been added in the last hour]

Where are the good CS jobs in VT? I'm from the NEK and in college now, but I had resigned myself to not being able to afford living in VT for a long time (got some serious college loan debt coming up)

I had an NYC internship this past summer that was awesome, but if there are good jobs in VT, I would be very interested.

There are a few web shops around Burlington.. I know Tag New Media is doing really hot and probably looking for good help.

Dealer.com is huge and growing. Other than that, it's really just programmer/sysadmin/tech-everything positions for smaller, non-tech businesses.. which aren't exactly 'good CS jobs'.

There are usually 1-3 jobs in the Seven Days for developers, most in the 45-60k area with a few I would guess in the 60-85k range.

I think anyone in an unusual location having trouble hiring should definitely reconsider hiring remote (or at least partially remote workers.)

I put up a job ad and forgot to specify the location so everyone figured it was remote. I got 20+ highly qualified people applying every day.

I noticed the mistake and fixed it to say local only and I haven't gotten an application since. If I were in charge of hiring I'd definitely find a good remote person.

The author is a headhunter and wrote a great guide to getting a quant job (www.ieor.columbia.edu/pdf-files/Paul_Dominic.pdf [PDF]). I guess that skews his perspective a bit in what he's looking for (numerical algorithms and C++). I'm guessing the situation isn't that bad for companies looking for plain old Java programmers. Finding graduates experienced with C++ and numerical algorithms is substantially harder!
Agreed, Dominic is held in high-respect in the city and rightly so, but his core expertise isn't in graduate recruitment and it's shows here.

If you want to hire for low level understanding go to universities like Cambridge, Warwick, Bristol, Imperial, York. Look at Aero Engineers and Physicists as well as CS students.

Kings College has maybe a third or forth tier CS department, it's not surprising he's not finding great candidates from there. It also seems like he's relying on the mainstream recruitment boards, most talented graduate developers don't even look there. Most are recruited either through university events or dedicated graduate recruitment boards.

Also there's a reason it's hard to find talented graduate developers willing to do VBA, because money isn't everything. Sure you might make an extra thousand pounds a year doing it, but that doesn't make worthwhile to do a job you hate. Most talented developers would rather get a job that pays less and is enjoyable.

I went to Warwick (graduated with a CS MEng in 2006) and I would really hesitate to give preference to someone just because they have a degree from there.

Admittedly I didn't really take advantage of what was available, but my interest is basically in building cool things during my day job. I don't really code for fun and I'm not particularly interesting in computer science theory except where I need it to make my work better.

I've managed to do pretty well because I can balance above average programming skills with a fairly good sense of user interface and design. But ask me about compiler design or operating systems and you'll just get a blank look.

I suppose my point is that I'm okay, but nothing exceptional and I don't have any real interest in the low levels of computer science. So to hold me in high regard just because I have a Masters from a top university is a massive mistake in my opinion. Heck, if I'd done more than just the coursework and a day's worth of revision per subject (I was also skipping about 3/4 of all lectures), my high 2.1 would have been a 1st fairly easily.

Apologies for the rant, and my experiences at Warwick may be out of date now and may be untrue of the other institutes you've mentioned.

I don't think University works as a blanket indicator, but it definitely can help. At least at Bristol (my alma mater), the students are highly exposed to low level technical detail, with assignments including processor design, building an assembler, and in the final year, writing a kernel for a multi-processing OS (the hardest thing I've ever tried). They have courses on algorithms, computational complexity and a good mathematics unit too. Plus they teach C, Haskell and Java in the first year to give a good spread of different paradigms, and then expect students to go out and learn any other languages as appropriate for whatever they're working on at the time.

I have my own issues with my time there, but for giving a good, detailed, low-level understanding of computing, I can't fault them.

That stuff all sounds more difficult than anything I was taught at Warwick, sounds like a good course (though not necessarily one I would have chosen :)).
I actually ran a recruitment stall at the IT & Engineering Careers Fair at Warwick in 2006, there were quite a few game development studios recruiting there at the same time, so I'm guessing Warwick does produce enough developers who are good at low-level stuff and general development to attract companies there.
Oh, there were some very talented people there. Some of them are friends of mine, but they're good because they're good, not because of the education provided by the university. Some have ended up doing game development, high performance computing, working at Amazon etc.
"Look at Aero Engineers and Physicists as well as CS students.".

Exactly, look outside of traditional CS. Econometrics produces very good quantitative people, for example. Teaching them C++ is the easy part (relatively speaking).

God, articles like this make me feel so much better. Reading nothing but textbooks, source code, and blog posts by ridiculously talented people makes me wonder why anybody pays me to do anything. This article made me feel like a total stud.
(comment deleted)
Personally I don't think a student who knows only C++ because he was force to use it in school is going to be much (or any) better than a student who knows only Java for that reason. The problem isn't that the language is Java, the problem is that it's a student who never cared enough to learn something else than what was expected she learn and use for classes. I am, however, quite shocked that operating systems classes are being taught in Java. At my university few classes actually required C++ (usually you could use it or Java) and the OS class was certainly one of them.

His concern that students don't have to take hard classes is pretty valid though. If the curriculum changes he described are really that bad I think that is tragic.

The thing about Java is that it's a managed language with little insight into lower-level concepts. This isn't a problem in itself, but when students indicate that they only ever learned Java and that they like it because it's easy, it's usually an indicator that they have no idea what's going on behind the curtain. In my experience, these kinds of students are very reliant on tools that provide a garden path to walk down, become very confused the second that something appears to stop working right, and they tend to approach problems with a very "code-first" mindset - given a problem, they will sit in front of a screen and think that if they can just find the right code to type in, the problem will be solved.

A student in a C++ class at least has a chance at being exposed to something lower level.

I think most students don't care. They don't ever understand what's going on with the pointers and are often content to just keep trying combinations of the syntax until the appropriate result comes out and the compiler stops yelling at them.

Maybe the point is that if you don't require C++, students will (obviously) often pick the language what provides the easiest way to complete their lab in a timely fashion so they have social time or time to work on other classes. Even those who DO care and would absorb the low level knowledge provided won't take that "risk" by doing their labs in C++ since early on it just means their work will take longer to complete than classmates.

Note: As I said my school always allowed the usage of C++, usually allowed Java as well. It's definitely a bad thing if courses require Java to be used.

"A student in a C++ class at least has a chance at being exposed to something lower level."

True, but the risk of using C++ in other CS classes is that they'll spend most of their time fighting C++, and not focus on whatever the class is supposed to be teaching. And the instructor/professor may be wasting a lot of time doing C++ tech support, rather than teaching compiler concepts, or whatever.

I've posted about this on HN before, but I'm a TA for an OS course in one of the best colleges in India, where this year we switched to a pedagogic OS written in Java. It's gone off remarkably well, since students don't have to deal with random memory safety issues within the kernel itself (they of course need to deal with memory safety issues with user-mode programs). As compensation, we've felt comfortable having the assignments cover a lot more ground than they used to when we used C++.

In my opinion, C and C++ are very difficult languages to be able to reason about code in, since there's just so much stuff around the operative part of the code. Java, while not ideal, is a lot easier.

I definitely agree with some teachers being totally clueless. Some of them seem to have absolutely no experience nor interest in the industry. To illustrate, I am currently enrolled in a User Interface class and one of our main reference is this website from the 90s: http://www.usask.ca/education/coursework/skaalid/theory/theo.... Ok, some principles never change but come on, how do you expect us to take this seriously when most of us could design better websites at 12 years old.
What I can say, from personal experience, is that the last time I interviewed college students for a programming job (this was five years ago), we had quite a few applicants, but only one that had done anything on their own with their personal computer other than play games.

It was startling. Only one had taken any initiative to write a single program that was not assigned homework. But, they could tell me quite a bit of details about the games they had played. Sad.

(comment deleted)
I remember on an initial phone interview about 7-8 years ago at a job, first the owner apologized for asking such a stupid question, then asked "what is a pointer?" After hearing an acceptable answer, he said that you wouldn't believe how many supposed CS graduates couldn't even answer.
My boss at my current co-op was interviewing people for next semester. He said one of the students, who had supposedly taken Operating Systems, couldn't tell him the difference between a thread and a process.

/facepalm

(comment deleted)
> bog standard languages like SQL, VB, Perl, et al

Sorry grandpa, but the smart kids these days aren't learning those (with the possible exception of SQL). Look for people with experience with Python, Ruby, Haskell, etc...not freaking VB.

> The wheel has turned further, and MS is seriously worried about the lack of young people immersed in their technology. If CS grads were smarter, they’d see this as an opportunity, because MS is still a vast percentage of all corporate IT. Yes, VBA is the worst language in the history of the world, but you can get good money doing it, and a good programmer knows that it is how you think, not the language you code in, that determines your ability.

The sooner VBA dies, the better for humanity. Thus, the so-called ignorant CS grads should better be called humanity saviours.

No-one wants to hire someone who won't work in a language they see as "beneath" them. The author even goes onto mention F#[1] and CUDA in the next sentence as examples of what he considers cutting edge.

[1] A major project of Simon Peyton-Jones, who in his spare time is a leading light in the Haskell community

I'm not saying that VB is beneath me, I'm just saying it's ridiculous to expect fresh grads to have experience with it.
I'm not so sure. I mean, I picked up Tcl/Tk at college not because it was ever taught in any course, but because I needed to make GUIs for my own code on AIX (rather than generating a .ps graph on the command line, printing it and looking at it on hardcopy!). It's entirely feasible that an undergrad at a Windows institution would pick up VB on the side.
There's a difference between "it's reasonable to expect fresh grads to know X" and "there might be a few fresh grads who happen to know X".
he's a big headhunter for finance.

Try to get banks to drop VB. good luck.

  If CS grads were smarter, they’d see this as an 
  opportunity, because MS is still a vast percentage 
  of all corporate IT. Yes, VBA is the worst language 
  in the history of the world, but you can get good money 
  doing it, and a good programmer knows that it is how 
  you think, not the language you code in, that determines 
  your ability.
I honestly couldn't read any further. Money definitely is not the only factor to consider when searching for a job. I won't elaborate, but the important things in life should be obvious to a so called "hacker".

Maybe it's the most important factor when searching for a first job. But as soon as your rent is covered: Search for a job that does not kill your spirits and cripples you from inside out.

Quantity has never been the best argument for anything I can think of right now.

i would rather get half the money and work fulltime then doing VBA as a Job (i'm not just saying that, i have a VB job atm (for a other year))
People complaining about the quality of college graduates is nothing new. Most of the people in my computer science classes didn't care about programming at all. Only the people who were naturally very good at it seemed to care much. I recall complaining a lot about the quality of applicants from pretty much day one of my professional programming career.

When I was younger I got a lot out of reading: http://www.ericsink.com/Career_Calculus.html. As someone who isn't naturally the best programmer this helped me put a lot of things to perspective. I'd imagine anyone starting out would be well served by following his advice.

These days I try to spend at least some time every night trying to improve my skills in some tangible way (e.g. reading a book, writing code for a side project, etc.). If you're having trouble finding a job you like just spend as much time as possible learning and you'll do just fine.

I did my CS degree a long time ago in the UK. I did a 'sandwich degree', 2 years at college, a year working for an employer and a year back at college. Everything, and I mean everything, of lasting value I learned in that time was learnt during the industrial training year. Things like seeing projects through to the end, being accountable, getting it right whatever it took, knowing how to figure things out for yourself, doing what was asked for and not what I felt like doing.

Employers want people who get things done with the least supervision. Java is becoming this generation's BASIC, it bestows the illusion of knowing stuff without having undergone the sheer hard grind of becoming usefully experienced and battle hardened. Knowing Java is merely the beginning and, as is becoming clear, not even a terribly useful beginning at that.

He mentions a lack of engineers well-versed in MS products. Is there good money to be made in doing consulting using MS tech?
I refer to them as Sharepoint salesmen.
"A CompSci grad is supposed to be able to do difficult things that arts grads simply can’t understand."

/rant/

The majority of CS education that I've had so far has been theoretical. There has been a lot of math and pseudo code, and logic. Programming rarely comes into it, and when it does, it is (generally) trivial (and it is OK if you get it partially wrong).

Compare this to my undergraduate in philosophy, where I was generally writing at minimum 30 pages per class per semester in term papers, regular writing assignments, and thousands of pages of reading.

There is no question to me that the undergraduate philosophy degree was more challenging. (this is solely based on my experience, I do not mean to indicate it reflects all experiences with all MS CS/ BA PHIL experiences.)

In the philosophy degree, I learned theory and wrote (and I wrote a lot). And sometimes my papers came back with lots of red ink. I took my lumps and rewrote them.

In the CS degree I regurgitate facts, and write the occasional Java program. (Normally from a 'starter' program).

There is no question to me that an ideal CS degree would be as programming intensive as an arts degree is writing intensive. Programming assignments for each class, and producing a substantial piece of work by the end of the class. You know, demonstrating knowledge.

> The majority of CS education that I've had so far has been theoretical. There has been a lot of math and pseudo code, and logic. Programming rarely comes into it, and when it does, it is (generally) trivial (and it is OK if you get it partially wrong).

Here's my beef with this. It's programming. It involves a computer and perhaps an internet connection. Anyone, for essentially no money at all, can sit in the comfort of their own room and start writing programs. There's simply no excuse for students to not be doing this.

It's not like a photography student who needs access to a dark room, or a chemistry student that needs an expensive lab, or whatever other types of careers out there that involve lots of expensive equipment. We're talking $1000 that just about every single college student has already spent.

When I was in college I read SICP for the heck of it and in my discrete math class where the professor declared we could do our assignments in any language we wanted, I did them in Scheme. I also wrote a Sega Master System emulator, a game engine, a paint program and countless other things. I'm not trying to brag because when it comes down to it I consider myself a pretty average programmer. But it's not at all hard for a student to do this.

When I am interviewing college grads I can smell the ones who just scraped by on their classes and didn't explore the field on their own at all a mile away. They always have and always will get a firm "no" from me, there's just no excuse in this field to not take the initiative to learn on your own.

Sure, I totally agree.

I was mostly self taught in programming before starting the advanced degree.

There isn't any teaching instruction with regard to the actual 'doing' of programming. The article states that CS majors should be able to 'do' things that arts majors can't do. Mostly, they can think about things that arts majors haven't learned about.

But imagine if you are an English major. You want to be a great writer. Sure, you will be writing outside of class. But also, you will be writing a inside of class. Maybe an art major painting would be a better example, but the analogy stands; you should have rigorous practice in addition to the stuff that you do for the major, which should be fairly intensive in and of itself.

I don't see programming being treated seriously as a craft in CS. It seems like something that Professors get research assistants to do for them. (In fact, I'm pretty sure a lot of professors wouldn't know a good program if it smacked them in the face).

It is in this way much different from other college level disciplines, where the graduates are supposed to have gained some sort of skill. (liberal arts majors should know how to write, painters should paint, physicists and chemists, etc).

I think this says more about your college/university than CS education in general. I have a BS in comp sci, and I had to write functioning code in almost every computer class I took. (The only exception being one A.I. course that was cross-listed with philosophy, and even there I used automata in my final paper.)
All the hate on artsies ruined the article for me.

If you haven’t trashed your computer while doing something questionable, then you’re not a computer scientist – you’re just an arts grad who didn’t get laid

A CompSci grad is supposed to be able to do difficult things that arts grads simply can’t understand.

This is exactly the type of biased, negative, and unproductive criticism that the HN community works hard to prevent and has been recently vocal in admonishing.

I may be a little sensitive - I have both a double major BA and a Bachelors in Computer Science and my CS friends look insanely ignorant when they presume they know anything about the benefits/lacks of an Arts degree. Arts "teaches you to think" in ways that CS/Engineering students are never even exposed to (except for by some token arts requirements) - it teaches you have to think about people and the human condition. I would much rather have a CS grad help me start a company, but equally rather have an Arts grad run it (See Warren Bennis' On becoming a leader for a much better investigation into why Arts students make the best leaders [of human beings]).

I'm not saying that Arts is better in any way - I'm just asking for mutual respect. No poli sci student is going around saying they can prove the amortized runtime of a skip list - if you're in CS please don't pretend you've had their education either. Your education also isn't any "harder" in any objective way - ODEs or building an OS in C is not any more difficult than wrapping your head around Aristotle or existentialist phenomenology, it really isn't. It's actually much easier to get an A in CS than Arts, but that's a bit of an aside.

I realize that this was an article not a comment, and I don't intend to start a debate. I just think we need some mutual respect between the disciplines and there seems to be a latent "bash artsies" in some tech writing that really needs to be squashed - it's not helping anyone.

[more to the point of the article: My subjective anecdotal evidence is that arts grads have a MUCH harder time getting hired post-grad (which makes sense considering they chose to learn fundamentals not practical skills) so they go either a) travelling b) to grad school c) to law school. This is a major skew, none of these people should be consider employed, but they don't contribute to the arts grads unemployment rate either]

Great comment. The false divide between arts and sciences has been with us an unpleasantly long time; if you haven't read C.P. Snow's _The Two Cultures_, find a copy. It was published in the 1950s, IIRC, yet it still resonates.
I think it's par for the course for the mentality in the City; what few interactions I've had were unpleasant. Makes me glad I work from home and commute to California a couple of times a year, rather than have to put up with it.
I have a BA too, so your comment is interesting to me even though I have a somewhat dissenting perspective.

To begin with, "the arts" (defined as anything you can get a BA in) is a wide, wide field. At my university, a BA is often a less rigorous degree option in fields that also offer BS degrees. You can't talk about BA's generally--they range from various instances of "Identity Politics: The Major" to pretty tricky stuff, like philosophy, which at its highest levels is comparable to advanced mathematics.

Philosophy has a lot of intellectual content that's difficult for people to grasp, because you're basically taking raw logic and using it to blow up fundamental parts of people's belief systems. Getting people to take the skeptical argument seriously is an ordeal in itself, much less coming up with intelligent responses to it. Even after you get past tricks like that, it's a rough slog reading philosophy. Analytic philosophy, which is exceptionally rigorous, is about as difficult to read as mathematics; other philosophy is even more difficult if it has any meaning at all.

Philosophy actually exercises most of the same muscles as math and CS, in my experience; learning to think of counterexamples as you write general statements is a skill you pick up in all three contexts. Counterexamples in philosophy fill largely the same role as test cases in software development--any attempt to define "knowledge" in the past half century has had to contend with Gettier's famous counterexample (http://www.ditext.com/gettier/gettier.html) which sunk Plato's millennia-old definition.

In terms of contemplating the human condition? If I had to manage actual people, I'd look for a psychology or anthropology grad, and both of those can be had as BS degrees. One of the coolest (and most useful!) things philosophy ever gave us was empiricism, and so far, psychologists and anthropologists are the ones applying empiricism to humans in the contexts most useful for something like running a company. But actually, I don't know if formal education helps at all with management. If I was going to hire a political leader with vast amounts of power, I sure as hell want someone who understands history. (And I'd hire a poli sci major to manage his campaign, naturally.)

This "two cultures" [1] attitude is, sadly, incredibly pervasive. The idea that there are two kinds of people, two kinds of education, and thus two kinds of careers—one in the arts, one in the sciences—is a product of irredeemable stupidity and must be resisted.

Consider the following list of people, most of whom we should all be familiar with.

- Aristotle was concerned with understanding the natural world; with logic and mathematics; and with ethics, how to live a good life, music, the theatre, and more.

- Leibniz developed the calculus, symbolic reasoning, and ideas about computation. He also wrote about law, ethics, and religious disputes.

- Bertrand Russell made major contributions to mathematical logic and the philosophy of language and mind, as well as being a prominent public intellectual and peace campaigner.

- Saul Kripke developed Kripke semantics for modal and intuitionistic logic, as well as making major contributions to the philosophy of language, mind, and epistemology and metaphysics.

I'm sure everyone here can think of many more examples, and no doubt your personal interests will influence your selections (as mine obviously have). My point is that an interest in, and the ability to make a major contribution to the arts or sciences in no way precludes making a contribution to the other. Yes, writing a proof is different to building a web service, which in turn is different from writing a book on Spinoza or studying the family dynamics of drug addicts. But the classes of people who do these things are not disjoint. We live in a world of specialisation, but that doesn't mean we have to live in a world of separation; that we cannot have broad interests and broad capabilities. When I was a child I learned about the Bohr model of the hydrogen atom, but I also read the Iliad. There's no contradiction there, so why do so many people subscribe to the idea that people who do the latter can't do the former, or vice versa?

There is nothing contradictory in being able to write well, derive logical proofs, appreciate literature and disassemble a computer (or a car!). The call for mutual respect is appreciated, but surely we should demand more: a denial that this divide should exist in the first place.

One small nitpick, about learning fundamentals rather than practical skills making it harder to get hired. Even assuming it to be true, I don't think it cuts at all cleanly across the Arts/Sciences divide. A good understanding of complexity classes is not something I would call practical, i.e. able to be applied directly to so-called "real world" problems. My guess would be that it might make one hireable, in that employers might value the kind of mind which can comprehend such things, but that the number of places hiring people to use that knowledge directly is probably extremely limited. The problem that arts students might be facing is more that their skills are hard to quantify than that they are more concerned with fundamentals.

[1] The term "two cultures" comes from C.P. Snow's famous 1959 lecture. http://en.wikipedia.org/wiki/The_Two_Cultures

I think you're mistaken to assume that more than a handful of us are as all-around insightful as Aristole, Leibniz et al.
I think you're taking the less charitable interpretation of this quote:

>A CompSci grad is supposed to be able to do difficult things that arts grads simply can’t understand.

I would except a CS grad to be able to know when to use an array and when to use a linked list, but I wouldn't expect a comp lit grad to. However, the comp lit grad should be able to contrast Tolstoy and Dostoevsky, which I (a CS grad) sure couldn't.

I'm a second year CS student and probably not a typical example, but I've found University education fairly comprehensive and useful. I have been programming and fooling around with robotics and such through high school, so I guess I knew a lot more stuff than most of my classmates. This is probably reflected by the 20%-30% or so (my approximation) drop rate after first year.

Anyway, in my first year we've studied different layers of a computing system:

* Computer Engineering - and implemented [MU0](http://www.cs.man.ac.uk/~pjj/cs1001/arch/node1.html) on an FPGA

* Architecture - general principles and ARM ASM

* OO programming - theory and a lot of Java

* Computation - finite state automata, regexp, a bit about complexity

* Math

Plus some more specialized course units:

* AI

* Distributed Systems

* Team project - which was mostly about team work, but some web apps stuff too

In the second year there are a lot more specialized units:

* Algorithms (implemented in C)

* Operating systems (just pen and paper for the first 2 labs, boring for now)

* Databases (SQL)

* Machine learning (labs with Matlab)

* Networks (Wireshark FTW)

* Microcontrollers (with real dev boards - ARM + FPGA)

* Architecture (again)

* CGI

* Distributed systems (again)

* Mobile systems (seems to be mostly about radio comm and codecs)

I mean, really, you have to be an idiot to blag your way through all of these and not learn anything useful for potential employers. It is true that it probably helps a lot if you have some previous knowledge and/or do independent work as the learning curve is steep. But if you can't do it, maybe you should be studying something else.

The geek culture is visible both among students and staff, but to be honest it's clearly a minority.

BTW, this is CS @ Manchester Uni.

And a WTF moment, because not everything's this good: We've had a "careers workshop" and then we had to submit a CV and cover letter to get marked on and receive feedback. I've submitted the ones that landed me an internship this summer and I've been failed (this probably means I need to resubmit a corporate-looking one).

THIS! Don't ever forget you are there to learn the computing topic and not the technology used to teach it.
A CompSci degree is not the only thing you need for career in I.T. It's not a vocational degree like medicine is.
Very ranty article, but has a point.

I taught in a Computer Science department for 4 years whilst studying for a PhD. I can honestly say that each year, the quality of the students coming in reduced (lower qualifications, less students with any Maths background for example) and in order to maintain pass rates, the university responded by taking hard subjects out of the syllabus.

The UK higher education system is a mess. Its designed to only work financially with a ridiculous amount of students flowing through it. You can't maintain that volume and also maintain the quality out the other end.

My PhD was the same. I honestly believe that the minimum quality of what I had to produce what much lower than it would have been a decade ago. PhDs are the new masters and masters are the new degrees.

Knowing people that teach in the most prestigious universities in the UK, I also know that this issue affects all universities in the UK.

I don't think "ethics" is a trash course. At Texas A&M CS is in the College of Engineering. Engineering Ethics is a required course to graduate. One of the major points was using the Challenger disaster as an example case, hammering home the importance of doing whats right, not want management pressures you to do.

Furthermore, anyone with a CS Degree should be able to teach themselves new languages without any problems. When I see people complaining saying that "their school is not teaching them language X" I cringe. Universities are not vocational training, you are supposed to be able to handle independent study.

Also taught at RIT for all engineers, comp sci, and software engineer students, including content on Chernobyl, Bhopal, Challenger, Three Mile Island, and Tenerife.
The largest problem I noticed in college was students' attitude toward learning the material. In high school, I think the vast majority of people attack the curriculum from a "memorize and regurgitate" standpoint. In a lot of ways I can't blame them, but once a student hits college and begins training in their field, this has got to stop. Especially in the sciences.

I confess, it took me a little while to figure this out myself. But if I could go back and tell myself one (academics related) thing before starting college, it would be "No really. Knowledge is power. Stop passively accepting it and start ferociously acquiring it".

The students who understand this from day one will be the successful ones. The trick is finding a way to get it across to the rest of them.

I'd go back and tell myself "Apply apply apply!" Seriously, if something doesn't make sense, find a way to put it in a context that you understand! My biggest challenge in school was just figuring out how to apply the things I was learning to myself and my own problems. Once I actually started using some of the stuff I was learning to further my personal projects it was like stepping on an express train, I made so much more progress, and did so much faster than when I was simply trying to memorize what I was being told.

Also, I'd tell myself not to miss that date with that cute blond. "Dude, you're going to marry her someday and she'll never let you forget that you stood her up on your second date."

As a recent CS grad, this article stuck a chord with me. I wrote the following reply to the author:

--

Hey Dominic,

I’m a recent CS grad (2009) from ECS at the University of Southampton. Full disclosure: it goes against my humility to say it, but I would probably consider myself to have been a student who hacked around with a lot of technologies and concepts not touched by my course (and I think I’m considerably better off for it).

Not to blame the course, though — the course at ECS was amazing. We had our fair share of "ethics" and "IT industry" modules, although everyone admitted (lecturers included) that these existed mostly to appease the professional bodies. We were subjected to modules that sought to teach us Java, requirements gathering, HCI and project management, although these only made up a small part of the course as a whole. A sizeable portion of my time at Southampton was spent deep in the mathematics that vitally underpin the "softer" CS subjects, and the course was delightfully broad. We built compilers to parse abstract languages, learned LISP (much to the initial mindfuckery of my peers and I) and we all implemented a FAT12 filesystem in C from scratch. The latter required two 12–hour sessions in the lab, and I’m pretty sure that the vending machine was completely drained of coffee somewhere around 6 hours into the second day. We were taught and examined in gratuitous (but stimulating) detail on computational complexity, data structures, formal methods and the properties of fundamental algorithms, and the officially sanctioned languages used throughout the course spanned Java, C(++), C#, PHP, Scheme, Python, JavaScript, Perl and a handful of UNIX shells.

I don’t think the problem is the courses, I think it’s the learning style of many students and the sheer number of students that are encouraged to go to university just because it’s what they are "supposed" to do to get a job. Group work always frustrated me, as many of my peers simple wanted to learn the course notes verbatim so that they could regurgitate them in an exam.

Although it concerned me that many of my peers would one day be released into the wild firmly clutching their Java IDEs, there were a lot of really bright students on my course.

The thing that stops large companies hiring me is probably the abundance of truly awful recruitment agencies. Myself and many of the ECS–ers that I’ve kept in touch with are bombarded by 5–10 poorly written, unprofessional LinkedIn messages from recruiters every week. Today I received such a message that opened with "Hi Darcey". Classy. They all seem to want Java/C# developers and none of them seem to care about other technologies, or deem them irrelevant, or think that this sort of "playing around" detracts from your skill in some other proprietary technology on their checklist. It’s getting to the point where I’m only "working" (for money) around 40%-50% of the time. The rest of the time, I’m just sitting at home working on side projects to keep myself amused.

Many of my most talented coursemates are either now working on their PhDs, or working 10 hours a day on a soul–destroying graduate program for some faceless city financial institution so that they can retire at the age of 45, burnt out and sick of technology.

Sometimes I feel like I should just move to Mountain View or Palo Alto or somewhere else with a little Silicon Valley sunshine, but I don’t want to move away from my family, and my girlfriend is very happy here working for a physics startup. It bothers me how grey and soul–less the prospects appear to be for passionate British software geeks.

Perhaps I’m missing something crucial (or maybe I haven’t been hanging out with enough of the cool–kids at Silicon Roundabout) but where can I find great tech jobs in this country?

Ben

What sort of tech job are you looking for ?
I’m a web developer. Much of my recent work has utilised Python/Django and JavaScript, although I have experience with a wide range of (mostly open–source) technologies.

I just checked out CoderStack. I’m looking forward to your launch :)

There are a lot of interesting jobs open in the UK. Startuply has a fair few, as does the cufp job board. Language specific job boards (haskell, erlang etc) are also useful. The best method I found is to watch videos from conferences (cufp, erlang factory) and look up the speakers employer if you find the talk interesting. That's how i found my last full time job in London, building a prediction market in erlang.

Even if a given company don't advertise open positions its still worth inquiring. Good developers are hard to find.

I know if I were a BigCo I'd launch a program to sponsor programming contests / projects in universities.

Toy robotics challenges, programming puzzle teams, AI contests, whatever. This would a) give me mindshare and contact with the students who actually get stuff done outside of coursework b) help give these students useful experience. c) be relatively cheap.

They do, often through places like TopCoder, but it's a very expensive way to recruit (not because of prizes but in terms of the amount of employee time taken to run these things and the risk of it not paying off).

The average BigCo already spends in the region of 10-20k per candidate hired, running a graduate recruitment campaigns is an expensive business, so return on investment is an important factor.