in reply to Perl Certification ( oh yeah, it's that time again... almost )

I'm pretty much a certification skeptic, but I acknowledge that they do have their place. With that in mind, I thought I relate what I consider to be the best form of certification/appraisal question I've encountered.

The basic form is a short snippet of code (in whatever language) that has an error that makes it non-functional. The candidates task is to "make it work". The beauty of it is that with 10 or 12 lines of code containing a single error for correction, you can test a surpising amount of knowledge.

  1. They have to be able to read the code presented.
  2. They have to be able to recognise the error.
  3. They then have to decide how to correct it.

That last one is a interesting because depending upon the instructions you give them, and the time alloted, a well constructed test can allow them to make a minimal change that will make it work. But it can also contain one more other limitation, ommisions or generalisations that whilst uncorrected will allow the code to "work", but are such that if the candidate is really clued up, they will 'correct' it as a matter of course.

The classic one in Perl, (that catches me out more often than I like to admit, though regulars will know it already:), is the ... $x || 3 where zero (or '') is a valid possibility for $x.

There are two problems with this approach.

  1. Constructing a set of short, but well though out snippets that exercise a wide range of knowledge is difficult.

    That is not just a problem to come up with a first set of questions, but also means that it is quite hard to come up with alternatives. Which means that over time, your assessment suite can become stale--eg. unscrupulous external recruiters can piece together details of the tests and pre-warn candidates.

  2. The scoring of answers is not something that can be easily automated.

    In truth, I consider that a bonus rather than a problem. Both from the POV of the employer who must seriously assess the answers given, and the potential employee who has a chance of demonstrating a wider knowledge, alternative thinking or willingness to look deeper and give more.

Just some thoughts on a subject that I don't normally respond to.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

Replies are listed 'Best First'.
Re^2: Perl Certification ( oh yeah, it's that time again... almost )
by Herkum (Parson) on Jul 03, 2008 at 03:53 UTC

    I think one of the worst problems with code snippets is when they tell you, your not supposed to use a computer. A large part of being a programmer is not simply looking and comprehending but being able to experiment and see what the code is doing by running it and throwing in your own debugging statements.

      I totally agree with you. Despite having grown up debugging code on paper of necessity, I now absolutly abhor having to "do code" without being able to run it.

      There are problems though. Providing an editor that everyone is comfortable with using is one.

      As an aside, I hate coding whilst being watched. I terminated an interview early once because the guy insisted upon sitting at my side, and reading over my shoulder making sucking sounds, whilst I sat their silly tests. It was indicative enough of the management style of the place for me to know that I didn't want to work there, even if I had sucked it up and passed their tests.


      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.