Thursday, 15 October 2009

Learning how to cook

My favourite cookery writer is Nigel Slater. The reason for this is that Nigel, by his own admission, rather than providing a set of recipes to follow, instead aims to teach the reader how to cook. His opinion is that there are too many variables in play in the preparation of a meal for the blind following of a recipe to always produce a successful result, instead he aims to provide the skills required to apply to allow us to handle the variables and still produce good food.

My stance of software development and testing is very much on this basis. We cannot expect a single approach or set of technologies to be universally applicable to every development project. Instead we must use the skills and experiences that we have developed to try to apply the most appropriate processes in any given situation. In this I find myself aligning very strongly with the Context Driven approach to software testing advocated by Cem Kaner and James Bach.

Although in my current organisation we are striving to work in an incremental agile scrum approach, I know that some of the methods that we use do not align with the 'classic' approach to Agile. Whilst some of the differences may indicate 'bad smells' that we should aim to resolve, in some cases it is simply the nature of the product and the needs of our customers and the rest of the organisation that dictate our approach. For example, our customers do not want high frequency deliverables of small amounts of new functionality. Given that each release that they receive must be run through their own thorough test processes prior to a significant upgrade process on multiple client sites, they want major functional changes delivered in their entirety on longer term release cycles. We still aim to deliver working software at the end of each sprint but, for most sprints, this software will not be delivered to the customer.

Does the fact that we deliver large scale changes to the customer on an infrequent basis mean that we are not 'doing agile'? I do not believe so. We still produce working software regularly, verified by continous integration builds and nightly regression tests. We aim for continous improvement with daily standups and sprint end retrospectives with a team that is empowered to make decisions on how to run itself. If we have some aspects that do not fit perfectly with someone else's idea of an agile development process, I am not overly concerned, after all as Nigel Slater says "Blindly following a recipe as if it were a chemical formula is not really cooking, it is just going through the motions"

Tuesday, 6 October 2009

Are testers paperweights?

Jack Dee once did an excellent stand-up routine on craft fairs, in which he was particularly vitriolic about a stall selling paperweights. Something along the lines of "A paperweight is what you end up with when you started out to make something else. You start out with grand ideas and then after a few minutes of trying you realise that, well , it is just another ***! paperweight".
I sometimes feel that software testing is perceived as a bit of a paperweight career, one you end up in when you started out to be something else. People start out writing code and can't cut it, or start out in a business area and want to "get into I.T." so end up in testing.

I'd agree that for many people in testing, it is not the role that they were working towards from the outset of their career, however, for many who come into testing from other areas, it can be a surprisingly challenging and rewarding career which shows a number of significant advantages over the traditional development roles.
- Testing develops non-technical skills which translate across technologies and remain valid over time
- Automation allows opportunities to develop/script in a range of languages, often with the flexibility of choosing the technologies to use
- Finding and diagnosing faults requires analysis and problem solving skills often to a greater degree than was required to create the original code
- Turning user requirements into test cases requires excellent communication skills at both a technical and a business level which can be invaluable skills to take into higher level managerial positions.
- There is a growing community of professionals doing excellent work to improve the perception and the status of software testing within the IT community.

Although for many people a software testing role was not their first choice, there are many out there who remain in the job thanks to the challenging, varied and demanding role that it can be.