The Mis-education and Re-education of a software tester is a topic that I see discussed heavily. In the past I have reflected back about my personal education as a software tester, and what I had to contribute myself to this. After having read Pete McBreen’s Software Craftsmanship – The New Imperative I started to understand part of the problem. In chapter 2 McBreen explains most flaws of the Software Engineering metaphor. This is my first blog post in the Software Craftsmanship week 2010. I will spend some thoughts on related topics over the course of the whole week. Today, I would like to take a closer look on educational models for testers – in Software Engineering and what clever people have come up with for compensation.
Reflecting back on my personal time spent at the university (from 1999 to 2005), I was rather ignorant regarding the topic of software testing. If there had been a lecture on the topic, I’m sure I would have searched a way to not attend it. At that time software development was way more interesting. I also remember our first team software project. During the lecture course in late 2000 we had heard about Extreme Programming and Test-driven development, but despite the course on Software Engineering there was no real alternative introducing us to a corporate software project. Over the past few years, I came to the conclusion that teaching software testing through a university course wouldn’t raise enough attention – even participation – and therefore is a doomed effort.
This leaves the topic of educating the next generations of software testers to either the companies who employ them, to courses maybe with certifications, or to deliberate learning through the aspiring testers themselves. Regarding the topic of certification and more formal class-room training in software testing, I am very biased. Having started my first job as a software tester in April 2006, I got promoted to a technical leader in February/March 2007, and a second promotion as a software testing group lead in September 2007. My first training course on the topic of software I visited in October 2007. Somehow I had survived and got promoted to a new position without knowing anything about software testing. And when watching who was also taking the same lecture from my company, I noticed that there were colleagues who had worked way more years in software testing before getting the first training course on it – and also succeeded. This leaves me with the impression, that formal training courses in software testing are also wasted efforts for the individual software tester – though they may be well-intended. But sheep-dipping (a term I learned from Andy Hunt in Pragmatic Thinking and Learning) also does not work. In the end, the Law of Raspberry Jam (from The Secrets of Consulting) came into play: The wider I spread knowledge, – that is the larger the audience I teach to – the thinner it will eventually get.
This leaves the topic of educational models for aspiring software testers to either the companies that employ them, or to efforts the new testers take for themselves. On the former one, McBreen drafts the picture adapted from other fields. Craft is the answer on this. In a model of Apprentices, Journeymen, and Masters new colleagues get trained. Ade Oshineye and Dave Hoover covered the topic of apprentices well in their book Apprenticeship Patterns. The concept is to have more experienced testers training new testers on their job. This may be achieved by pairing testers with each other, by pairing them with developers, and by challenging them with some own projects they shall fulfill in order to show relevant competence. Robert Martin’s The Craftsman series, and the ObjectMentor, and 8thLight apprenticeship programs work in just this direction. I know there are many more companies who adapt this way of teaching new software developers on their job. We also use a similar concept for the Miagi-Do school of testing.
This leaves us finally with the topic of personal mastery. Early on I noticed that I need to exercise my brain. Therefore I started to read books on interesting topics. Initially I started with some of the books that interested, when appointed a group leader, I knew I needed to change something in our testing, and started to delve into the topic of design patterns. Over time this lead me towards Agile, Agile Testing, and Software Craftsmanship. Today, I still try to read one to two books per month. As one book’s references gives pointers for further readings, this currently seems to be an endless journey. Some of the books are testing related, some are programming related, some on management, some on problem-solving, some on psychology. Seeing related fields helps to bring in new ideas into your day-to-day job. In fact, while still not finished a topic, I am tempted to try bits and pieces from it out directly on the job. That has enabled to create an Agile team in a more traditional company – with great success.
Finally, the system’s that have been invented to counter the lack of education in software engineering on testing, are manifold. James Bach’s Buccaneer Scholar approach is one of the most remarkable ones among this. Being a leading expert in the field of testing, James Bach never got formal education on the job. He learned much of his knowledge himself by continuously seeking new opportunities. Recently, the Weekend Testing movement from India made its way over the globus. In a Weekend Testing session, testers deliberately put themselves into a learning environment to learn new approaches and techniques, and to enable them for meta-learning. Finally, Cem Kaner’s video presentations on Black-box software testing are another way to train yourself as a software tester. Interestingly all these ways were found by clever people to train themselves for the lack of formal training they may receive.