The Lean Success Story

It’s only the last turn of a bolt that tightens it—the rest is just movement.

Shigeo Shingo

It is only recently that the Lean principles have been applied to software development. In the beginning it all started with Lean manufacturing (some 40 to 60 years ago, depending on when you start the clock). Of course, it wasn’t called Lean back then. It was the Toyota Production System, or Just-In-Time manufacturing. James Womack, Daniel Jones, and Daniel Roos coined the term “Lean” in their 1990 book, The Machine That Changed the World (Harper Perennial).

Lean is a mindset, a way of thinking about how to deliver value to the customer more quickly by finding and eliminating waste (the impediments to quality and productivity). This philosophy is expressed in a set of principles that have proven remarkably applicable to a wide range of business activities. The Lean principles have been used successfully in areas as diverse as the supply chain, the office, engineering, and (of course) software development.

First, we’ll take a look at the roots of Lean thinking with a short history of how Lean developed in manufacturing. In Chapter 2, we’ll show you how you can apply Lean thinking to software development and how it differs from Agile.

A Whirlwind History of Lean

To really appreciate the emergence of Lean production and its derivatives, you have to understand what it was replacing (or competing with): mass production.

Henry Ford popularized mass production (which had itself replaced craft production) with the assembly-line manufacture of the Model T in 1913. Mass production is used to produce large quantities of goods at a low unit cost. It divides the manufacturing process into small steps that can be carried out by unskilled workers, and it relies on the use of high-precision machinery and standardized, interchangeable parts.

The drawback of mass production is its inflexibility. Since a mass production assembly line is so expensive to set up (and difficult to alter), it is only economical if it is going to produce large quantities of the same thing.

In 1945, in post-war Japan, the president of Toyota Motor Company, Kiichiro Toyoda, said that the Japanese automobile industry would not survive if it did not “catch up with America in three years.” This did not happen within three years (the Japanese automobile industry survived anyway), but it did lead to the creation of the Toyota Production System by Taiichi Ohno.

Taiichi Ohno realized that the American mass production system would not work in Japan. The domestic automobile market was too small and there was a significant demand for variety in automobiles, from small economical cars to larger, luxury cars—a poor fit for mass production. Out of necessity, Taiichi Ohno experimented with many ideas and techniques that eventually evolved into the Toyota Production System.

Taiichi Ohno described the Toyota Production System as “a system for the absolute elimination of waste.” He wasn’t kidding. By the early 1990s, Toyota was 60% more productive with 50% fewer defects than its non-Lean competitors. According to Ohno, this striking advantage rested on two pillars: Just-In-Time and autonomation.

Just-In-Time

In the 1950s, a Japanese delegation from Toyota visited American businesses to study their methods. They visited Ford Motor Company, the industry leader, but they were not impressed. They were particularly appalled by the large amounts of inventory and the unevenness of the amount of work performed in different parts of the factory.

However, when they visited an American supermarket, they were impressed with the way in which products were reordered and restocked only after customers purchased them. This pull system inspired Taiichi Ohno to create Just-In-Time, which strives to keep inventories at each manufacturing step as low as possible (preferably zero). It is about providing the right material, in the right amount, at the right time, and in the right place.

According to Ohno, inventory is waste that costs the company money. Even worse, inventory hides problems in the production system. This includes problems such as inadequate capacity, inflexible equipment, and unreliable equipment. A major contribution of a Just-In-Time system is that it exposes the causes of inventory-keeping so that they can be addressed.

Autonomation (Jidoka)

Autonomation is a combination of the words autonomous and automation. It describes machines that automate a process but are also intelligent enough to know when something is wrong and stop immediately. This kind of machine can run unattended (autonomously) while providing workers with full confidence that it is operating flawlessly. It doesn’t have to be monitored, and it needs human attention only when it stops.

When it detects an abnormal condition, the machine will stop itself and a worker will halt the production line. This focuses everyone’s attention on finding the root cause of the problem and fixing it so that it will not recur. In this way, autonomation prevents the production of defective components that would otherwise disrupt the production line or result in more costly rework at a later stage.

Waste (Muda)

The overarching goal of Lean production (or any form of Lean) is to deliver value to the customer more quickly, and the primary way to do this is to find and eliminate waste. On the surface this may seem like a simple thing, but exactly what is and what is not waste isn’t always obvious. Shigeo Shingo, who codeveloped the Toyota Production System with Taiichi Ohno, identified seven kinds of waste (described in the DOTWIMP sidebar).

A key Lean activity is to break down a process into a map of its individual steps and identify which steps add value and which steps do not—the waste. This is known as a value stream map. The goal, then, is to eliminate the waste (muda) and improve the value-added steps (kaizen). The waste is further subdivided into two categories: non-value-added but necessary (given the current state of the system), and pure waste. Pure waste is easy to deal with—it can be eliminated immediately.

So, there are two key Lean skills: knowing what the customer values, and knowing how to spot waste.

Get The Art of Lean Software Development now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.