A long time ago I worked as a management consultant. One of the most fascinating projects from back then was the introduction of Kaizen at several German automotive companies. Kaizen means loosely translated continuous improvement. It is a bundle of techniques applied by Japanese manufacturing companies. The goal of Kaizen is to break out of the notion that there is a fixed cost-time-quality tradeoff. Traditional thinking was that if you wanted higher quality it would imply more cost and longer production times. Kaizen posits that with the right process improvements you can get higher quality at lower cost and faster speed.
The effect of Kaizen over many years can be dramatic. For instance, we worked with a supplier that manufactured the very large and round front and rear bumpers for Porsche. These are injection molded plastic parts. An injection molding machine consists of a fairly sizeable apparatus for controlling the flow of the plastic and a specific mold (or die) that is inserted into this apparatus. The supplier was very proud that they could switch the whole setup over from one part to another in 24 hours (includes time to switch the mold, the type of plastic used, etc). Members of the team traveled to Japan and visited a variety of injection molding setups there. The best performing one that they found there was able to switch parts in 15 minutes on essentially the same kind of machine. And they were working on reducing that to 10 minutes. That is only the most dramatic of the differences, but the Japanese supplier also operated at a significantly lower defect rate and lower cost per part.
I have found that Kaizen practices are also highly applicable to software development. Yet it seems that not that many folks in the software development community are familiar with the tenets and practices of Kaizen. So I am planning to write a series of posts that describes Kaizen principles and how they are applicable to software development.