Re-Setting Expectations On Testing
Pledge - The Lamenting
I came along this lament, not so long time ago, by a very senior Engineering Manager working for a very reputed financial firm (names removed because we do not want name calling here) :
Developer Testing - Does anyone feel pity about loads of work that developers were to take up in addition to doing testing? Developers are asked to take responsibility for their code, test it thoroughly, code unit tests and so on.
One reason I think there is a need of dedicated testers is - developers do not have time to test. Testing is an involved process, needing its own investment to become good at it. Testing requires training in cognitive skills so that challenge of finding the hidden, not so obvious bugs. Testing is a career in itself. Given time, a developer would invest in learning that cool technology, framework or a new programming language. Time to reset expectation?
Turn - In The Game of Cricket
Circa 1990, one could have get selected in a Cricket team - when one was not really good at fielding. You see, people then tend to actually believe the following:
Fielding is an involved process, needing its own investment to become good at it. Fielding requires training and having physical skills so that challenge of finding the hidden, not so obvious optimisations in your athleticism. Thus, a batsman or a bowler should instead be learning the cool dilscoop or the Waz reverse swing - something new to horn the skill-set! Clearly we need dedicated fielders in the team - who won't bat or bowl but field! Let's make ICC agree.
In cricket, fielding was never a career in itself - till this guy happened:
And then, these sort of things continued happening with the same guy:
And certainly people figured out : AHA! We can do this! This is a career boosting move by itself! And thus... these....
became norm. It is now normal, and pretty regular, and it is expected in modern day cricket. The Batsmen, and the bowlers, while they are not *hired* in the team to do primarily *fielding* - they all have well accepted fielding as part of basic cricket, and then they chose to improve on it to get an edge. Everyone thus fields, being a bad fielder means you are not going to play in the IPLs, unless you are exceptional. Then there is the dedicated fielder called the Wicket Keeper. But everyone fields, including the captain of the team.
Prestige - Testing IS for Everyone in the Product Development
System Testing is *Fielding* if you imagine the field of Engineering is equivalent to Cricket. In the era of BR ( Before Rhodes ) - none imagined that it is actually a specialised skill of much value proposition for everyone playing cricket.
But AR ( After Rhodes ) - everyone knows, and believes in it. And the point is - while some are born (and gifted) exceptional fielders, many are not, but you can still Practice and move closer to it. Thanks to working for D.E.Shaw, I had the distinct pleasure to talk & listen to Harsh Bhogle and Rahul Dravid - and this fielding topic was - for both of them - close to their heart. Everyone bothers about the Batsmen, and the Bowler but none the less about the fielders. But then you know for fact that "Catches WINS matches" .
Engineering or Software is thereby lucky, to start off with the whole specialisation of the Testing Discipline done already, no Rhodes were needed. Thus, unlike cricket, where we have fielding coaches coming from baseball background, enough coaches to learn from for software testing are available already, so instead of ... lamenting - it is better to move over it, and learn from those who were actually there. Engineering Excellence does not come cheap.
Building Software : Art or Engineering?
The null Hypothesis is moot. If this would have been a *serious* Engineering, making a remark like : "Our Engineers do not have time for Testing" would probably be the death sentence to the corresponding firms reputation, once and for all. Imagine you are boarding the Boeing flight - and pop cometh the news in your device - "Boeing Engineering Manager says : 'Our Engineers do not have time to test!'". Off goes everyone out of the flight - to board another one, never to board any Boeing, ever.
BUT, the current state of majority of of handling software is arguably not Engineering. Engineering is where you do maths. Even genetic engineering has maths - for crying out loud, Ronald Fisher, the geneticist, invented statistics for application in Genetics.
Software Can Be Made Into Engineering
But Microsoft did and does Engineering. The Ribbon UI was disruptive, and it came out of user data and statistical analysis:
**Yes, proud to part of the Microsoft Office Team when that happened.
The Art Form in Software
Learning from the user, and thinking about product quality? Yep, checked. Learned from the very best - look at here. Proud to be part of the Windows 7 Kernel team, when that was happening. Ok, you want to learn more about how to think quality even before you start coding - so there you go.
So, in Microsoft, people at every level, from fresh engineers to the CEO used to test the product. Surprised? Microsoft Office was and still is dog-fooded - so, at Beta stage, whole MS, including the CEO uses the product - which they are supposed to deliver. In Windows Vista, that practice was not followed. The result is very well documented.
Pushing the whole burden of quality to the testing team - NAH, MS did not do that. It involved all the workforce into it, and that is why - everyone still uses Microsoft Office. I would strongly suggest - if you are not using your own product, and only making baloney vision statements without even using the product once, first use it and then create vision documents.
Epilogue - Anyone Can Cook!
Anyone can learn to field, thus everyone can become a good fielder.
Anyone can learn to code, thus everyone can become a good coder.
Anyone can learn to test, thus everyone can become a good tester.
But not everyone can be an exceptional fielder, or a coder, or a tester. That, require talent, which is beyond acquiring by training. Incidentally, Fisher believed everything to be of nature, not to be nurtured, and he was wrong. None is asking a developer to be an exceptional tester. Serious fielding is a career path now - but - cricket captains are not saying their bowlers or batsmen won't do fielding. It is high time, those debates about who should be doing testing - is put to certain rest. Like fielding, software testing and product quality and branding is a collective enterprise - and everyone must actively participate in it to get the brand value up.
It was actually pretty shocking to see that opening statement came from a Seasoned Engineering Manager, and that too, from such a very reputed financial firm. Terrible, terrible choice of words. Time to set the engineering expectations, truly.