What’s the use of computing certifications?

Not much, says ThoughtWorks Chief Scientist Martin Fowler. He should know, in that his company employs plenty of people with skills for which certification schemes exist in the computer industry, but he says that that certification fails a basic test. There is no correlation with competence.

For a certification to be useful, it needs a correlation with competence in the thing that it certifies. So if Alice has a certification in, say, clojure programming; then there should be a high probability that Alice is a competent clojure programmer. High probability isn’t a guarantee, but it should be significantly higher than the general programmer population. The reason we have disdain for most software certification programs is because we’ve not seen such a correlation (indeed sometimes we feel there’s a negative correlation).

He has a nice graphic to illustrate the point, and I encourage you to take a look.

It is a gloomy post:

At the moment the only way you can tell if someone is a good programmer is to find other good programmers to assess their ability. Such assessment is difficult, time-consuming, and needs to be repeated by each hiring organization. If you are a non-programmer looking to hire someone, such an assessment is particularly daunting.

Worse still, Fowler describes the micro-industry of certification schemes and the books, courses and assessments which support them as a form of corruption. That strikes me as harsh, though if they are as unfit for purpose as he suggests I see his point.

Personally I have never liked the fact that many assessments are based on multiple choice answers. There are several problems with these. One is that if there are four answers and you just have to pick the right one, you have a 25% chance of appearing competent by mere luck. In fact, sometimes one of the answers stands out as obviously wrong, giving you a 33% chance. Of course the scoring can take account of this; but I still dislike the approach, which is sometimes more about getting the answer the assessment expects than about getting the right answer.

It is my turn to be cynical, but I expect the ease of marking multiple choice papers, which can be completely automated online, is a factor. Having a human interpret a reasoned explanation for your choice would be more expensive but also more effective.

If you have many certifications to your name, there is no need to despair. Fowler just advises you not to show them off as a badge of competence.

It also has to be admitted that certifications do open doors and may well help you get that next post; not all employers take Fowler’s view.

Is he right? I would be interested in other opinions. If there are good ones, which are they? And if Fowler is even half-right, surely this industry is now sufficiently mature that it could devise certifications that actually do correlate with competence? It does not seem too much to ask, and would help employers to avoid costly mistakes.

5 thoughts on “What’s the use of computing certifications?”

  1. I have multiple software development related certificates and they have exactly two purposes:
    a) government contracts here have requirements like “3 Microsoft certified developers in the project team”
    b) Microsoft requires a number of certificates in the company to be a gold partner or something like that.

    They serve absolutely no practical purpose in determining anything about a person. I expect anyone who was not born a vegetable can easily pass any test, since there are countless books available with question-answer lists (I mean the sort where the questions are real questions copied from certification exams).

    In addition to being only a “zombie or human?” differentiator, the exams, at least for Microsoft, are very technology based (e.g. how to use APIs A, B, C in the way that the book author that wrote the study guide thinks they ought to be used). The exams that were not very technically specific were still very “inside the box” – I was incredulous when I saw a study guide saying “This is how you must design and OOP architecture. a) Take a piece of paper; b) From your list of requirements, take every noun and make a box on the paper; now make a circle for verbs; connect the boxes and circles according to bla bla” (paraphrased).

    So yeah, I completely agree with Fowler’s opinion – certificates are useless, except for the people writing study guides and running exams.

  2. The RedHat Certified Engineer certification is definitely valuable from a recruitment perspective (for both sides). As an experienced sysadmin I found it non-trivial to pass, and it was very hands-on – here’s a broken system, find out what’s wrong with it and fix it, then install and configure these software systems. Not easy at all, even with the man pages available once you’d fixed the system – but very real world.

    If someone has an RHCE, there’s a good chance they know their stuff – but of course we’ll still interview them just to double check those skills.

  3. I think it comes down to the type of certification. A lot of certifications just churn out people who can sit the exam and that’s all they’re good at with no adaptability or technical insights.

    I think practical exams with no real fixed answers are the best approach, the problem here is these are very time consuming and intensive for the examiners to mark/grade.

  4. There are 2 ways to look at the value of certificates and the first 2 comments show both of these.

    From the views I have heard from other developers / sysadmins one thing stands out for me. Networking / system administration certifications such as from Cisco and Red Hat are respected a lot more than software development certification such as those from Microsoft, Sun, Oracle.

    I feel there are four reasons for this:
    1) With software we have versions that are updated faster and hence certificates go “out of date” as almost as fast as you can get them.

    2) There are more ways to carry out a task in software development than there are for tasks related to system administration. As @SSS pointed out in the first comment: “how to use APIs A, B, C in the way that the book author that wrote the study guide thinks they ought to be used” suggests that the same APIs can be used in other ways and although these can be considered best practices, the choice that is available to developers leaves a grey area which multiple choice questions can’t help evaluate properly.

    3) Volume of students is greater and more diverse (in terms of the software / framework, not the people) for software development than it is for sysadmins/netadmins. There are 2 models of business that you can aim for a “jewellery” model and a “grocery” model. Hence you can either aim to get fewer high quality people certified but make it more expensive to do so or get more people certified at the expense of lowering the bar to entry. Software certification has gone down the grocery model to accomodate the volume where as people like Cisco and Red hat (I know there are others) have gone down the jewellery model.

    4) When you evaluate a programmer to be qualified in a language, you are checking if they understand the constructs of the language and how to use them. But a developer that know how to use a for loop does not alone make them a good developer. You have to recognise that a “good” developer is someone that can use this KNOWLEDGE and apply it with WISDOM. This is more easily tested in a network / sysadmin environment by setting up a test to fix a system or network which can only be done in a particular way or at least only one result is considered acceptable and you can time the examinee and use that as your basis for compitence. In software what you need to test is that a developer is smart enough to fully understand a problem, solve it in their way and have another developer (certified and qualified themselves) look at the result and scrutinise it. In other words you need peer review to evaluate a developer.

    Therefore the only way to make certificates worthy in software development would be to have been peer reviewed by others. This is one reason I think working on open source projects should be considered a higher certification than what some score an organisation gave you for being on their course. It is also why more organisations want job applicants to submit tests that a developer can check within the organisation and evaluate the work.

  5. Thanks for the great comments – interesting that the sysadmin qualifications are more useful.


Comments are closed.