|Adam Petersen - Software Development Pages, Book Reviews Section|
Toyota Production System: Beyond
After the Second World War the development of what would become known as the Toyota Production System (TPS) started. Mr. Ohno realized that Japan couldn't compete with USA by copying the American way of working. Manufacturing at that time was focused on mass-production a la Ford where large volumes of identical products are produced. Toyota's need was the exact opposite: small volumes of many different products. Mr. Ohno managed to achieve this by introducing a very flexible model where waste in all its costly forms is continuously eliminated. As the oil-crisis hit the world in the 70's the superiority of TPS was clear; Toyota made less profit, but the gap to other manufacturers increased!
In addition to the practical workings of TPS, Mr. Ohno also describes the thought-process that lead to the different elements. This is really fascinating material and stands as an excellent example on out-of-the-box-thinking. For example, deriving the idea of Kanban from American supermarkets is pure brilliance.
Fascinating or not, how does all this relate to software? Toyota is about cars, isn't it? Well, the most important principle in TPS is to eliminate waste and I consider that principle very relevant for software development. A very common type of waste is code that's written but not integrated until weeks and even months later. In this case, the main waste arises from the late feedback and the missed opportunity to improve the code from the knowledge gained. Further it indicates a waste because something was developed but there obviously wasn't any true need for it. At least not immediately and the time spent could have been invested in an activity adding immediate value.
I also believe that’s the reason why practices such as Test-Driven Development (TDD) pay of so well; it works exactly in the vein of TPS. TDD achieves just-in-time exactly the same way as Toyota does: by inverting the steps in the traditional process. Remember, in Test-Driven Development you're not allowed to write any code before you have a failing testcase. That is, the failing testcase is the need that triggers production and ensures that no unnecessary code (i.e. waste) is developed. Of course it also provides immediate feedback.
The Toyota Production System is a book to study and reflect over. It is a pleasure to read and in addition to its brilliant material it may well change the way you look at the process of developing software in teams.
Reviewed April 2006
|©2005 Adam Petersenfirstname.lastname@example.org|