Reflecting over the history of the Manifesto for Software Craftsmanship and the ideas we concluded for the The Software Craftsman’s Ethic, so far I just covered two aspects. The key ideas behind the manifesto and the ethic statements is that craftsman care for their work, taking pride in it, they practice their craft regularly, they learn deliberately, and finally they share their knowledge in communities and with peers. So far, we have started our journey this week with on the sharing part, and continued to take a closer look on the caring part in the last two days. Today, we will spent time on deliberate practice and learning parts.
Deliberate Practice and Learning are key parts for any craft. The main distinction between programmers and testers lies here in the particular skills they need. While a programmer “just” needs to write down some code, the most relevant asset of a good tester is her ability to think critically. Thinking critically is a topic which needs practice and learning at the same time. In fact, this is why I put the two main parts of software craftsmanship together.
For programmers, there is a wide variety of learning and practicing possibilities. Coding Dojos and Code Katas are great ways to learn about your own abilities with a particular programming language, test-driven development, and solving a simple problem. Similarly, the particular same exist for testers as well. Getting your testers together in a Testing Dojo is one way to practice your abilities and learn from others. The equivalent to a code kata is a testing challenge. There are many test consultants offering testing challenges on their blogs, others may be open to challenge you when they ask you over instant messaging. These are little test problems focused on some particular learning outcomes. Testers may fledge their ability to think critically at these. Over the past year, I have gone through challenges from (in no particular order) Matt Heusser, Michael Bolton, and James Bach. Additionally, I have challenged John Kotzian, and Michael Larsen myself. (Just a side note: Being able to point out mentors and students is part of the sharing part of the underlying principles of software craftsmanship.) Finally, Weekend Testing offers another great source to practice and to learn about your own abilities in software testing. In a collaborative environment, you are first challenged to follow a test mission. In the second part you are reflecting on your own course as well as the course of others, therefore learning to improve your skill. The Better Software has a great article from Parimala Shankaraiah and Pradeep Soundararajan on Weekend Testing. From my experiences with the European chapter I’m currently polishing an article for the next issue of the Software Testing Club magazine.
But there are many more possibilities to practice and to learn. Just like a programmer may pick one new programming language each year to learn, a tester may want to learn about a new domain or a new test tool to aid in their quest and automate some of their work. Picking another approach for testing, like performance or load testing, may also be a great opportunity to learn something new. Maybe download an open source program and compare it to a commercial one you’re using may also give you some ideas where to look at.
Finally, there are online courses and reading materials like books or articles, which may be worth to take a look into. Blogs and social media is another source which may enable you to learn something new. Since I got an (outdated) blogroll on the right, I won’t point you to these. When looking for books, you may be interested in some that I choose to read. On social media, the Software Testing Club offers great ways to give and receive feedback. In addition, you may want to join a mailing list on a particular topic. I won’t point you out to the ones I’m reading, since they’re too many. :)