You may be thinking 'here he goes again'. Not content with associating testing to the CIA the other week, he is now trying to create a tenuous link to Toyota. Bear with me though. There is a very real link between Toyota and software testing and that link is quality. In fact, any part of the software development lifecycle or any department within the development cycle can learn from Toyota. It is simply a case of process improvement.
People who know me, know that I love cars. More specifically that I love Japanese cars and even more specifically Toyotas. The reasons are simple, some models are quick, insane fun, frugal, comfortable and more importantly, reliable. Don’t just take my word for it the JD Power survey (a customer satisfaction survey) has placed Toyota (and luxury arm, Lexus) in the top 5 for the last 6 years.
The JD Power results for 2007.
So we have established Toyota have an enviable reputation for quality. We also know that software testing is about driving quality and reliability in to the software process and the product under test. There are many ways the two are linked together but the one I am going to concentrate on is Kaizen.
Kaizen is the Japanese term which literally means “continuous improvement” or "Good Change”. It is a methodology, a mind set even, that instills quality in to every single aspect of the workplace.
Toyota have taken Kaizen and made it a fundamental policy within its company which has resulted in them being famous for quality and reliability.
Every employee at Toyota has a say in how their area/department is run with quality and efficiency being the core goal. Anything at all that will improve efficiency and quality is implemented – no matter how small it is. It is not unheard of for the conveyor belts at Toyota’s Nagoya factory to be stopped as someone has spotted something which could be a potential quality issue. A process is then performed to work out how to solve the potential quality issue before the belts are resumed and work can continue. The end product is a car (and build process) that has an enviable reputation for quality.
Broadening the picture shows that almost every single Japanese car manufacturer has amazing quality levels and this is because in Japan, Kaizen is part of the culture.
Kaizen is what we in the IT industry often call "process improvement". Process improvement is something all companies should be doing to stay ahead in a competitive industry and to improve efficiency in general. Improving quality in the build, the documentation, the review process, the tools we all use daily, communication and anything else that can affect the way we work is essential.
Using Wikipedia's description of Kaizen we can clearly see that this fits nicely with how process improvement should work.
- standardize an operation
- measure the standardized operation
- gauge measurements against requirements
- innovate to meet requirements and increase productivity
- standardize the new, improved operations
- continue cycle ad infinitum.
It seems so simple but it is something many companies and individuals fail to grasp and implement. In order to improve there must be something to measure. In order to measure you must know what it is you are wanting to improve.
Most software testers have a thing for metrics and stats. They know deep down that metrics should be taken with a pinch of salt and that on face value, they are often not the 'whole' picture of the facts, but gathered over time they show a valuable measurement that can be used for improvement. Defects per build, defects per functional area, test case pass failure rates etc all show information regarding efficiency and quality.
A high number of defects per functional area may show that the specification needs improving or that there is a misinterpretation of implementation between development and test. It may just show that this area is very complicated and needs more resource, maybe even more detailed planning. Whatever the interpretation of the stats there are always areas for potential improvement.
Even the regular processes that people may take for granted could yield some areas of improvement, like daily stand-ups and team meetings right through to creating build environment and test stacks. There is always something that can be standardized, measured and then improved upon. Test case writing and detail levels are a classic example.
Often the first hurdle to overcome is the empowerment of employees to have their say and to feel confident in putting forward suggestions for improvement. End of project reviews, end of iteration reviews and general feedback forums are essential to getting a balanced view point. Making sure people feel comfortable giving feedback which at times can often be negative, is a crucial step forward.
However, Kaizen and process improvement can be taken too far. Companies that often pride themselves on a relaxed, none bureaucratic environment can soon lose this with too much process improvement. With process improvement often comes endless forms, communication documents, processes, rules and regulations. The key is finding the right balance, getting it just right so that quality and efficiency go up, but the work environment remains as you wish.
If Kaizen can be held responsible for high quality and reliable cars then process improvement can surely lead to high quality and reliable software and a software company having that reputation can’t be a bad thing.
http://www.gembapantarei.com/2006/08/kaizen_in_software_development_start_by_seeing_the_7_wastes.html
http://en.wikipedia.org/wiki/Toyota_Production_System
http://en.wikipedia.org/wiki/Big_Three_automobile_manufacturers
http://newyorkcto.blogspot.com/2007/06/kaizen-meeting-in-agile.html
http://www.oracle.com/technology/pub/articles/dev2arch/2008/05/kaizen-bpm-agile.html