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.