Why Standards don’t help Software world
One of the unfortunate paths of wisdom is that if you have solved a problem in a particular way, the next time you see that problem, you will always apply the same solution. Since Engineering, or even better word would be Manufacturing, world is existing for about two centuries now and we have solved many problems of that world, we tend to use the same approach towards the Software world. Though it keeps on failing.
The most famous example of this failing application is the notion of “working hours as a measure of productivity”. As in a factory, all other factors including Machine, Material, Method etc. usually remain the same, the focus is put on the Man. So if the Factory Worker A spends 10 hours and Factory Worker B spends 6 hours, A is more productive. Peter Drucker spend almost his entire life dispelling this concept for the development work and introduced the term of Knowledge Worker (this is also an inspiration for my blog’s name as Knowledge Tester). Such that for Knowledge Worker, the measure of productivity is not the hours worked but the work produced in those hours. Alas, we still find managers and leaders in software world, who still live in the Factory Worker mentality.
Now let’s move to the standards problem. In my earlier life I was a Mechanical Engineer and then I moved to software quality domain. When I was there, I absolutely loved the Standards and when I was first introduced to ISO 9000 (a standard on quality management), I immediately followed it. It was year 1996, when as part of my final year project, I undertook a study of ISO 9000 implementation in the Pakistan Industry along with my friend and we thought ISO 9000 will solve all the problems. The manufacturing world is a world of repetition, so if you set the pattern right, you’ll almost always get a consistent result.
But this does not improve quality, this just improves consistency.
Take this instance. During the visits to different factory locations where ISO 9000 was successfully applied, one of the managers told us about a non-conformance their auditor reported: (a non-conformance is an incident where a practice is not in accordance with the standard or the plan)
“In one of our steps, we rinse empty bottles before refilling them. When the auditor visited the site, the bottles were being rinsed with water and soap. The auditor reported a non-conformity because the procedure stated that bottles should be washed with water. Using soap was a non-conformance”.
Okay, so when I moved to software quality profession my love for ISO 9000 was still there. I along with the same friend, successfully achieved ISO 9000 certification for the software house we were working for and thought of it is a big achievement. But as we were implementing it and started analyzing what we actually gained on quality improvement front, we quickly realized that ISO 9000 is meant for Manufacturing (the repeating) world. Where as in our circumstances, all of our versions were unique and even within versions, the copies with different clients were customized to meet their needs. We, in software world, live in an imaginative world and every software delivery is a step into unknown. Standards like ISO 9000 don’t help in such kind of knowledge work.
So now when I heard of ISO 29119 which is being proposed as one standard for Software Testing, I know that it will not work. Testing is a piece in the Software Development process that is equally creative and imaginative and works like these are not supposed to be managed through standards.
I have signed the petition to stop ISO 29119. Even if they don’t stop this standard, I’m of the view that this standard will not improve the industry as ISO 9000 didn’t improve the software quality.
What are your views on applying standards in the software world?