RSS Feed

New Adventures in Software


The Value of a Degree

Posted in Software Development by Dan on December 31st, 2008

Bill the Lizard (if that is his real name) wrote an interesting post revisiting the perennial debate of whether a formal Computer Science education is worthwhile for programmers or not.  Bill makes several good points in the post and the comments.  I’m paraphrasing here but he basically accuses self-taught programmers who dismiss a university education of arguing from a position of ignorance.  If you haven’t experienced it for yourself, how do you know it wouldn’t have been beneficial?

“Education: that which reveals to the wise, and conceals from the stupid, the vast limits of their knowledge.” – Mark Twain

There are comments, both in the Reddit discussion that Bill references and in response to his own article, that suggest that a CS degree is actually an indicator of a poor programmer.  As CS graduate myself, I cannot accept this hypothesis.  I’ll accept that whether or not a person has a degree is not a reliable indicator of programming aptitude, but I would be stunned if there was not at least some positive correlation between formal education and performance.  There will always be exceptions that buck the trend.  I’ve worked with some excellent developers who have not been to university and I’ve worked with people who have the degree but don’t know how to use it.

Self-learning is a vital skill for a programmer.  Even if you’ve got your degree, you can’t stop learning there if you are going to continue to be useful.  I do believe that it is possible to learn through self study anything that you could learn at university, but the problem with a home-brew education is that the teacher is as ignorant as the student.  You tend to learn whatever you need to know to solve the current problem.  It’s a piecemeal approach.  Over time you’ll learn lots but the danger is that, because you don’t know what you don’t know, there may be blindspots in your knowledge.  A good university course will be structured to teach what you need to know, even if it seems irrelevant at the time.  It will provide a broader education, introducing concepts and programming paradigms that may not seem particularly useful but which all contribute to building a deeper understanding of the field.

The vital word in the preceeding paragraph is the one emphasised: “good”.  All of this debate ignores the crucial fact that degrees are not all equal.  There are good degrees, bad degrees and many points in between.  This is perhaps a fact that is not as appreciated among those who have not been through the university process.  If we could factor in the quality of the degree, it would make for a more reliable indicator of developer aptitude.

Hiring Graduates

If you are responsible for hiring programmers, you should familiarise yourself with which universities rate best for computer science education (this list may be quite different from the overall list of top universities).  Something else to consider is the content of the course.  The clue is normally in the name.  If it’s not called just “Computer Science” or “Software Engineering” beware.  It may be watered down by some other subject or it may be called something like “Management Information Systems”, which might suggest that more time was spent writing essays than writing code.

Q: What do you call somebody who graduates bottom of their class at medical school?

A: Doctor.

Perhaps the biggest mistake when considering the value of a degree as an indicator of programmer aptitude is treating it as a binary proposition: any degree = good, no degree = bad.  This is simplistic and wrong.  Getting a degree is easy as long as you can last the distance.  Here in the UK, many universities will award a third class honours degree for an overall grade of 40%.  In fact, you can get a pass degree (no honours) with just 35%.  Think about that for a while before calling them in for an interview.  Over the course of 3 or 4 years, almost two thirds of everything that person did they got wrong, and they have the certificate to prove it.

For senior developers degrees are mostly irrelevant since they will have copious real world experience on which they can be judged, but being able to judge the worth of a degree is useful when hiring junior developers.  All else being equal, somebody who graduated top of their Computer Science class at MIT will be a better bet than somebody who has a third class degree in HTML Programming from the South Ramsgate Internet University.

10 Responses to 'The Value of a Degree'

Subscribe to comments with RSS

  1. ahmed said,

    on December 31st, 2008 at 10:58 am

    I think that the decision shouldn’t solely be made on whether or not the person has a degree or not but on their work. Having 5 years of experience working for a big firm doing the same work and working on the same problem day in day out shouldn’t be thought off as having experience. Nor just having a degree without showing some use of your skills be thought highly off.

    I am currently on an intern and going back to finish my software engineering course. Even without this internship I would still have years of experience as I have worked on open source projects, wrote my own software that is used by over 1500 people(open sourced it and maintained it), started and crashed many web projects. I don’t know about you but I would rather hire a person that has done the above than some one who has been working on the same problem for his whole career.

  2. Dan said,

    on December 31st, 2008 at 1:45 pm

    @Ahmed, I agree with you.

  3. Vatar said,

    on December 31st, 2008 at 4:09 pm

    I totally agree. I once thought that I didn’t need a degree. After years of being dissatisfied with my employment opportunities I returned to school and finished the degree. I look back now on code I wrote before the degree, and it is horrible. The funny thing is, most of the improvements in my code did not come from suggestions from a professor. They came from projects, either discovered on my own or from classmates. My degree was light on the essays and heavy on huge projects.


  4. on December 31st, 2008 at 5:57 pm

    “I’m paraphrasing here but he basically accuses self-taught programmers who dismiss a university education of arguing from a position of ignorance. If you haven’t experienced it for yourself, how do you know it wouldn’t have been beneficial?”

    Thank you for getting the point! I thought I stated it explicitly enough, but I was surprised by the number of people who seemed to get emotional and missed it entirely.

    I know that my own personal experiences bias my opinion, but I’ve been on both sides of this. I worked as a programmer for 8 years before I got my BS. Even with that experience behind me, I was still able to learn a heck of a lot at a university that’s nowhere near MIT.

    As I said in my original post, the debate is not whether a programmer with a degree is better than a different programmer who is self-taught. The real question should be how much better that self-taught programmer could be himself, if he took the time to get some guided education in addition to his self-study. If you haven’t done both, you don’t really know the benefits.

  5. Jan said,

    on December 31st, 2008 at 6:50 pm

    Employers are not interested in degrees, every monkey have it, much better is if you can show some of our code. If you want education, take 2 years/8 hours day and study by ourself. (I have CS degree)

  6. Adam said,

    on December 31st, 2008 at 8:44 pm

    As someone who just received his degree from a top university and landed a top job at a well known company, I can say without a doubt that a degree absolutely matters. My boss even said when recruiting “I am really only looking for candidates at Brown, MIT, Harvard, Brandeis, Stanford and UWashington…maybe others if we get a referral.”

    A degree absolutely matters. The top companies will not consider candidates unless they have 4-year degrees, I mean it’s a no-brainer at this point! If you think you can get by without a degree, you’ve got another thing coming. You’ve basically got to start a successful company to prove that you have the skills to land a top job…but then if you already own a successful company, why would you want to work for anyone else?

    The fact is that education matters. Anyone who will endure 4 years of a demanding degree from a demanding school has the commitment to understand the fundamentals to be a good scientist…not JUST programmer. The real question is what you DO with that degree.

    Of course people that graduate with a CS degree can do poorly, but that’s on THEIR heads, not on the lack of preparation presented by the school. I graduated with a kid who cheated on all of his projects, copied code…the works. He was fired in less than 6 months and is bobbing around for a job. This is no fault of the school, but of his own abuse of the system. This will happen with every degree, whether self-educated or from ivy-league, MIT-level schools.

    And that’s another thing…computer science != programmer!!! I can’t stand seeing all of these articles that says if you have a CS degree, you can only be a coder/programmer, or you’re supposed to be taught to be one. WRONG! CS degrees teach you systems, computer architecture, OS, artificial intelligence, graphics, logic, discrete math, theory and much more…not all of these lead to a job as a programmer, so they aren’t meant to turn you into one! Code is the language of machines, not the LIFE of them.

    Really the only people I see arguing against a degree are people who are too stubborn to get one. To me it’s a fact of life and you can either accept that an education will add significant value, or you can deny it and wonder why you aren’t getting a job or why you are paid less. The truly motivated individuals without degrees will prove their worth by going their own way…see Mark Zuckerburg and Bill Gates for details.

  7. Peter Lawrey said,

    on December 31st, 2008 at 8:49 pm

    I would say when you start your career, experience tends to matter most, i.e. what can you do. However after five to tens years, your promotion prospects tend to be guided by your career choices and qualifications.
    So if you want to be a junior developer or first level support for the rest of your life, a degree might be a waste of time, but if you want a career path, qualifications and quality experience make a difference.


  8. on January 1st, 2009 at 2:12 pm

    [...] New Adventures in Software » The Value of a Degree [...]

  9. Stop Blogging said,

    on January 1st, 2009 at 6:12 pm

    Who cares?

    A BLOGGER claimed you were dumb. Guess what, you blog.

    Blind leading the blind here.

    Stop blogging and tell that other doofus to stop as well.

  10. Shanon said,

    on January 2nd, 2009 at 4:39 am

    God help us all if people actually value degrees or experience over attitude.

    Knowledge and skills can be taught, passion, ambition and attention to detail cannot.