I received quite some feedback on my last blog entry on certification. One of the feedbacks made me wonder what an alternative to certification is. This question struck me hard enough to write a follow-up on that. I think this question can be answered solely in a certain context. I’ll try to answer it under several contexts, one by one.
What’s the problem?
In order to find out what an alternative option for a certification program could be, we have to find out more about the reasons behind the certification. Certification seems to be a solution to some problems. But what are these problems? What’s the problem that certification is going to solve? And whose problem is it anyways?
In an open space session at the Agile Testing Days 2010 Elisabeth Hendrickson collected some of these alternative. Afterwards she created entaggle out of it. The problem that entaggle solves is one of peer recognition. If you want to find out more about a person, with whom she or he has worked, then you can see their profile there, and get some feedback about that person. The feedback is individual recognition of peers. Since you can create your own tags on entaggle, you can provide your own certification – if you want to claim it as such.
Among the other reasons for certifications, there were reasons such as, as a person working in the personnel department, I want to digest a pile of applications in a short time. A filter like a mandated certificate is one way to achieve this. Other reasons include to sell training course, and educate people.
One thing I learned from Jerry Weinberg in the Quality Software Management series was that things have exactly one reason, and we can tell which one is which. Regarding certification there are several reasons why certification programs are called to live. Having said that, let’s take a look at some of the certifications out there. I’ll stick to some popular ones. For the remaining ones, check out this comic from xkcd. It should yield an explanation.
For some programming languages like Java, C++, Python, Ruby, there are certifications that make you aware of the language. The language and how it’s intended to be used is a distinct set of construct. While you might need a programmer sufficiently aware of some programming skills, you might look for a filter of programming certificates.
Programming certification solves a problem of skills. An alternative to this could be a programming exercise as entry criteria to your hiring process. Let people who apply submit a program they wrote. Or have them implement a solution to some simple kata like tic-tac-toe or minesweeper. This solution has the advantage of showing you how they code, so you can see how much work you will have in order to teach them about SOLID, design patterns, and responsive design. Oh, by the way, did they submit their unit- and acceptance test together with the code?
There are many certification programs out there on some development process or methodology. Rather than needing to write down your own process in your own documents, you can rely on a profound basis of methods.
For the development process you may want to have a common understanding about the approach that your organization takes. From my experience this comes with the believe that every project will run the same way once you have trained everyone the process. My first reaction to such nonsense is: How boring to work in such a factory!
Instead of relying on a common way to develop software, you should transport the thoughts to a higher level. Indeed many Agile programs do this. By making the teams responsible for their own processes, they can adapt and self-organize to their situation. This approach is way more efficient than a prescribed process which might put you into the illusion of control. You hired highly educated people. They can work without your command & control, yet they still need guidance from you from time to time. If you start with a regular retrospective – like every two weeks – and have the team responsible for their process, the remaining technical skills will show up, anyways – maybe with some hints from a consultant, but they will show up.
This yields the discussion to my favorite field: testing. In the 1980s and 1990s there was a huge tendency to educate former workers as testers. In such times where people unaware of programming at all, there was a huge need for testers who knew some of the basics. These people knew the domain of their work, but didn’t know which tests to run. That’s when testing certification was born. The goal was to educate people on some basics. Sometimes even to educate students to exercise some application.
This field has turned in the past decades. Now we face testers professional testers who need to find the bugs that unit test automation and acceptance test automation have not covered before the software gets on their computer.
A recent blog entry by Andreas Simon reminded me of models. While programming we build up mental models, and put them into code. The task of a tester is to come up with other mental models to break these models – or maybe to confirm them. This is why testing uses so many diverse fields as basis, as epistemology, cognitive psychology, decision theory, philosophy, and many others. We need to think diverse.
Certification provides one set of models to break software. Boundary values (no analysis), decision tables, black-box, white-box, etc. build a foundation. Many such courses are called foundations. But you need more as a profound tester in the field nowadays. That is how to come up with your own models about test coverage, test planning, and test heuristics. Sure, you need basics, just as you need the basics in programming. And above that you also need critical thinking, systems thinking, complexity thinking, etc. in order to come up with heuristics and approaches on your own.
An alternative to this kind of certification would be to expose your testing skills to others. As you can submit your code along with your CV, you can also submit videos where you expose your testing skills. Take some application, and show how you would test it. Take a bug that you found recently, and submit it alongside. Or you might want to submit your bug reports as well.
Let’s talk certification!
These thoughts made me curious about the topic. As I am looking for the topic of the next GATE workshops, I now picked a topic: certification. I want to learn more about certification in testing, why we need it, where we need, who needs it, what your experiences with courses have been, where you see alternatives, and what helps you about being (or not being) certified in any kind. I especially want to hear both sides, the pros and the cons, and we will provide a moderated discussion on these topics.
I aim for a date in March, somewhere in Germany. I hope to get to some more details after Christmas, so stay tuned. But I surely want to talk certification. Let’s talk!