55 comments

[ 4.7 ms ] story [ 95.4 ms ] thread
The problem is that a batcholers in computer science doesn't actually mean anything from the UK, you can learn the course material in six months of study- and employers know this.

so when employers are looking for applicants, they look for CV buzzwords and then test the person applying.

Pass the test? great. you're in.

a degree for software/systems engineering really only helps later in life when you're going for a leadership or management role.

the UK is also guilty of denying education about how computers work for a couple decades, opting only to teach microsoft office with a few CCNA college courses which inevitably get cancelled. So computer science students are really learning how computers work when they first go to university- and that's just mental.

Woah there - let's not write off the CS department of every UK institution, shall we? This is definitely a case of 'YMMV'.
ok, but even if you did full time hands on study of computing then you're still starting from a 0-basis foundation of knowledge on entering since there is no formal education before that.

and a little like hub networking we can only operate at the rate of the slowest peer. We can't "negotiate up" the curriculum.

so it's a waste of time and resources for many people. - like another poster said though there is a lot of mathematics involved so it's not like I'm saying it's useless, just that it's certainly not necessary and that we should be (and are) putting computers into the hands of children rather than teaching people -only once they arrive at university- about how computers function.

"there is no formal education before that."

I don't know about the rest of the UK but Computing Science is on the curriculum at schools in Scotland - I studied computing at school in the early 80s and had projects doing 6502 assembler on an Apple (NB and I did not go to a fancy school).

Here is a SQA Advanced Higher paper - looks pretty good to me:

http://www.sqa.org.uk/files_ccc/ComputingScienceSQPAH.pdf

"there is, now"

for the last 10 years there hasn't been. (even at college level)

the closest that comes near is the BTEC National Diploma in IT systems support (which I took) which teaches you the OSI model and how to crimp cables. (and also that Worms are "bad" and viruses are also "bad" and hackers are "bad" etcetc)

it's definitely not computer science but it's a somewhat close approximation for the low skilled workers that will someday become level 1/2 support.

if that's your intro into university then it's still a very low base to take you forward.

I went to university over a decade ago to do CS, and before that I did an A level computing, and an A level discrete maths module which taught basic algorithms like path finding, shortest tour, bin packing etc. That's a pretty good foundation for CS.
In the 90s, when they introduced the Advanced Higher they changed the Higher Grade to remove a lot of the deeper computer science components. Having been in one of the last years to sit it I then ended up studying a lot of the same information in my first year at university anyway. Unfortunately having a good school curriculum didn't automatically make the degree level education better.
Exactly you don't get to start A Physics or Chemistry Degree without doing it at GCSE and A Level.
"you can learn the course material in six months of study"

I don't know what courses are like these days - but that absolutely wasn't the case in the 1980s when I got a CS degree. However, the course I did was fairly heavy on the maths/formal side of things rather than focusing on the craft of programming.

I'm an undergraduate at Leiden university in the Netherlands. I can confirm that this is still the case, at least here. I would say it's around a 30/70 split between practical/formal teachings.
I think the issue is employers are looking for web/mobile/whatever developers with heavy emphasis on building quality code and the latest trends.

CS at university does not teach that.

"CS at university does not teach that."

Personally, I don't think that CS courses should be even trying teach that kind of stuff. CS courses should be about fundamentals not craft or process.

[NB Craft and process are obviously more important that fundamentals for at least 95% of development roles - which is why I hate CS courses being regarded as "learn to develop" courses].

...and that's why I think it's a good thing that some universities have separate CS and software engineering diplomas/tracks..
There should be far more focus on software apprenticeships, which is why I welcome the flurry of development bootcamps that have been springing up over the last couple of years. The best of them know that they're only really getting people to a minimum level, and work hard to place their graduates with companies that are able to commit to spending a year or two continuing to train them, rather than just throwing people with 12 weeks development experience in at the deep end.
Apprenticeships <> Bootcamps

And for a "professional" Job its debatable if using such a low status term is a good idea - in the UK Apprenticeships are seen as blue collar low status jobs at best.

Ask most people in the UK about Apprentices and they will think of the lusers on that ghastly TV Show.

Oh And I say this having followed the vocational track into IT

I see bootcamps as one of the few viable options to get a previously inexperienced person into a position where they're able to take on a software apprenticeship. I may be grossly simplifying things, but it feels to me like a trade such as plumbing or gas fitting can be picked up on the job.

Software development requires a pretty extensive grounding in the basics just to know what you're looking at when someone shows you new techniques - to stretch my already tenuous metaphor even further, most people at least know how to remove a spanner from a toolbox and which end to hold it. I'm not sure the same can be said of opening a terminal.

As for the discrimination against apprenticeships as being a lesser thing than the default route of school -> college -> university, that's a wider issue that needs addressing, and I don't think its going to be helped by inventing some new name for the same thing, especially in the software industry. I also took the vocational route in, and I don't think its ever put me at a disadvantage (if anything it means I have three years more professional experience than my peers). Most of the software developers I know studied unrelated subjects at university anyway.

The name for the associate professional step between Apprentice and Degree level engineers is Technician and has been for the last 50+ years.
unfortunate word choice, I think, since process is sort of the point of the whole affair. Not in the sense you meant it there, of course, but in the more general sense of formalizing "how to", from developing adequate descriptions of what - data structures and so forth - to finding the best ways of getting from point a to point b (or finding out that there isn't one and looking for a good-enough good-enough). It's almost a shame that computer and electronic computer are nearly synonymous now; it leads to the idea that CS is somehow a science about these electronic computing machines rather than about computing itself. While it's true that advances in CS have implications for the machines and the way we use them, that's almost incidental to the task of finding the best ways to describe, express and carry out a process. And if it turns out that a (seemingly) ridiculous amount of time is spent at the beginning demonstrating that adding in a place system is usually better than counting, and multiplying is better than adding the same number a whole bunch of times, well, if all you've gotten from that is that typing "*" saves you a few keystrokes, then you've missed the point.
Mine did, then again Portuguese universities aren't pure CS, rather "Informatics Engineering" and teach a bit of everything.
I think that is because most of the actual jobs are for programming, software development and systems/network administration. The CS degree programs are more centered on math and some electrical engineering concepts. I think the problem is partly in terms of perception and partly in regards to expectations. There simply aren't that many jobs out there for entry level (fresh out of college) computer science types.

My suggestion would be for those who want to work in a given field to consider their internships carefully, and work on projects and in positions that lend themselves towards learning their desired field of employment over the specifics of the educational learning. The CS concepts can help, but actual experience tends to count for more.

This is as an outsider who's worked in software development for almost two decades now without a formal education. I've worked with programmers with degrees that were very good at their job, and others with masters in CS that couldn't think their way out of a wet paper bag. Theory does not equate to practice, and software in particular is much more of a craft in practice than engineering or science.

> and software in particular is much more of a craft in practice than engineering or science.

Definitely agree. I have some experience (8 years) and most of the software development jobs I've seen aren't "engineering" at all, and shouldn't require higher education.

Hence why bare coding is being off-shored with the real engineering (Architecture, Design, Planning, Customer Relations,...) is left on the destination countries.

Those that want to stay pure coders will be left behind, given the current market trends, even here in Europe.

Customer Relations as real engineering? I'd say that only "architecture" or, better, system design should be engineering work. Conceiving and planning a product (not its implementation), as well as making it fit the market, that's not engineering.
It is because architects need to deal directly with customers and their wishes might have huge impact in the overall design.

Also they mighty need to be explained the technical advantages and possible issues of the ongoing projects.

Coming at this from the other direction (CS degree from Cambridge): you're absolutely right. The course was far more valuable for its secondary opportunities and spare-time projects than much of the content. And I agree that software in particular is much more of a craft in practice.

Most people would be better of with a trade school/apprenticeship system, or a "sandwich course". These do exist and I know someone taking one as a mature student, which came with a Microsoft Research internship.

Schools should really be handing out copies of that "employment rates by course x institution" table with the UCAS forms.

Northumbria Uni has 'HTML, XHTML & CSS for dummies' and 'PHP & MySQL for dummies' on the reading list of their Computing and Information Technology MSc.

https://www.northumbria.ac.uk/study-at-northumbria/courses/c...

One of the programming modules in the same degree is titled 'Programme Design & Implementation'.

https://www.northumbria.ac.uk/study-at-northumbria/courses/c...

A lot of UK MSc courses are "conversion courses" for people with degrees in others subjects and who want to get into computing.

In my experience the level the MSc courses are taught at can be a good bit lower than the undergraduate courses in the same department.

NB This doesn't apply to all UK masters degrees, obviously. Some of the 5 year courses are really good.

Computer Science isn't a massively useful degree in the real world. It's a shame there isn't a more vocational 'Software Engineering' course similar to Civil / Mechanical engineering which is geared towards teaching immediately useful skills in addition to the academic theory.
I would guess the main factors are a) the huge range in prestige or quality between universities and b) the large number of media and business degrees that are classified as computer science.

On the first point, look at the difference between the numbers at the top and bottom of this table:

http://www.theguardian.com/education/ng-interactive/2015/may...

These rankings are nonsensical in many ways, but some universities consistently appear towards the top and some towards the bottom and the employment stats plummet towards the bottom of the table.

On the second point, click on a university name in the link above and you will see a list of degrees. You can a) see that "Computer Science" can mean all sorts of different things and b) you can click on the degree name to see the actual course contents, which may not match what you think of as computer science:

* Business Information Technology BSc (Hons) http://www.lsbu.ac.uk/courses/course-finder/business-informa...

* Computer Graphics Technology BSc(Hons) http://www.kingston.ac.uk/undergraduate-course/computer-grap...

Isn't the problem right there in the first sentence? - "Almost every university in England offers courses in computer science". Obviously not all institutions offering a CS degree are equal & a quick look at a league table [1] shows that the 'Graduate Prospects' range from 100 (St Andrews) to 38 (Bolton). Elsewhere in the thread someone mentions software apprenticeships and I think anyone thinking of enrolling on the CS course at Bolton might be better off doing an apprenticeship instead.

[1] http://www.thecompleteuniversityguide.co.uk/league-tables/ra...

That's exactly right, and the article goes on to explain that. The scatter plot compares "UCAS Tariff" (A-level results etc) to unemployment.

I used to work with / mentor students who were somewhere in the middle to poor end of the scale. An apprenticeship is probably better, now that tuition fees are so high.

I've seen these threads numerous times, because the exact same effect has been seen in numerous western countries and studies keep popping up. Invariably commenters try to explain away the results, typically by blaming the people afflicted, and I can see it happening already in this thread. E.g. the popularity of CS in the media means that it attracts poor candidates; the quality of courses isn't good and people should choose carefully; people can't expect to get a job without spending all extracurricular time in quality internships and having x number of projects and OSS contributions under their belt and an active Github account; [insert country] is different because of [insert reason] (ignore that the same thing is occurring in many countries), etc etc.

My question is, why should CS be different than any other subject in terms of foisting responsibility onto kids who just want to gain employment? I have a feeling that if you started telling medicine/architecture/engineering/science departments that they need to start teaching students about entrepreneurial skills, and that students need to spend their spare time working on projects and battling for internships or they'll likely remain unemployed, that you'd be laughed out of the building. I'm not sure why CS is a special case, and why practitioners perpetuate this situation via blame in threads like this. It makes intuitive sense that employers want the best candidates, and these are mechanisms by which candidates can demonstrate suitability, but every other area seems to cope without them, so...why CS?

> that students need to spend their spare time working on projects and battling for internships, or they'll likely remain unemployed, that you'd be laughed out of the building.

Fighting over unpaid or underpaid internships and ass-kissing with professors so you don't wind up unemployed is standard operating procedure in every industry other than tech.

I can't believe the things my high school classmates in law and medicine put up with and how little money they stand to make until they hit 30.

Medicine has great job security, good salary (with the potential of doing private work on the side) and is very high status, law is high status and if you manage to make partner at a decent sized law firm (which everyone think they will as they don't know about the "up or out" policies a lot of firms have) then you can be making pretty serious money.
You've literally wasted the entire first half of your life before you catch up to software engineers doing law or medicine. Not worth it.

Finance, maybe.

Medicine and law, in my western European country at least, are vastly more reputable careers than software engineering. Perhaps you don't make as much money as a mid 20 year old, but in terms of reputation and social standing and so on, it's not even close. I'm sure that these intangible benefits have some sort of value, regardless of pay.
The UK has a huge glut of lawyers. I hear similar things from the US.

A lot of people go into it believing they'll make huge piles of money, but a lot of the money goes to the public school types who know someone/are related to someone in barrister's chambers.

The rest goes to corporate street fighters - the kind of people who get involved in patent troll cases, and send out cease and desist letters to the owners of domains one or two letters away from a famous brand.

High street laywers don't earn much, comparatively. They're also not particularly competent (IME).

There's a basic problem here - when someone finds a piece of popular software is crap, they're not surprised.

When someone discovers a doctor or a lawyer is incompetent, they are surprised.

In fact I suspect these professions are a lot less competent than we'd all like to believe. The real difference in ability may be smaller than we think.

But software is used by millions, so when there's a bug it can make the headlines, and it's always bad news for the public perception of the software industry.

Doctors, lawyers, and accountants all work personally, case by case, so it's easy to hide pervasive incompetence.

In software, qualification and even experience does not correlate with ability.

If you have a newly qualified accountant, doctor, architecture it is assumed they are at least competent to some basic standard (and it is expected there competence increases with age + experience).

This is NOT the case with software, it's possible to be a software engineer with 10+ years experience and still be terrible.

My own experience is that I don't test well, and this has made it terribly difficult for me to get jobs. I have two startups behind me yet it's made almost no difference.

>This is NOT the case with software, it's possible to be a software engineer with 10+ years experience and still be terrible.

Unfortunately most companies don't select for good software developers and neither do most software developers (ask people what their favorite kind of interview test/question is and you'll rarely actually get a good answer but you will often get a confident one).

Most companies don't reward being a good software developer either. Management mostly just don't know what it is you do and have no idea how good you are. Thus they just default to pretending that you're a disposable cog even when that behavior is self-destructive.

At best they'll make use of some poor proxies (degree class, university, popularity of the OSS project you contributed a one line fix to, their personal "gotcha" question, etc.).

Is it any surprise that people don't improve? With some exceptions, there really is no point.

> If you have a newly qualified accountant, doctor, architecture it is assumed they are at least competent to some basic standard...

Agreed, and this just compounds my confusion. Why are 22 year old science grads treated differently to 22 year old computer science grads from the same university :S

> In software, qualification and even experience does not correlate with ability.

> If you have a newly qualified accountant, doctor, architecture it is assumed they are at least competent to some basic standard (and it is expected there competence increases with age + experience).

> This is NOT the case with software, it's possible to be a software engineer with 10+ years experience and still be terrible.

Having known my fair share of software engineers, accountants and doctors, I can guarantee you that they are not that different. In every case some less experienced people are better than some more experienced people, and in every case some people dedicate part of their free time to their area: while some software engineers spend time in OSS and blog posts, some accountants read all the new legislation and participate in conferences, and some doctors read a lot of scientific papers and give lectures.

And yes, software engineers also read stuff and give lectures. But the amount of reading required by CS is a lot less intensive than accounting or medicine.

Medicine is a bit of a unique case in the UK.

Otherwise I would absolutely think that the best jobs would go to those who start work early. Certainly bears out my experience. I know plenty of graduates who didn't really think about careers until leaving and suddenly found themselves at a disadvantage.

Computer Science and tech are unique in that programming talent can be gauged to some extent and companies actually are interested in doing so.

Consulting, accountancy, banking, law, etcetera all seem, superficially, to be based a lot more on the ability to put up with long hours and some sort of prestige test.

If anything tech workers have it easier in my view. You don't just go and interview and get a job working in biology regardless of how special you are. (OK; I suppose if you had a cure for a cancer that may not hold).

I'm not sure I agree with the idea that you should be doing extra work just to get hired (there are cons and pros), but CS is a special case, along with a few other professions. These professions have a simple way to practice and extend your knowledge outside of work. You say medicine is different, but I'd say it's in between - you'd rather hire a more skilled doctor, right? Well, to get more skilled they pay for extra courses and exams with their own money, spend extra time and get more credentials. But they can't easily practice what they do in their free time. While junior doctor positions are not free internships, add course costs and they're not far off.

How about translators then. You've got two translators with (officially) the same level of training. But one constantly reads specialist literature in foreign languages, while the other one doesn't. Would you not hire the first one? Would you still claim that's foisting responsibility?

Like I say, intuitively it strikes me as an acceptable way to hire. If one grad contributes to 20 open source projects, and another one has never had an extracurricular project, you know who the better programmer is likely to be.

But is this a factor in other careers? You're saying that you'd be more likely to hire a doctor who's paid for extra courses etc, well perhaps, but do doctors compete in this manner? And do graduate doctors compete in this manner or are they effectively assured of a stable career?

>E.g. the popularity of CS in the media means that it attracts poor candidates

Well, that's somewhat true, although it's probably more to do with middle class jobs drying up in other professions than the media.

Increasingly it seems that Tube Drivers and Programmers are the only middle class jobs left.

Tube drivers because they can still shut down London.

Programmers because lots of people with more money than god still believe in unicorns and because they are willing to channel that belief into a fire-hose of capital financing.

> I have a feeling that if you started telling medicine/architecture/engineering/science departments that they need to start teaching students about entrepreneurial skills, and that students need to spend their spare time working on projects and battling for internships or they'll likely remain unemployed, that you'd be laughed out of the building.

Do you know why engineering students join the Solar Car team, or EngSoc, or do internships? The fact that it looks good on a job application is almost always a component.

It's not just a small thing either. At my current university, the engineering internship program has a 70-80% participation rate.

I shouldn't have listed "internships" above because they're a normal aspect of career development at this stage, so you're making a fair point. But take distinct extracurricular projects. Would an environmental engineer, for example, be expected to have a list of their own non-job related projects which interviewers could examine? (not just for bonus points in an interview, but as an expectation)
Maybe because the graduates are trying to do something totally different from what they've been taught, therefore requiring a huge amount of self-education in parallel with their course? If 99.99% of physicists specialising in fluid dynamics went on to pursue careers in plumbing we'd see a similar unemployment pattern.
One of the thing that's bothered me about the English education system (basically since I realised what was happening), is that it's basically a continuous process of limiting your option. For GCSEs I did 3-4 fewer subjects than the 3 preceding years, for A-Levels I did 8 fewer subjects than that. For university I did exactly one subject. And commitment to a subject at each stage is for the full duration of that stage (more-or-less). There's no concept of dabbling in a subject for a semester to see if it takes.

At university, the furthest I could deviate from a pure CS module, was "Russian for Scientists" and a few maths/stats modules. If you wanted to do anything more diverse, you needed to get special permission. I certainly wouldn't have been able to take do a calligraphy module and revolutionise computer typography. And if i'd decided computer science wasn't for me, i'd have had to throw away all degree progress and start over with the new subject, there was no concept of carrying over any accumulated credit into the new degree.

> At university, the furthest I could deviate from a pure CS module, was "Russian for Scientists" and a few maths/stats modules.

Lucky you. I was not allowed to take any more Math/CS courses by my last semester because I had already taken 'too many' and needed to fulfill my 'non-math' credit requirements. No joke -- the requirement literally just said 'non-math - 5.0 credits'.

What a load of bullshit.

I'm a guy who is teaching himself mathematics so curious to ask: is there a point where you can't just teach yourself and someone has to actually teach you in person?
If you have the discipline, no, not at the undergrad level at least. But it's a lot more fun with classmates to collaborate with and compete against.
I don't think you ever need to be taught in person - if you get a good teacher it just makes it faster.

There are loads of great math videos on YouTube - this is where I've best learned new math concepts recently.

We also have a similar requirement. There are CS courses I'd like to take but can't because then I'd not have fulfilled the 'discipline breadth' requirement.

I came to uni to study CS and I'd have thought that by the time I'm in my final year I'd be able to do just that.

I think it's ok to have a requirement in the first year but after then it's just a pain.

I always thought that computer science graduates should only be employed as scientists. Anythig else is a waste. Why don't we have more software engineering courses instead?