Poka, in Japanese, means “inadvertent mistake,” whereas yoke means “prevent.” Put them together and you have a quality assurance technique developed by Japanese manufacturing engineer Shigeo Shingo.
This article by Harry Robinson explains how using Poka-yoke helps eliminate defects by preventing or correcting mistakes as early as possible. Operations like those at Hewlett Packard utilize poka-yoke into their software process, as Robinson explains, preventing “literally hundreds of software localization defects from reaching our customers.”
Shigeo Shingo developed processes, called “devices,” which made errors much less likely. In one of the examples used by Robinson, Shingo created a process where workers were required to take two small springs and put them into a dish before assembling a switch (which used the two springs). While this seems a waste of time, it stopped the workers from forgetting to put the springs into the switch to start with, which saved an enormous amount of time in sending technicians to customer’s locations for repair.
These devices go into two categories, prevention and detection:
A prevention device engineers the process so that it is impossible to make a mistake at all. A classic example of a prevention device is the design of a 3.5 inch computer diskette. The diskette is carefully engineered to be slightly asymmetrical so that it will not fit into the disk drive in any orientation other than the correct one. Prevention devices remove the need to correct a mistake, since the user cannot make the mistake in the first place.
A detection device signals the user when a mistake has been made, so that the user can quickly correct the problem. The small dish used at the Yamada Electric plant was a detection device; it alerted the worker when a spring had been forgotten. Detection devices typically warn the user of a problem, but they do not enforce the correction.
How It Relates To Software
This all comes around to software quality. Robinson explains how prevention in software development involves the creation of computer languages, whereas detection comes from software testing (though it does come to late), and programs that detect syntax of programs and alert the programmer of possible mistakes.
These two software devices allow programmers to detect mistakes before they make it far into the development process, reducing costs and rework.
Read the full post here: http://www.mistakeproofing.com/software.html