Programming Certifications

October 8, 2008

UPDATE: I have left the original blog post intact below, but I wanted to make a clarification on my position here, as many conversations that I have had with people about this blog post (my most controversial) have led me to believe that many people who read this misunderstand my point.  I’ll take the blame on not being clear enough.

To summarize as quickly as possible, let me say that certifications are certainly useful personal gauges to see if you can pass the test or not (especially when offered free, I hold a number of BrainBench certifications because of that – note that they are not listed on my resume), I also understand that many companies do require or desire them, especially in the government sector.  That’s fine.

My primary point was that I personally do not feel that a certification is a good indicator of “How skilled of a programmer is this person”, but that experience & having a conversation with the person dictates that.  So yes, if I have a pile of 200 resumes in front of me, and I need to quickly narrow it down to 10 to call first, those that prominently display their certifications instead of letting their experience stand out, tend to get sorted into the ‘second rung’ category.  And that simply applies for the companies I’ve worked for, the job descriptions that we had, and the types of positions & work we were doing.  Everyone should always try to tailor their resumes to the specific job that they are applying for.

The original article follows in it’s entirety:

As it stands, I’ve shocked more than my share of people in the past when I’ve mentioned my stance on certifications for programmers.

Specifically, that when I have a pile of resumes in front of me, and I’m giving them an initial pass to sort them apart, I take any that mention their programming certifications, and sort them to the bottom.

Why?  Simply put, I find that programming certifications are essentially useless.  More to the point, I find that typically the people who list certifications on their resume as part of their qualification for the job, are obviously not qualified.  Afterall, had they been qualified in the first place, why would they need a certification to prove it to me?  Their experience should speak for itself, and the interview should weed out anyone with fake experience.

Some have argued that I shouldn’t hold certifications against people, and I have to point out, that I don’t.  I only hold it against the person, if it’s listed on their resume, specifically if listed as part of their qualifications.  IMO, that all comes down to tailoring your resume for the job you are applying to.  If you are applying to a ‘big corporate entity’/’government’/etc, then sure, perhaps you need to include it because you know they are looking for it.   But that’s not the types of places I have worked for.  If you are applying to a ‘cool place that understands technology & programming’, then you should leave those certs off of your resume entirely.

So what is it that’s so wrong with the certifications in the first place?   Simply put, they prove nothing to me.  They only prove that you could cram and pass a multiple choice test.  I understand and am all for certification programs in other fields than programming.  Especially fields where what is being done must follow certain guidelines (civil engineering), or in general is much more of an exact science than an art (electrical wiring).

But the problem is, that programming at it’s core, is an art.  It’s figuring out ways to work around issues.  It’s finding bugs when the website is down.  It’s understanding the ‘right or wrong’ ways to write a section of code, while also understanding that there are a dozen right ways, and 3 dozen wrong.  None of that, does a certification test.

There is also the fact that a certification doesn’t take place in a programmer’s environment.  When a programmer is at work they have their dev machine which is configured just how they like it.  They have reference materials handy.  They have a compiler/interpreter to tell them when they messed up.

Knowing in the blink of an eye what the order of parameters to explode() are, doesn’t measure your ability as a programmer, at all.

And worse, is the fact that quite often the fact you ‘passed’ a certification doesn’t even mean you did all that well on a test.  Passing can involve much failing.  See the graphic that I have posted with this story, it’s a screenshot from a practice test for the Zend Certification exam for PHP.  Note that the person who took the test failed Security, Database, Design, Arrays, and Basic Language skills.

Yet, they passed the overall test, and would be a ZCE (Zend Certified Engineer).  This goes to the point, just because someone passed just enough questions on a certification exam to pass it … doesn’t mean that they are a good programmer or even that they know some of the most basic skills needed to become a good programmer.

It just means they were able to pass a test (which they may have taken many times before they did)