07 May 2010

Re: High Academic Results Make Better Programmers

Alan Skorkin argues that "High Academic Results Make Better Programmers", or approximately that with certain caveats.  He's writing to try to balance out the view that often denigrates high marks and high academic achievements as he notes.

I generally agree with what he says there, and I think some more details can be given to support why good academic performance is important to programmers. So here goes.

Education is expensive, so a university graduate with low marks raises a question about his or her priorities.  Of course, if the marks are low and many impressive personal programming projects were also completed, 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, both having completed a wealth of relevant personal programming projects, but one has higher GPA than the other, it's obvious to me who would get hired.

Or look at it another way.  Hiring a university graduate with a high GPA 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) — some people apparently believe that's what a high GPA indicates.

There's a chance the high GPA graduate could be incompetent, but hopefully the GPA awarded by the institution is such that this possibility is slim.  On the other hand, hiring a low GPA graduate could mean hiring someone who is simply incompetent, or someone who would be exceptional given the right conditions and motivations for him or her to bloom (such a delicate flower).

It seems hiring the high GPA graduate has a lower risk for the employer, even though the low GPA graduate might end up being ultra exceptional given the right motivations to "show off" his or her abilities.  Hiring decisions are inherently high risk, so why make it worse by hiring someone with a low GPA, given all else being equal?  (The unequal part might be a programming test during the interview or whatever else.)

But all of 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 program isn't to simply teach programming skills.  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'd be venturing into an issue of public policy debate (at least in regards to the value of public universities to society).

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 skills, 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'd have 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 university graduate.

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.  It's hard to please a cynic (just as it is hard to please a conspiracy theorist).

A final note.  This comment from Joris also makes a good point that the software development profession is or is quickly becoming a science that requires university level education to become effective in for the vast majority of people wishing to enter the profession.  (Doesn't software engineering programs exist for this purpose?  It seems some half of a computing science degree program could more fruitfully be seen as applied math, and the other half perhaps software engineering...)

No comments: