Certification or Craftsmanship

About 10 years ago I recall studying profusely so that I might pass my Java programmer’s certification exam. I purchased a copy of an exam cram book that had sample questions similar to what I might encounter on my certification test. I recall dealing with questions like the following:

  • Can an abstract class be subclassed?
  • What interface does TreeMap implement?
  • What is the output of the following code snippet?
  • Identify the compile errors in the following code snippet.
  • What are the different access qualifiers?

I’m sure many of us are familar with these questions, as well as others of similar ilk. Of course, I’d taken similar exams prior to this for a variety of technologies, but the Java certification exam was the last one I’ve taken. I’d come to the realization that time spent studying for these exams is largely a waste of time. I was no better at developing software systems in Java after taking the exam than I was before. I simply possessed a bunch of useless knowledge that I could have easily gotten by looking at reference material.

The skill that I needed to develop enterprise applications could only be obtained by developing applications. It could be found no other way. There are no shortcuts. Making mistakes and fixing them. Discovering new ways of doing things that worked better than what I had done before. Knowing what assumptions I could make, and those I could not. The reality is that certifications exist largely to sell training courses, while the marketing that surrounds them leads organizations to believe they are relevant. A while back, the agile alliance issued their public policy denouncing agile certification. They state:

Knowledge is a wonderful thing, but businesses pay for performance. Performance requires skill.

A skill is not as simple to acquire as knowledge: the learner has to
perform the skill badly, recover from mistakes, do it a bit better, and
keep repeating the whole process. Especially for the interrelated and
interpersonal skills required of Agile software development, much of
the learning has to take place on real projects. It is that learning
that a certification should vouch for.

And unfortunately, it is that learning and skill that certifications do not provide nor account for. In fact, this is exactly why the software craftsmanship movement has begun to gain so much traction. Through trial and tribulation, a software craftsman has obtained the practiced skill required to develop great software. Of course, it’s easy to dilute the notion of craftsmanship if we are not careful.

Tom DeMarco also published an open letter to Cutter IT Journal expressing his dismay with certification. The debate on certification certainly is not new. But with the Scrum certifications, among the many others that abound today, the debate is still relevant. Where do you stand on certification? Would you rather work with a craftsman or someone with a wall plastered with certifications?

By the way, if you stand on the side favoring certification, and would like to get an agile certification, then maybe you should visit Agile Certification Now to get started.

4 thoughts on “Certification or Craftsmanship

  1. Hey Kirk,
    It has been a while. This debate always creeps up in the Oracle circles as well. There has been some blog activity on this subject recently by some people I respect. Bex Huff started it off with his blog post on certification and Dan Norris had a very nice response in his blog

    I am on the fence on this one. I view certifications as a necessary evil if you are looking for a job. Although some certs are better than others. For example, I do tend to think something like the Oracle Certified Master exam makes a lot of sense. It is a mostly hand-on, practical exam where you can showcase your skills.

    I know this was more of a Application-centric post, but certifications do spill over into the more ‘infrastructure’ side of IT as well.

  2. I took the Sun Java Cert back in the day also. If I recall after completing the test they gave me authorization to put a Java logo on my resume.
    I never did though. Now I kind of want to find it to laugh at it. Did you get one Kirk?

    I agree that most certs are completely useless.

    What I typically do when interviewing is ask the candidate about Coupling and Cohesion in software design. You would be amazed how few people seem to know these two concepts yet its covered in almost all major universities via Steve McConnell’s Code Complete and about dozen other engineering books.

    Then I usually follow up with unit testing questions. If the moods strikes inversion of control (dependency injection) and AOP/Meta Programming questions may come up. But I usually never get that far :(

  3. I don’t recall getting the authorization to use the Java logo. It was a while ago.

    Having conducted numerous interviews in the past, I share your experience. Every once in a while, a refreshing candidate would come along and I’d find myself in a very engaged discussion. Usually, after the first 5 minutes of the interview I had found out what I needed to know.

Leave a Reply

Your email address will not be published.