High Academic Results Make Better Programmers

better I was reading Beautiful Teams the other day. In chapter 2, Scott Berkun talks about “Ugly Teams” and weighs in with an opinion on academic scores and how they tell you nothing about a persons aptitude (of course when I say “person”, in my mind that translates to – “developer” :)). I’ve heard similar opinions so many times now that I felt like I had to champion the other side of the argument. Here are some quotes:

If we go beneath the superficial, perfect grades often mean the perfect following of someone else's rules

or

They (good grades) are not good indicators of passionate, free-thinking, risk-taking minds

or

The tragedy of a team of perfect people is that they will all be so desperate to maintain their sense of perfection, their 4.0 in life, that when faced with the pressure of an important project their selfish drives will tear the team apart

or

Beautiful people are afraid of scars: they don't have the imagination to see how beautiful scars can be

Frankly I have to say – that is all so much bullshit. How is it that in the world of software, mediocre grades have come to be equated with creativity and flair and flashes of genius. “Oh, he is an academic underachiever you say – well that must mean he is a creative, entrepreneurial go-getter who thinks outside the box”. You see they just didn’t get the poor guy at university, it is so sad that his genius has been overlooked. What a load of rubbish, why is it that this side of the argument is never vociferously argued by people with perfect GPAs and a record of academic excellence? Sure, poor grades can be an indicator of a creative mind but they can also indicate laziness, inability to concentrate, lack of knowledge and skill, inability to complete tasks, poor interpersonal skills etc. Good grades can sometimes mean slavish obedience (rarely), but are more likely to indicate, superior knowledge, better study skills, adaptability, great teamwork skills, quicker mind etc. It is beyond me how high academics can possibly indicate lack of passion and creativity.

So you want to employ some people, you have some high academic achievers and you have some mediocre ones, who do you hire? Do consider the average Joe, those grade jockeys are just law-abiding drones, Joe is the radical who is going to revolutionise the industry, he just needs the right kind of motivation. What about motivation then? Lack of the right kind of motivation is often cited as the reason for average academic performance. If only our underachieving friends had the “right” kind of motivation, they would be brilliant. Well, it’s not as if the high achievers get their kicks out of boring lectures and worked examples. The difference is that the high achievers are able do well and motivate themselves despite the banality and minutia. So which skill is more valuable, ability to self-motivate no matter what, or passively waiting for the “right” type of motivation? Are you sure you have the “right” kind where you are?

Let’s get this one out of the way, cause it will inevitably come up. Yes, there are plenty of people in the world of software who had average (or worse) grades when they were studying, but have since “made it”. They gained kudos, money, the acceptance of their peers (either or all of those) there is no arguing this point. But that in itself is the problem, these academic underachievers who succeed have the spotlight cast upon them, because people didn’t expect it of them. They get hailed and written about – see, even the average Joe can make it. Thing is – they are the exception, not the rule. These people succeeded “despite the fact” and this is the very reason why they are interesting. People love an underdog story, makes us feel good, nobody wants to hear about the brilliant guy who lived up to his potential and made it big, as per expectations.

Rather than looking at high academic achievers as conformist drones, let me paint another picture for you. Those who get good grades are the ultimate survivors. They enter an environment, evaluate it critically to figure out what skills they need to succeed and thrive in said environment. They then put in the effort to gain and/or sharpen these skills. At this point they can apply their knowledge and skills with precision to get to the top of their environment and stay there. Excellent academic results are just a side-effect. And you know what, it’s not as if being a high achiever is black magic, all it takes is a little bit of work and practice (I am so going to cover that in a later post).

So yeah, good grades make better programmers, hell, good grades make better anything. And there is nothing that stops a high achiever from being a passionate, free-thinking, risk-taker. When faced with the pressure of an important project high achievers won’t get torn apart by their selfish desire for perfection, infact they will be better able to adapt and achieve superior results because that is what they do – evaluate their environment and figure out what is needed for them to succeed. Beautiful people (academically speaking) are not afraid of scars, but they do have the knowledge and skill to avoid the scars when they can and create superior scars when they have to. 

Image by GogDog

  • http://www.shqiperia.com Mandi

    Hello :)
    Your article is very interesting and you have covered all the arguments (cannot argue on any of them). Unfortunately I have not read the Beautiful Teams, but the point is that in a Team you do not need only ACES. Especially in a team of “developers”. I have seen colleagues almost fist-fighting on “who is the best developer” just because they would not accept being second!
    I have leaded a small team of developers (mostly 4 developers), and I have realised that in a team you need different characters! You need inovators, you need problem solvers and you need just coders!

    Discussing further, I agree that good grades produce good developers (as we both see people=developer), but I do not agree that bad grades produce bad developers! Especially in Developing!

    Good Grades are a form of conformism! The Education System (School, Universities) today are not knowledge oriented (anymore), they are Grade oriented. There are students who have more knowledge in specific topics, but fail to get a good grade because they just don’t care, don’t agree with the same old syllabus of lazy professors who repeat everyyear the same jokes.

    I will give you an example. I finished my Master Studies in Germany some time ago. I took a subject called “Interactive Distributed Systems”. It was basically about the Interactive Web (web developing etc).

    Now, I have been a developer for more than 6 years and in the exam I got a 3.3 which is one of the worst grades! (scale is 1.0 – 4.0 for a pass grade, 1 is the highest). Why!? Because the syllabus was about “Why should we use email!?” (the answer; because of maillist, being informed, saving the trees and similar mediocrities). Other questions where similar!

    Now fuck the good grade! I refuse to get a 1.0 in such a course! I just have to get the credits! And this does not make me worse software developer! Being a conformist is not a good thing! It does not lead to revolutions!

    • http://www.skorks.com Alan Skorkin

      Hi Mandi.

      I agree that a team doesn’t need to have all aces, but not all high academic achievers are aces :). But you’re right that you need complementary skill sets on a team, and if some of those people happen to have had mediocre academics, that’s fine – once you have several years experience under your belt, there are better ways to find out how suitable a person is than his academic results.

      Bad grades, certainly don’t have to produce bad developers, but on average you’re much more likely to be a mediocre performer if you have mediocre grades, they people with crappy grades who are great performers are uncommon.

      I respect your desire to take a stand, here is my opinion if you want it. It was a battle not worth fighting, it would have taken you no energy to just give the correct answers you needed to do hardly any study. I’ve done plenty of subjects like that, you put in almost no effort and get a perfect grade and need never think about it again. Taking a stand in these kinds of situations is meaningless. But that’s just me, others may feel different.

    • Oliver Stieber

      Ahh… either your a high grade academic, or you’ve not worked with many or known many.

      Now it does depend on exactly what the did and how they did it and where examined, but the worst, by an order of magnitude beyond crap, programmers I’ve ever known have been CS grads, Math PHd and Physics PHd, except on guy who could really use a keyboard.

      All the best ones I’ve known has had next to no qualifications at-all and are self taught or taught on the Job.

      I put the former down to the following,
      people who need to be taught right from wrong and remember things by wrote for instance will do very well in (certainly UK) current academia in many subjects.
      When they do really well they think, like they are told, that they are super-brainy and going to rule the world (well bit of an exaggeration,but not much) really big EGO.

      Problem is they only know how to do what they’ve been told, often by wrote and don’t actually know how to think much beyond that.

      They also may be very specialist.

      All the good smart ones start up their own company etc….

  • http://gabrielroyer.com Gab Royer

    Hi Allan,

    As a software engineering student, I beg to disagree. However the opposite, that the best developers were underachiever, is just as false as well.

    At my university, I know a some people with high grades (GPA above 3.5) and some with really high grades (GPA around 4.0), and I can tell you : good grades does not _necessarily_ equals good programmer. Nevertheless, most of them are excellent programmer, but what I’m here to say is that it is not an absolute causation as a fraction of them, despite their good grades, are often worse coder than 2.0 GPA peoples due to a lack of interest or motivation towards coding.

    The thing is that those persons, kind of like Mandi said, are grade oriented instead of knowledge oriented. They aren’t the kind of people that will work on personal pet projects as all they care about is their grades. For them programming is just a way to get their grades, not a tool of craft.

    To sum it up, being a overachiever doesn’t always mean you are a fantastic programmer, even though it is more likely.

    Virtus in media stat my friend.

    • http://www.skorks.com Alan Skorkin

      Hi Gab,

      Your point is perfectly valid and you’ve also made my point yourself. If you have good grades it is MORE LIKELY that you’re knowledge oriented and cab be excellent at what you do. But you’re certainly correct bad grades doesn’t mean that you’re going to be a worse programmer, it is once again all about the likelyhood.

  • Cory McCarty

    The problem is that both of the sides you include in your post are wrong. One side, you suggest, thinks that strong academic performance indicates poor suitability as a programmer. The other (your side) suggests that strong academic performance indicates good suitability as a programmer. The reality is that academic performance is a poor indicator of anything. I didn’t do very well when I was an undergraduate, but I work in an organization that has a very strong institutional belief in the importance of academic performance. That belief is strong enough that I very nearly was not hired. And, almost three years later, I have earned respect and accolades from my peers. I currently work with plenty of people who had exceptional academic careers. And I’ve worked with quite a few whose academic performance was similar to mine or worse. And I can tell you from experience that there are great programmers in both groups and there are also piss-poor programmers in both groups. The numbers do not appear to favor either side.

    Of course, my observations are entirely unscientific. But they also fit something that is fairly intuitive to me: There are many reasons why a given individual might have strong or weak academic performance. Some of the drivers (on both sides) are characteristics that make strong software developers. The idea that any single numeric metric about a person is enough to judge their suitability (or even strongly indicate it) is the worst kind of intellectual laziness. Is GPA something to consider? Sure! But the very fact that there is so much argument about it is compelling evidence that people are taking it way too seriously. It is just one of MANY factors, and it should be weighted FAR less than experience, attitude and enthusiasm (preferably as determined in interviews with multiple current team members).

    • http://www.skorks.com Alan Skorkin

      Cory, thanks for sharing your opinion,

      I completely agree with your assertions, experience is a lot more valuable and you should certainly do your due diligence when interviewing, I’ve even written about this stuff before. But all other things being equal, if you have two graduates with wildly different GPAs, who are you more likely to favour? There is a reason why Google always liked to hire Phds :).

      • Steven

        And this is why Google is getting less and less innovative. Actually, I haven’t seen much innovation from Google lately. Their big thing is search, of course, but apart from that there has not been much that impresses me. Full Disclosure: I have a PhD ;-)

  • Al

    1) I’ve never seen or heard of an applicant discriminated against because of good grades. That may exist, but it is absolutely not a prevalent trend — at least on the East Coast USA.

    2) Academic performance is a very poor indicator for success in most software jobs. Academia is a very different world from most businesses. Timelines are different, pressures are different and team dynamics are very different.

    3) Anecdotally, the best young software developers I’ve worked with have been college dropouts, and the best old software developers I’ve worked with have had graduate degrees. I don’t think that actually means anything, other than to reinforce my experience that GPA matters little.

    • http://www.skorks.com Alan Skorkin

      The best old software developers were young software developers at one point. I have found age and experience only sharpens what is already there from the start, I am yet to see or hear of anyone go from totally crappy to completely awesome over the course of a career.

      And it is true noone discriminates based on good grades, but everyone seems to go to great lengths to point out that you shouldn’t discriminate on bad grades, I though i’d just swing the pendulum the other way a little. It is unhealthy to have only one-sided debates/assertions.

  • Lets call me george

    As a 1st semester drop-out from uni, I have since worked 3 jobs in IT.

    First job I rose from junior css developer, to managing the company for 3 months while the boss went overseas after just 6 months. Small company, but still.

    Second job was taken as a break / rest, and a change of pace, and I wasn’t particularly ambitious there as far as I was concerned, but still managed to fix more bugs than the 5 other people on the team put together, and implement the 2nd greatest number of new features on the team.

    Third job (my current one), I was employed as a junior due to my lack of qualifications, and because I don’t have too many years of experience behind me yet. I have been nominated in every staff awards day since I started (winning half of them). Also delivered a project that is currently nominated for an Australian-wide award with a fellow flash dev in the company. We have just released a site that was rather ambitious to say the least, half our devs left during the already tight project for various reasons (better pay, returning to country of origin, travelling the world, etc), yet we pulled off one of the smoothest launches that the department has had on these sites in about 5 years. The 300 hours I worked last month has quite a bit to do with that.

    I’m now in line for a payrise of approx 30k AUD, and it looks like I’m being given lead on the next project we have coming up shortly.

    The problem with uni? There is no REAL result from your work. There is no PRACTICAL application of knowledge. Yes, it’s great to know about MVC, and OOP and all the acronyms, what they stand for, and how to implement them. Great, you know what agile is, and how it’s implemented in the perfect world. But you know what? Outside of uni, you don’t get to implement perfect MVC. You don’t get to implement perfect agile. You don’t always get to use perfect OOP. You often come in on an existing solution, or design decisions get made for various time / financial reasons which just don’t get considered in university. Your work has a real result, in more ways than one: You get paid, therefore it is your livelihood, AND it goes live, and becomes an integral part of whatever company / corporation it is you do work for.

    I know I said at the beginning I’ve only done 1 semester of uni, so what do I know? I know because, while I’m working real-world, gaining experience and knowledge, I’m coming home after work, and hanging out with my mate, who is going through the course I would have been doing, and helping him on his assignments.

    I see the perfect implementations of design patterns requested by professors, and I see the professors stuff up too. They’re not perfect, and design patterns can be interpreted differently by different people.

    Also, it doesn’t matter how good an individual is if they can’t communicate with a team. Just because someone nailed a 4.0 doesn’t mean they’ll be able to meet ANY deadlines on any major projects, because the second a project becomes major, you need to have more than 1 developer working on it normally, and you need people to be able to adjust, adapt, and communicate, and these aren’t necessarily skills required to nail your grades at uni.

    One point regarding good marks too. I knew a guy that managed to get over 97 UAI in his HSC (100 being the best, I was around 85). Quite frankly, he’s an idiot. He can parrot a textbook to you verbatim, and yeah, that’ll get you marks, but when it comes to common sense, or original ideas… NADA. There is no test that marks common sense and wisdom over knowledge and memory, and these are vastly more important things to have.

    And (hopefully) my last point, university often involves dealing with multiple languages briefly and rapidly, and none in any particular depth. This is fine, and it is a good basis for teaching someone how to program, but the thing is, if you’ve been coding since you were 8 (as I have), you don’t want to learn what an array is, or why you might want to use a linked list. That stuff is old-school. University gives you the skills to program, not the skills to specialize. Only interest and genuine enthusiasm can give you those skills, and once again, this is not something that is very easy to test for fairly.

    So yes, good grades may produce good developers, but bad grades may produce good developers too. When I was hiring for the first company, I found it more useful to pay attention to personality and willingness to learn and adapt, rather than “oh hey, this person already knows everything I was going to ask them, they will be perfect”. I think it’s better to look for interview questions that require a person adapts on the spot, rather than quotes a text-book.

    My Google-fu has provided many last-minute saves to issues that more senior positions within the company have spent hours on, and released to production without fixing in the past. Could I, or any other candidate have told you the answer straight up if you had of asked? Probably not (the most recent case, there was a single article on the issue as it was extremely specialized). But the willingness to learn and the search and thirst for knowledge prevailed, and always will in my opinion.

    • http://www.skorks.com Alan Skorkin

      You make many good points. Here is how I look at it, no matter how bad or imperfect your professors are they point you in a particular direction. It is up to you then to take where they are pointing and learn more. You may learn about MVC or patterns and decide to research it yourself which will eventually lead you to discover the existence of the GoF book or the Rails framework. You may then decide tor read the book and play with Rails and learn even more. All you had to do was connect the threads. You never would have known about any of this if someone hadn’t pointed you in the right direction in the first place.

      I have found that people with good grades are much more likely to have this trait of wanting to connect the threads and this is the meat of my argument. After you’ve researched something that deeply it is really not difficult to pass exams and get good grades. Infact it sometimes takes more effort to dumb yourself down and not get good grades :).

      It is fine if you’ve been coding since you were 8, but most people are not in the same boat. If you don’t know something exists, you can never learn about or research it. So how do you find out it exists – you connect the threads.

    • Dani Shorel

      That’s because starting in the late 90, OOP is seen in ‘market aware academy’ as the only good paradigm and then a couple of years later design patterns as the holy grail of programming. In other words, academy totally bought the C++/Java vendors agendas, forgetting about what the basics really are.

      But in my view, design patterns are just an overrated way to sell books and software stacks. OOP hierarchies are just a way to over-design most solutions. An OOP hierarchy is not the last word in software design, nor the best thing we should aspire. Not everything should be an object, and a lot of times a closure is faster to code and faster to run.

      I’ll tell you this way: design patterns are a way for a lesser language to implement concepts a superior language would have a syntax for. When you use design patterns, you are another layer of the compiler because your language is not powerful enough.

      A function or subroutine is a ‘design pattern’ for the assembler language. Now, do you prefer to work in assembler with the ‘function design pattern’, or do you prefer a higher level language with real functions?

      Do you want to still be doing some of the work of the compiler, or do you want to focus on the problem at hand?

      All design patterns can have an implementation in very high level languages like Lisp.

      Of course design patterns don’t translate that well to the real world, as they are a flawed concept from the start.

      Now, about the ‘real’ academy (now long forgotten): if you can read the SICP book and do all exercises with correct answers, I can guarantee that you are a fantastic programmer and will probably be a great addition to any software team.

      • http://www.skorks.com Alan Skorkin

        I really like the SICP book, but man that thing can be tough going. The other issue is if you try to get into it as a reasonably experienced programmer, it can be hard to separate the stuff you already know from the rest. And lastly, since it deals with a functional language, which is a completely different paradigm to most languages used in industry, is it really a good indication of your value to a software team?

  • Lets call me george

    Oh, and just to clarify that I’m not talking about small freelance projects in my above post, my client list for the last 4 years includes companies like: Westpac Bank, Commonwealth Bank, Qantas, Yahoo, Mitsubishi, Tesltra, Holden, Bundaberg Rum, Adcorp, and Tooheys.

    I think I’ve only worked on about 5 minor sites in my entire employment actually

    • Lets call you up yourself

      I don’t like doing this but reading your reply was a total waste of several minutes of my life! Way to toot your own horn buddy.

  • http://fullof.bs/ John Haugeland

    Man, you and your friend sure do like making broad assertions without data. Turns out this has been studied, and you’re both wrong. Try looking it up, instaed of pretending that your belief system constitutes fact generation.

    • http://www.skorks.com Alan Skorkin

      John,

      If you do have some concrete data regarding this subject it would be great if you could share this with everybody else.

      I don’t believe that I ever said that my opinion is fact (and for that matter neither did Scott in his essay), it is an opinion – based on experience, but still only an opinion.

      When you talk about “my friend” I assume you mean Scott Berkun? That’s like saying the White House mail-clerk is friends with the president :). Scott has been around way longer than me and is well known and highly respected. Maybe someday I might be in the same boat. However I do appreciate the misunderstanding :).

  • ggruschow

    Cute rant, but you completely failed to support the hypothesis presented in the title. That’s an automatic C, sorry. Let me know if you want to take a make-up test.

    Oh, I’m sorry. I know it’s tough losing your 4.0, but don’t cry. It’s OK. The best teams don’t care. You see, somebody went back and couldn’t find any data correlating GPAs to performance one way or the other.

    Admittedly they weren’t academic researchers themselves, but they couldn’t find any useful data on programmer performance. Lacking a study, they decided the most logical thing to look at to determine a programmer’s performance is… the programmer’s performance.

    • http://www.skorks.com Alan Skorkin

      That wasn’t a rant by any stretch of the imagination. Trust me, when I rant you’ll know about it :).

      We’re not in school here, I don’t actually have to support my hypothesis with hard data. We’re on the web, where headlines are used to draw people in and create debate around the actual content. You read it, didn’t you :)?

      How do you look at a programmers performance when they just graduated and don’t have any open source projects under their belt (which really would tell you only about their coding ability anyway, not interpersonal skills, ability to start and finish tasks, give and take direction, etc.)? Many have tried to find a perfect way to interview in those situations and all have failed and grades remains a vital part in that situation.

  • Rob

    You seem to just be supporting the present consensus, and really have not offered any new arguments as to why grades should remain relevant. I agree that good grades are more often than not a poor judge of intelligence and aptitude. Personally, I received excellent grades in my computer s Valedictorian cience classes, and I consider myself a great developer. However, I have many friends who simply either had too much on their minds, knew the grades didn’t matter, or couldn’t be bothered to do the busywork just because it was scripted into the lessons. And they’re better developers than me.

    Another, more abstracted example is the Valedictorian from my highschool. She excelled in her classes, all of the teachers loved her, and she was a generally popular girl. But when you actually had a conversation with her, she was as dumb as nails. She didn’t have an original thought in her body, and she spouted whatever spoon-fed cliches she had for breakfast that morning. What’s she doing now? She got pregnant straight out of highschool and is probably working at Wal-Mart.

    Academics are simply not a good measure of intelligence, aptitude or human agency. What makes a good developer is the ability to look at a problem from an angle most others would never think of, which is simply not something most mass-produced academic programmers can actually do. Unfortunately, many people who “think outside the box” are just that… people who think differently from others – and they’re most likely to be passed over as an introvert or a passive-aggressive procrastinator.

    • http://www.skorks.com Alan Skorkin

      Hi Rob,

      You’re right I didn’t cover too much new ground, as I said in one of the comments above, I was not trying to present a revolutionary theory, I was just trying to balance the pendulum a little since so many people are trying to assert that grades don’t matter at all, as I said, one-sided arguments are dangerous.

      That is not the only thing that makes a good developer these days. Now more than ever in the workplace, social skills are vital, ability to communicate clearly both written and verbal, ability to work well with other people etc. There are many other soft skills. If someone comes across as a passive-aggressive procrastinator, it may be a mistake or it may not be. If a person thinks differently that is fine as long as they can still have a measure of these soft skills and be able to fit well into teams of people who are not all developers. But what if they can’t? I’ve gone off-track a little :). Let me just say, one of the subsequent chapters in Beautiful Teams is an interview which explores the mindset of developers further and tries to give pointers on how they can get along with the “normals” :).

  • Mike

    Mandi I can see where you’re coming from, however it was never mentioned that ” bad grades produce bad developers” – just that good grades don’t produce bad developers, they produce good ones.

    Additionally, with your score of 3.3 – from what I understand you are implying that you could have easily gotten a better grade – but didn’t because you thought it wasn’t worth it. This is exactly what Skorks is arguing about – “Lack of the right kind of motivation is often cited as the reason for average academic performance”. The argument being is that a similar thing will happen in the workplace, the developer won’t bother completing something to standard because they don’t think it’s worth it. A typical project, just like a uni subject, does have mediocre and even backwards aspects. So, in a way, that attitude (not necessarily in your case) can make a worse developer. The developer would have the skills but not the motivation to do the work well.

    • http://www.skorks.com Alan Skorkin

      Good to hear from you Mike :), and yeah you got exactly what I was trying to convey.

  • http://www.listaurus.com Adrian

    I like the fact you’re stirring debate (very unlike you… :)). It does make for good reading and interesting conversation though.

    IMHO, when discussing academic results, a discussion about the way they were gathered should also be had. For example, take Web Development as a career. Gathering academic results via Exams – usually filled with questions like “What package is System.out.println located in?” – isn’t the best reflection of your skills. Gathering results via an Assignment/Project – Here is problem X, solve it – would be a much better choice. A career in Mathematics on the other hand…

    What I’m trying to say is that, academic results, on paper, without discussion on the way they were gathered, are Black and White. But there is ALWAYS Grey.

    So what’s my story? Throughout University, I had serious issues with being nervous at exams which unfortunately almost always counted for 70% + of the overall mark. Assignments were the complete opposite, but counted for only 30%. As you say, I’ve “made it”, even though my academic results say otherwise…

    • http://www.skorks.com Alan Skorkin

      Yeah you know me, god-forbid I should ever create any controversy :).

      I know plenty of people who had average academic results but have done extremely well in their careers since then (like yourself for example :)). I certainly wasn’t trying to assert that all those people are crap :). What I was trying to point out is the fact that just like there is often value in ignoring the results in favor of other indicators, there is just as often value in taking academic results into account.

      Like you mentioned yourself, I was trying to create some conversation to balance the stakes a little regarding the issue. It is simply presenting my opinion based on my experience. And plenty of people have extracted meaning out of what I said which wasn’t really contained in my argument (but is related in some way). It’s not like I didn’t realize that might happen :), but that is fine, it is a discussion worth having .

  • http://www.scottberkun.com Scott Berkun

    As I’m quoted here, hope you’ll post my thoughts on this.

    The entire essay refered to, Why Ugly Teams Win, is free and online – if you put my quotes from above in the actual context I wrote them the quoted passages above read differently than they do here.

    The focus of the essay, expressed in the title, is about being tough and fighting through tough times as a team. In that context, as an aside, I did call out people with perfect grades as possibly less resiliant, on average, as they’ve never failed a class. They’ve less likely to risk failure because they haven’t experienced it yet. I did not claim it was a universal principle. I also mentioned, in the same paragraph, I had crappy grades and of course I’m biased :)

    Does this mean I’ve never met exceptions? Of course not. And I’ve met many people with bad grades who were dumb as rocks, and not as useful. The spectrum of all programmers everywhere is wide. I do agree with Cory that academic performance, in general, is a poor indicator of anything.

    But I did write the essay, based on 15 years or so of experience, honestly what I believe. On average, if I’m hiring a team that has to go to war, I want people who have already been through some kind of hell and anyone who has done anything perfectly well for 4 years is unlikely to qualify. More to Cory’s point, someone with a 3.7 is not necessarily any more qualified than someone with a 3.1. All I need to know as the hiring manager is that their qualified to be in the interview room. After that the resume and the GPA don’t matter much.

    I’m not posting this to convince you. But I do have to point out to you that the fact you think I’m wrong doesn’t make my opinion bullshit. It makes my opinion different. If you can’t distinguish the two, there’s not much else I can say.

    John: If you have data please post. Love to see. Cheers.

    • http://www.skorks.com Alan Skorkin

      Hi Scott, I really appreciate you sharing your thoughts.

      Considering the last part of your comment, I feel really bad. My post was never intended as a personal attack on you. Your opinion is just as valid as mine, potentially more so, considering you’ve been at it much longer than I have. Once again, I used strong language forgetting how it might sound to people who don’t know me personally. Just another instance of my big mouth getting me into trouble :(. I really hope you aren’t too offended.

      I do agree with the main assertion that you make in the article (teams that have been through adversity are stronger and more resilient as a result). I also admit to taking what you said out of context a little.

      I guess when you called out people with good grades in your essay, I discovered a peeve I didn’t realize I have – possibly exacerbated by the fact that I have heard similar assertions before many times. Considering your essay was a catalyst I also have to apologize for zeroing in on a detail to the exclusion of the general context, we “computer people” tend to do that sometimes :). And you did indeed mention your bias, it was a footnote (see what I mean about minor details :)).

      Lastly I have to point out that I am also biased. I’ve always had good grades, not perfect, but pretty good (I don’t believe I’ve ever failed a class). I’d like to think that regardless of that I am reasonably resilient and not afraid of failure (and I am not the only one I know who is like this). As I said, I am biased the other way.

      One of the main points I was trying to make was that discarding grades completely is just as shortsighted as putting too much emphasis on them. It is a different point of view, not better, just different – I believe there is value in both.

  • http://grumpyop.wordpress.com Mike Woodhouse

    Goodness, it’s like VB vs C or Rails vs Django or Windows vs Linux up there, isn’t it?
    I think what we’re seeing is a fairly strong anecdotal assertion that programming ability, by whatever more-or-less subjective measures we choose to apply, is not strongly correlated with academic “success”. And to some extent I agree. I think it depends what brand of programming and what form of academic background we’re looking at.

    There are areas of development where a rigorous academic background, particularly (cough) Computer Science, must be almost indispensable. I’m thinking of OS, language, large-scale application development: Solaris, the Python interpreter, Office.

    When we move more toward the “Enterprise” application development arena, however, I’d suggest we’re heading into “programming as craft” territory. Using a lathe, rather than building a lathe. From (30 years) experience, I’d say that we’re into a very different domain, one in which the academically successful individual may (I say “may”) not hold as clear an advantage. The best enterprise application developers I’ve encountered often need to have a broad range of skills, including the interpersonal, many of which don’t actually go too deep, which is fine – just enough to get the job done. I’m not saying that graduates don’t have these attributes, just that they’re not something that’s acquired or necessarily selected for in higher education.

    But then again, I’m another academic “failure” (BSc Hons), now the only non-graduate in a team of PhDs. I defer to them when it comes to mathematics, they tend to listen to me when we’re discussing programming matters.

    Would I have followed a different path if I’d been better at memorising things? Possibly, although I suspect not – the main thing I acquired from my University courses was an interest in programming. Which was nice.

    I’ve hired non-graduates over graduates of all flavours. And vice versa. I don’t work in domains where a vocational degree is an indicator of necessary knowledge (see above) so it’s not something for which I select. I want to see evidence of flexibility, aesthetic sense, ability to produce good code in a reasonable time frame – I want people who think well. “Smart and gets things done” doesn’t have to have a certficate.

    • http://www.skorks.com Alan Skorkin

      Hi Mike,

      Yeah it does seem like there are a few strong opinions :), you should see the Reddit thread :). You make some very good points, “Enterprise” vs CS intensive type of work, it is yet another side to the argument – very relevant and I can’t disagree :).

      What you said about following a different path reminded me of my time at university, when I was tutoring a couple of subjects made up mostly of older students who were doing their masters degrees. Almost universally these people were much more prepared to pay attention, wanted to know more and generally did their best to get the most out of the subjects they were doing. This is completely unlike their undergraduate counterparts (with some exceptions). I wonder if you took all the people who had mediocre grades and put them back in school knowing all they know now about the world (not necessarily about their profession). Would they still choose to get average grades?

      But you are of course right, I well rounded individual (ability to learn, interact, code, question etc.) is almost always preferred over someone who has only grades to their name. It is the finding of those qualities, that is the real challenge and nothing prevents an academic achiever from having all of that, but then again the reverse is also true.

  • http://www.ravigehlot.net Ravi Gehlot

    There are really good programmers in college and most of those people have high GPA grades. If you get a Bachelors Degree from a good University, that tells something about you. First of all, it’s all time hard to go to school and get grades. (if you go to a good University). They make the assignments really hard(thinking intensive) and they give you a lot to do in a short period of time. If you can do what they ask you to do then you got time management skills, you also show multi-tasking on multiple topics while keeping all the deadlines for your upcoming exams and focusing on your everyday “must-do” homeworks. While all of that is going on, you have no money, you need to cope with your day-to-day life necessities (adaptability skills). It’s not easy. Getting a Bachelors Degree does show that you have overcome a MAJOR milestone in your life. It’s something to rely on. NOW….does education make you a better programmer? WHAT I BELIEVE and this is ONLY my personal opinion (which I am entitle to) THAT…an Academic Degree can aid a programmer in becoming a “GOOD problem solver”. That’s what we lack out there in the market…people who can come up with good working ALGORITHMS.

    • http://www.skorks.com Alan Skorkin

      Ravi,

      This was another point that I was subtly trying to hint at :).

  • henk

    This is a fairly old discussion and is strongly related to those discussions about whether education is useful let alone necessary for a development job.

    To myself, being an above average (but not absolute top achiever) M.Sc. it has always seemed to be some kind of envy from those not having the ability, skill, talent or simply endurance to obtain a computer science degree.

    In our modern society it’s often not acceptable to be anything less than the best. So, if you haven’t obtained that degree, how do you defend yourself from not being the best? You just downplay the importance of a degree. It’s a pure selfish thing. By downplaying a degree (which you failed to obtain, or obtained with below average grades), you’re trying to boost your own skill level in the eyes of others.

    The argument is often that comp. sci. doesn’t teach you ‘real world’ skills. Who needs knowledge of say finite state machines on the job, while knowing the ins and outs of the latest Java 1.x API will get you much further? Who needs knowledge of OS and compiler theory, since what you should really know is how to prevent XSS and SQL injection.

    The problem with that argument however is that a comp. sci. degree (with good grades) doesn’t preclude someone from having such knowledge. On the contrary even. A passionate developer will learn those things on his or her own account. Of course, to be honest, theoretically this is also true the other way around. Someone without a degree could have studied all typical computer science topics on his or her own account too, but in practice this is far less likely and almost never happens. If you really go through all the trouble of studying all that stuff by yourself, you might as well prove your worth and apply for that degree anyway.

    As for the usefulness of comp. sci. theory on the average enterprise job, I definitely see the usefulness every day. Okay, so I won’t likely be writing that compiler which I theoretically could write after acing that compiler construction class, but the mere fact of knowing some intimate details of how compilers work often allows me to better understand why something fails in an existing compiler chain and how to interpret cryptic error messages. Where people without such knowledge often fallback to utterances like: “Yeah, the code fails with some weird error messages”, I can often actually deduce a root cause. Next to that, it also greatly helps me to organize my own data transforming code, since I have some idea about an abstract and structural approach on how to do such transformations. Without such knowledge, people often produce highly unstructured code, with constructs being placed almost randomly.

    I took compiler construction as an example here, but the same holds for theories learned by studying operating system architecture, hardware architecture, networks and various more theoretical subjects like theory of computation, graph theory, etc.

    • http://www.skorks.com Alan Skorkin

      Hi henk,

      You make an interesting point. I’ve been doing a lot of stuff to do with search recently and trying to understand a little bit more deeply how it all fits together and branching out from there. And you know what, EVERYTHING you learned (or should have learned) in your degree is suddenly useful again if you want to know something at more than just a surface level.

      I can’t tell you how many times I’ve gone back to look over my books on OS’s and computing theory (those finite automata are useful for something). And I really regret letting my maths skills lapse for the last 5 years. The good thing is, while I am rusty in all this stuff, it does slowly come back because I did learn it at one point and read more widely on the subjects than what was necessary. Anyways, I am rambling.

  • bad grade getter

    this is total bullshit. mindless drones who can bend to the pointless rules of the system aren’t anything special…

    • http://www.skorks.com Alan Skorkin

      My friend, I would have taken you more seriously if only you had put down your real name. As it is I wouldn’t cast stones at mindless drones when you don’t even have enough courage to put your name behind your convictions – on the internet.

  • http://weswilliamz.blogspot.com/ Wes Williams

    The only time scores from school matter is in the first job out of school. In this case you are hiring someone who has probably never really done the job. However, hi scores are an indication that they can learn and did at least memorize facts which is all most schools test on.

    After this it does not tell you much. The question after the first job is have they continued to learn and have they been able to apply that learning. Grades cannot show either of those points.

    I sure would not put high grades as a reason not to hire someone but in the same point I have not seen a case where they make difference in and of themselves as an indicator the person will be a great employee.

    • http://www.skorks.com Alan Skorkin

      You’re certainly right in that grades are only of paramount importance right out of school, after that they only serve as a bit of history. But, it can be bad history or good history, i’d rather have good history personally. It also talks about patterns of behaviour, like you said, have they continued to learn and improve? The likelihood is, people with decent grades will follow their established patterns of behaviour, the same is true for those with worse grades. None of this is an absolute, of course, but nevertheless.

  • bush

    I employed a graduate who had bad grades. Boredom gave him bad grades! While he started out quite rough he has turned out to be the best talent I’ve ever had.

    • http://www.skorks.com Alan Skorkin

      Congratulations, like I said, it certainly happens, infact it happens rather frequently. However, get back to me after you have hired 10 graduates with bad grades, if they all turn out to be great talents I will take my hat off to you and ask you to write a guest post about how to hire good graduates.

  • arjan

    You can have a good programmer without a degree or with bad grades, and you can have someone who’s a bad programmer but has a degree with a solid understanding of theoretics.

    But…

    You can also have someone who is both!

    That one will probably be the ace on every team. A degree doesn’t make a truly dumb person smart, but a smart and motivated person will only get better with an education.

    • http://www.skorks.com Alan Skorkin

      You hit the nail on the head here, a person who can be a good developer regardless, but who also has all the qualities that allowed them to get great academic results – that is surely a recipe for awesomeness :).

  • henk

    I think everyone knows an example of some bright guy who made it even without an education or with bad grades. But really, isn’t that just the exception that proves the rule?

    Overall it seems that a degree simply increases the chance that someone is or can become a good developer. It is sad that some untalented people do slip through the cracks of the weeding out process that a university should be. Unfortunately a degree is thus certainly not an absolute proof of someone’s talent.

    Yet, I honestly belief that the majority of the stuff you learn in a comp. sci. education is just basic stuff every good developer should know. Not all of it might be exactly fun to learn, but I just can’t imagine doing what I do without having that background knowledge.

    Keep in mind though that a comp. sci. M.Sc. title is absolutely not your end station of soaking in knowledge. Far from it actually. You might argue that comp. sci. is simply one of the stages of a successful development career. Maybe that’s where it went wrong for some, if they thought that university put all the knowledge in their heads they would ever need.

    • http://www.skorks.com Alan Skorkin

      I believe university can teach you a lot of fundamentals even if it only steers you and shows you how much there is to learn, without actually teaching you any of it. Why? Because university is a time in your life when you will have lots and lots of time and have a mind that can absorb new knowledge like a sponge. I did reasonably well when I was a student but every time I think about it now, I regret “wasting” the obscene amounts of free time that I had :).

  • Seif Sallam

    I don’t know about USA, but in Egypt studying == Scanning the Course, GPA 4.0 only means that this person is a scanner. I know that i’m lazy but this is because i don’t have the motivation to compete with a scanner, when it comes to programming, i create an excellent quality code and GPA of 4.0 becomes useless.

  • Greg Young

    I didn’t read through all of the comments, maybe someone else pointed this out, the arguments here seem to be slipping past each other.

    They seem to make the statement that you cannot correlate good grades to a good developer, that there are other things you have to look at. This statement makes a lot of sense.

    In rebuttal you argue against bad grades = good developer.

    The arguments are related but even as you admit there is not a strong correlation. Getting good grades and being a good developer/team member are two very different qualities. Grades are but one aspect of many that we should be considering and should carry a fairly light weight.

    • http://www.skorks.com Alan Skorkin

      Hi Greg,

      We should definitely look at many other factors, that’s just due diligence on our part. I guess the best way to explain it from my perspective would be as follows. If I am interviewing a graduate and he has good grades, this gives them one tick in their favour from the start. If they have bad grades, this gives them one tick against.

      Now in both cases the ticks can very easily be counter-balanced as the interview progresses, but the guy with good grades starts out with an immediate advantage, I am already positively pre-disposed towards them, whereas the guy with bad grades is at disadvantage from the start.

      And then of course there is the fact that some places won’t even consider you if your grades aren’t good, which doesn’t really add or detract from the argument but is a fact to be aware of. Google tends to hire a lot of PhD’s for example, I am not sure how many of them were mediocre in their undergrad degree, but my guess would be not many. Once again doesn’t really add anything to the argument, but also a fact to consider.

  • Bruno Cassol

    “The reality is that academic performance is a poor indicator of anything.”
    - Cory McCarty

    Proof:
    - High academic results can achieved by many ways, dedication is one of them, not the only one.
    - A practical bright mind might not care to spend much time with academic hypocrisy, life might be too short for that.
    - Google for “How to hire programmers” and you’ll see how some specialists do it

  • Uday

    Great arguments. Its definitely nice to have a balanced debate.

  • ebiester

    There is far too much noise in a GPA. What does my 3.6 GPA mean? Is it different if it comes from UC-Berkeley or Cal State-Fullerton? Did I have parents paying for college and spending money, or was I subsiding on student loans on top of working two and three jobs? What does it mean when I had a higher GPA in higher division courses? Does it mean I stopped working out of school, or does it mean I wasn’t interested before that? Does it mean I had a semester where my father died and I pulled out C’s and D’s by the skin of my teeth?

    • http://www.skorks.com Alan Skorkin

      Well, one way to find out is to ask :). There may always be extenuating circumstances.

  • http://www.montanaprogrammer.com/ Chris Roane

    I can see where you are going with this article. I agree in that having bad grades in school is generally a bad thing. It shows a lack of responsibility, effort, and possibly intelligence (but who is really intelligent if they don’t study???).

    I am a college drop out. Not because I failed school, but because the degree I was going for was not the career path I wanted to take (after thinking about it).

    I worked at a fairly small company for five years and saw many people come in and out of the company. Most of them had college degrees with good grades. However, these were also the people who new the least about the job they were applying for, or their work ethics were horrible and so they ended up getting fired. This isn’t to say everyone who graduates from college is like this, but I think if we are going to point out generalizations, we should point out that a degree does not mean very much.

    I’m not saying that there isn’t a scenario where it can be a good thing, but specifically in the web realm, there are very few cases that I’ve encountered where education has been worth the cost (time and money).

    Where I think we run into trouble is constantly generalizing. There are idiots and geniuses who flunked out of school, and there are idiots and geniuses who graduated from college.

    • http://www.skorks.com Alan Skorkin

      Hi Chris,

      It’s interesting what you say about education being worth the cost. The funny thing is, it SHOULD be worth the cost, but it is such a total failure in many regards that people get very little out of it. These days I can probably come up with a system that a person starting a CS degree should follow to come out as a balanced and valuable professional in the end. Somehow I don’t think universities would listen to me though :).

  • otto

    i agree with u to a certain percentage, but do u think that because someone does get an A in an exam makes the person a failure?

  • Mike

    I think you may be mostly right. I would say that good programmers would probably at the least have decent grades in their major. In unrelated stuff, maybe yes, maybe no.

    Personally, I’d wonder about the 4.0 in everything folks. When I was in school, there was a small minority of classmates who were very very good at fulfilling the requirements for the course, but who wouldn’t stop to smell the roses.

    A lot of the stuff I learned in college that REALLY helped me was the ancillary “play around with stuff that interests me”. The 4.0 folks ignored that stuff as irrelevant.

    You know, I could turn this argument around and ask you — where’s your data?

    If you were to sample some of the most notable or successful programmers of our time, and correlate that with their grades, do you think they would all support your assertion? A lot of data suggests you may be wrong.

    • http://www.skorks.com Alan Skorkin

      But you could also turn all of that around again and pick the millions of UNsuccessful programmers around, what percentage of those will have had good grades – probably a low one would be my guess. It all depends on your frame of reference does it not?

  • Jasim

    Consider any premier institution whose selection criteria assures that only the best gets admitted. The ones who earns bad grades there need not be any worse than the ones with better academics. More often the case is that the one with extremely good academic performance is a bad developer than the ‘lazier’ one.

    Academics puts a lot of importance on ceremony – learning a fixed set of stuff that the professors deem mandatory, but of low priority in the actual industry. Those who are not obsessed with grades usually manages to spend the least time on such stuff and passes out with just a thin margin. That does not mean they are bad developers – just that they dont give as much importance to grades as the system expects them to.

    It is sensational but not accurate to simply generalize Good grades to Good Programmers and vice versa. You might give a one up in the interview for a good grade, but when such people fail to see the very obvious issue of ordering the If condition in the FizzBuzz problem on the first look itself, your generalization breaks.

    • http://www.skorks.com Alan Skorkin

      Haha, have I just been subtly insulted?

      • Jasim

        The very first time I read about the FizzBuzz problem, I thought to myself ‘obviously! if there is anything worth noting here, it is just the ordering’. I simply can’t accept that a decent programmer would have made this mistake with FizzBuzz even if asked to answer this problem in his sleep.

        We used FizzBuzz to interview freshers at our organization, and those who did not get it perfectly right on the very first try were absolutely out. The problem is too simple (and yes, insulting) for any self-respecting programmer, and making a mistake there itself gives a good clue about his ability as a programmer more than the grades can ever tell. ;)

        And in the interview, most with a good aggregate could recite the entire slew of Database normal forms from 1NF to Boyce-Codd without batting an eyelid. But they failed miserably when asked to write a simple SQL query on the whiteboard. We found the other true – those with average/slightly above average academics did much better.

        But that does not in any way generalize that ‘bad grades = good programmers’ or vice versa. The specific instance I mentioned was due to the kind of education they received – something which rewarded rote surface learning more than deeper understanding. As I said earlier, there simply are too many factors that contributes to good/bad grades and it is very hard to decipher whether they’d make a better programmer from grades alone.

        I was trying to connect this with the FizzBuzz post, both of which I strongly disagree with. I’m sorry if you found it insulting.

        • http://www.skorks.com Alan Skorkin

          Don’t worry about it, I have a pretty thick skin :). However, I like to think that I am at least reasonable at what I do and yet I made the FizzBuzz mistake when I did it the first time. I am not trying to say anything by mentioning it, just food for thought. You said yourself fizzbuzz can be insulting, so if a decent programmer gets his back up and pays no attention when he does it, they can make a rookie error by virtue of not paying any attention. I am very wary of making statements such as “any decent programmer should…” in real life.

  • Jasim

    I should add that I come from a place where the University mandates a paper titled and solely based on ‘Computer Architecture and Parallel Processing’ (Hwang, Briggs) which seems to have been last published in 1984. I had to go through the painful experience of learning the block diagrams and architecture of Cray – I and similar ‘supercomputers’ of the 1970s for the undergraduate course.

    I think you’ll have to go deeper than grades alone to see the actual worth of the developer. As others here commented, there might be a lot of valid reasons why someone is not ‘motivated’ enough to perform academically – and an uninteresting and useless course syllabus is a good reason around here.

    • http://www.skorks.com Alan Skorkin

      Hmm, the architecture of a Cray – that actually sounds interesting :). Seriously though, don’t dismiss stuff just because it was published 20 years ago or more. Some of these things are still the best resources on certain topics. For example the K&R book, or Shannon’s “The Mathematical Theory of Communication” etc.

      • Jasim

        Can’t compare K&R and Shannon with these stuff ! Interesting for leisurely read maybe. But having to learn that as a mandatory course is hard. Here is a question that we were asked to answer for the exam: http://ed-thelen.org/comp-hist/vs-cray-res.html#details
        I cant’ understand the sense in forcing the students to learn the piles of block diagram and configuration details of the 1970s’ architectures. Cray I, Lilac IV, Cyber 205 .. we don’t anymore hear some of those stuff outside that textbook.

        I would have considered the grades for that course if it was about building some kind of grid computer using distributed techniques rather than focus on the monolithic array processors about 40 years back.

  • Jasim

    I should add that I come from a place where the University mandates a paper titled and solely based on ‘Computer Architecture and Parallel Processing’ (Hwang, Briggs) which seems to have been last published in 1984. I had to go through the painful experience of learning the block diagrams and architecture of Cray – I and similar ‘supercomputers’ of the 1970s for the undergraduate course.

    I think you’ll have to go deeper than grades alone to see the actual worth of the developer. As others here commented, there might be a lot of valid reasons why someone is not ‘motivated’ enough to perform academically – and an uninteresting and useless course syllabus is a good reason around here.

    [btw, Kudos for responding a to most of the comments here. You taking time to engage in the discussion is commendable]

    • http://www.skorks.com Alan Skorkin

      I am always interested in what other people have to say about my opinions, otherwise I would never have my mind changed or my horizons expanded and that. I’d like to hope that most people would adopt a similar attitude.

  • Kevin Davis

    I was a mediocre student, and I have managed to defy conventional wisdom by becoming a mediocre developer as well! Thanks for the refreshing article.

    Going back to the conventional side, a Google search of the phrase “correlation between grades and success” turns up several interesting links.

  • odejoy

    bad grades != good programmers
    great grades != bad programmers
    bad grades != bad programmers
    great grades != good programmers

    since
    bad != good && good != bad

    therefore
    grades != programming ability && programming ability != grades

    end

    • http://www.skorks.com Alan Skorkin

      Haha, so if you didn’t have any programming ability, would you be able to understand that explanation :)?

  • http://www.f-i.com Peter Sjoberg

    I don’t want to sound too pissy but I believe a lot of what the author said is rubbish. _I_ personally do in fact believe that, in particular self learners are the best candidates, at least for the positions I’ve helped filling. These guys (and gals) are so motivated and have such a burning passion that they almost always out-skill the competition, and they usually have little to no related academic degree (In the cases I’ve seen). This does not apply to just programmers and certainly not the kind of programming you need to work at NASA; but web in general.. php, javascript, and design/art, so well I guess my point may not be super valid. This is just my personal observation like I said… may be different depending on type of coding job etc.

    • http://www.skorks.com Alan Skorkin

      Hi Peter,

      Driven self-learners can be very good at what they do. I am not going to reiterate the same arguments I have made before, I will say this though. I have found that self-learner while having very good skills/knowledge in some areas, will often have massive gaps in their knowledge as well. I’d like to think the reasons for that are obvious.

  • http://carsoncheng.ca/ Carson

    I generally agree with what you say. Education is expensive, so a college grad with low marks leads me to ask questions about his or her priorities then. Of course, if the marks are low *and* many impressive personal projects were done, projects that are relevant to the job being applied to or whatever, then the low marks might be looked at differently.

    But then again, between two candidates each of which has a wealth of personal projects relevant to the job being applied to, but one has high GPA and one has low GPA, it’s obvious to me which would get hired.

    Look at it another way. Hiring a high GPA grad could mean hiring someone who is simply exceptional, or someone who is a grade chasing conformist who’ll adapt and do whatever it takes to get a high GPA (or a high pay). There’s a chance the high GPA grad could be incompetent, but hopefully the GPA awarded by the institution is such that this possibility is slimmer. On the other hand, hiring a low GPA grad could mean hiring someone who is simply incompetent, or someone who is exceptional given the right conditions and motivations for him or her to bloom (sigh…such a delicate flower).

    It seems hiring the high GPA grad has a lower risk, even though the low GPA grad might end up being ultra exceptional. Hiring decisions are inherently high risk, why make it worse by hiring someone with a low GPA, all else being equal? (The unequal part might be a programming test during the interview or whatever else.)

    All this neatly sidesteps an important question: why in the world do you want to hire a computing *science* grad (or why do you want a computing *science* degree yourself)? Computing science is supposed to teach *science*. Programming or software development is an important skill necessary to computing science (as it is also necessary in many areas of math, physics, and engineering these days), but the goal of a computing science degree isn’t to simply teach programming. For better or for worse, university is not, and is not supposed to be, specific training for an industry. There are schools that are better aligned for that kind of thing. But then we’re venturing into an issue of public policy debate (at least in regards to public universities).

    I guess the optimistic view to having a high GPA in all courses from a computing science degree program, beyond learning the bare basics of many things in computing science, including programming, is to prove that you’re capable of learning and performing well under various conditions for various purposes. Maybe it shows an adaptability and willingness to change in order to perform well: whether it’s seminar-based, test-based, or project-based courses; whether it’s art, English, history, programming in C, in Java, or doing math; you’ve shown you can perform to *expectations*. How is that not a good thing from an employer’s point of view, all else being equal, especially in a new grad.

    A cynic might say that all it shows is the student is a mindless drone, willing to conform to the pointless rules of an unfair system. Oh well.

  • Tao

    For the love of God do not reply to this comment, Alan. We Get The Point Already. I didn’t keep count but you must have written a small novel at this point defending your main argument which is as foolish as the argument to the contrary.

    Getting perfect grades => Not a recipe for success and/or more likely to produce a great developer.
    Getting bad grades => Not a recipe for success and/or more likely to produce a great developer.

    The point no one seems to be making here is this: Grades don’t measure human beings. Quit soapboxing and have a drink.

  • http://www.rosshudgens.com Ross Hudgens

    The thing about “grades” is that the mindset that revolves around getting them can change instantly. They aren’t necessarily a sign of intelligence, more of work ethic.

    If a person is shown progress or potential in an area of motivation, they can express the same “care” that got the person a 4.0 great grades.

    Of course, the person who got the 4.0 shows more historical evidence of continued motivation towards excellence, but I think there’s something to be said for such a broad number that’s more an implication of ability to solve thousands of fragmented problems than a person who is capable of solving one problem extremely fucking well.

    Also, how many startups are really back-checking grades when recruiting? I can see big companies with HR departments and stuff doing so, but I imagine many just-ins don’t have the resources/time/care to do so.

    So, lie, programmers. Lie.

  • lincoln

    From my experience the guys with the worst grades (and even the dropouts) totally do have the best code, particularly in security and general cleverness- they are eons better than me, and I made rather good marks.

    • Chris

      If it’s any consolation, we may be better, but you get a job.

      Not every dropout is a genius of course, but it seems quite a few of us downright lazy bastards are.

  • http://www.easyonme.com/blog Tom Campbell

    As a college dropout and self-taught programmer who never took a class in programming–I concur. I wrote compilers, then moved to Microsoft capacities from management to programmer/writer. I never thought of my background as an advantage, nor did I ever feel anything but respect for people who survived the academic grind. I had to work harder than most to get where I did because I had to prove myself every step of the way, which never seemed unfair to me. Earning a degree proves you’ve fulfilled a minimum set of requirements, and that’s not bad. OTOH I do not feel that the self-taught are to be shunned.

  • http://www.easyonme.com/blog Tom Campbell

    Ahem, that’s “moved to Microsoft IN capacities” blah blah blah.

  • としあき

    I stopped caring and dropped out of high school.

    I program just fine.

    However, I do not have the best work ethic (especially with problems I do not care for).

    What I am trying to say is that I am a skilled programmer, but you may not want to hire me as a programmer.

  • Joris

    I think this article is more relevant nowadays than ever before. As the company’s most senior developer I had the joys (sarcasm) of being responsible for sussing out candidate’s technical abilities in our most recent recruitment cycle (senior dev). Having gone through more people than I care to remember, I can only sadly conclude the programming profession is in decline.

    Design pattern knowledge seems to be limited to “MVC”, for which I guess we have to thank Microsoft that they can at least come up with that one. Anything going outside of web-development (“I scored supersweet at my CSS and HTML courses and PHP!”) is just lost. General principles of programming are unknown, yet they all claim they can do anything on the 3 tiers they know as” the database”, “the front-end”, and “the code to load data and put it in the front-end” (yes, dramatization was applied). Unfortunately, someone with 5 years of experience a web environment like that seems to have trouble doing anything else than look up data from the DAL and pass it to the UI! This can’t last with websites turning into applications more and more.

    Simple questions on the workings of a compiler or interpreter give you blank faces and awkward silences in return. What are they teaching these days? All I can say is I am disappointed with the state the programming profession is in. Every Tom, Dick and Harry that has ever built a website and subsequently did a course on it thinks they’re a programmer.

    Let me tell you that in this big fat mess of incompetence you NEED to look at grades (and subjects in the course(s)!), because it will at least tell you they have some of the knowledge, or know of the existence (sure Google the details, but know when to apply it) of programming principles.

    This profession is a SCIENCE, one you need to study for. Be it on your own, or through the education system. Sadly all the shiny dev tools and wealth of prefabricated code samples on the web, detriments people’s ability to actually understand the field. The amount of people that think they can do it on their own, far supersedes the actual number of those who actually pull it of.

    So do grades matter, are they the ultimate truth? No. But they sure as hell give you a way to sift through the rubbish a bit easier.

    • Chris

      “Simple questions on the workings of a compiler or interpreter give you blank faces and awkward silences in return. What are they teaching these days?”

      Rubbish. :P

      I was in uni for 2 of 3 years, ran out of money and had to drop out. But the programming courses were.. Well, the entire course was pathetic. I never studied and I can still give immediate answers to all of the 3rd year assignments my friends have asked for help with. I chose the course because I liked it, I studied it in highschool in my spare time, I shouldn’t know more than 3rd year uni students.

      Programming is “how to use Visual Studio”, show them assembly or ask them to build a compiler and they freak out. Businesses want programmers, and lots of them. Not coders who know the computer inside out. If you want that level of detail.. Good luck. :P

      Tip for hiring: Don’t accept people who’ve done a short course a week ago. :P
      Uni students know the basics, but that’s about it.
      Give them a small project like the tasks they would be doing normally. So if they’re going to be programming database lookups, get them to code one up for you on the spot.
      If you want a website, tell them you need an example of work they’ve done.
      You should know all that..

      Grades mean nothing. You have the effects right, but you got the cause wrong.

      Minor note: “the database”, “the front-end”, and “the code to load data and put it in the front-end” is exactly how they’re described in uni. :P “code to load the data …” was different, but other than that..

      • Joris

        At uni I was educated in the inner workings of programming languages and to a lesser extent the hardware. We were educated in 2 languages, Scheme (lisp dialect) and C++, other than that you were pretty much free to pick what language you would deliver tasks and projects in. But we learned every nook and every cranny of the theory behind and the implementation of all levels of software architecture, software engineering (SDLC), compilers, interpreters, logic programming, OO, script languages, web-architecture and more.

        What’s the point of teaching people syntax and only syntax? I’m not generalizing that people with better grades will be better programmers or have more in-depth knowledge. I finished with only a 75% gpa but I went to uni to study computer science because it was the place I could best learn and specialize in what I already loved.

        Unfortunately you cannot count on self-study anymore the way you could a decade ago. Self-professed developers can be found on every corner, unfortunately the quality is … well … sad.

        Higher grades don’t mean better programmers, but you have a higher chance of finding a good one if you raise your entry threshold.

        And thanks for the recruiting tips :) We did however not want to find someone that could “write queries” or “build a website”, we needed someone that is capable of architecting as well as implementing over several technologies from the Microsoft as well as Open Source stable, and have medium to good client-facing capabilities. Turned out pretty though :)

        • Chris

          I.T. has definitely declined in recent years. Western countries are introducing the work farm standard of teaching, we have Indian people in charge of some outsourcing company telling our Uni’s how they should set up their curriculum. And it isn’t to think outside the box, it’s to be the I.T. equivalent of a blue collar worker. A mindless grunt, basically. Hence the dumbed down uni courses. You aren’t even taught (In the first year anyway) a coding language, you’re told to “Use intelli sense to speed everything up”. Then business units in 2nd year tell you how to develop, architect according to a methodology and pre-concieved pattern, nothing original.

          Haha. Interpersonal skills, MSFT and FOSS appreciator, original enough to think for themselves and design, along with decent grades. That’s a pretty tall order, good to hear you found someone.

          • Joris

            Took us 2 months, and training will still be required, oth I guess it was a pretty tall order… :)

  • Chris

    “poor grades can be an indicator of a creative mind but they can also indicate laziness, inability to concentrate”

    If you’re really smart, you find it difficult to concentrate on rubbish. It’s like testing Einstein on his 1x tables when he’s theorising on relativity. Hence the genius part, we’re so smart we find the work so boring and thus difficult to finish.

    But genius doesn’t actually matter unless you have good grades.

    • Joris

      True genius is punished by the education system. On the other hand, a genius would pursue their own goals strongly and probably never have to worry about grades :)

      Btw, I’m pretty sure Einstein wouldn’t refer to 1x tables as rubbish ^^ A genius interprets everything :)

      • Chris

        Nah, I didn’t say they were rubbish. More that being tested on the extreme basics when you’re at a much higher level is rather annoying. Basics are fun, advanced theories are more fun. :P

  • Tero

    I think the point is that academic achievement does not necessarily translate to programming. It might, but at the same time it might not.

    It is far better to look at what the person has done and look for that motivation that the job requires. If that does not exist, your school grades are irrelevant. If the motivation is there, then school is a bonus.

    I just think that there is a bit of a sampling problem with the whole idea that people with good grades can’t swing it. A good deal of such people apply for the jobs because they have a diploma and want a paycheck, but they actually do not have the passion. Companies then hire them based on academic achievement alone. Any other people that they do hire must prove something more, and they often have what it takes as a consequence.

    Apart from that, what does it really mean if someone can get good grades? It means that you are good at playing with someone else’s rules, have discipline, follow instruction, and perhaps you are smart too. But what it does not mean is that you are creative, clever, think out of the box, can experiment, have a vision and all that creative stuff that is extremely important in programming. Many of those things are not measured at schools at all.

  • Pingback: The Hard Six » The Reality of the Underachieving Hacker

  • Adrian

    I think an important factor that is overlooked here is the academic institution.In a university which prioritizes skills and actual hands-on work then indeed good grades mean good programming skills.But if you take an institution were teachers grade exam papers based on your ability to reproduce the most text from their courses, and completely ignore the aspect of actually understanding what is written there, then grades are less relevant.In cases like these, in the end it all boils down to what you’re actually able to do.

  • Oliver Stieber

    I’d also add a couple of things,
    which is based on my previous comment the system is weighted, and obviously who do well by the system and get a gold star think it’s perfect except could be a little better in the way they think of things. There also more probably the people in-charge of giving it direction.
    There was a story just the other day about people in Uni doing biology (possibly even graduating?) would remember everything, but not know a things about the workings and interactions often beyond very incorrect intuitive thinking. e.g. Spaghetti grows on trees and when it dies it forms part of the great FSM in the sky.

    Democracy (well most if not all of the current so called democracies, but where only the election is democratic for instance) also have a quite similar natural tendency. Franklin said, ‘Democracy is two wolf and a lamb voting on dinner
    Liberty is a well armed lamb’
    Basically the tendency will be towards narcissism.
    So for instance drivers may vote for better roads and people who don’t drive may vote for better roads or abstain or vote against.
    I can’t really think of many instances where a driver would vote for worse roads and still drive or even really want to abstain.
    But things like tax and social care too etc…
    And most defiantly more government power and control

    Sometime the odd thing will reach breaking point, after a while it’s going to be the inevitable history repeating.