The seven wastes of Lean were originally used by Taiichi Ohno to categorize common sources of waste in a manufacturing process.
A manufacturing process involves regular, fairly predictable chunks of work arriving in a fairly homogenous way. In this sort of system, the seven wastes proposed by Ohno are common sources of waste.
Software development, however, is a highly variable process. Our incoming work requests vary widely and they don’t arrive on a regular schedule. It’s like a manufacturing line where, instead of a steady stream of cars and trucks, you’re faced with a bicycle, a car, an ocean liner, two more bicycles, a truck, and now someone’s asked us to build a horse…
The systems are different, so there’s not necessarily a software analog to each of the manufacturing wastes, and there’s no particular reason why there should be seven of them.
So let’s back up a little and look at wastes in software development from a new perspective. Here’s some typical wastes in software development:
- Time spent waiting
- Maintenance of half-finished inventory
- Task-switching by human beings
- Failure to receive or failure to use newly emerging information
Waiting is a waste shared by manufacturing and software development (and probably most other human endeavors).
Half-finished inventory is a waste in both manufacturing and software development, but for somewhat different reasons. In manufacturing, half-finished inventory costs money and space to store. In software, half-finished inventory may not cost much to store since it’s just bits on a disk, but some of it becomes obsolete and must be re-done or even thrown away.
Task-switching is a particularly insidious waste because, not only is it hard to see, some people think multi-tasking is a virtue rather than a waste. That’s definitely not so. Interrupting a knowledge worker repeatedly during the day causes a great deal of waste.
Software development uses a lot of newly emerging information – new customer needs, new regulations, defects, designs that don’t work quite how you thought they would. If new information is not promptly found and used, there can be a great deal of waste.
Agile combats waste with tools similar to those used in manufacturing – smaller batches so new information can be found and utilized quickly, control of work-in-process to reduce task-switching and inventory, and cadence for efficiency.
I’m not really sure whether software development has four wastes, or seven, or a different number, but I do hope you will think about waste a little differently now.