8 Wastes of Six Sigma, Applied to Software Engineering

Six Sigma is basically the study of efficiency in manufacturing.

They’ve codified a list of efficiency antipatterns called the 8 wastes.

These antipatterns are transferrable to the domain of software engineering and are useful to know in your own work.

The 8 wastes are:

  • Transportation/travel/motion waste: iterating over an entire collection rather than using a sliding window/two pointers, for example.
  • Defects: introducing bugs. Unexpected and unintended behavior.
  • Overproduction: building something you don’t actually need yet, and may not actually ever need. Also, using a data structure that takes more memory when a smaller one would suffice.
  • Waiting: using blocking code when it’s not necessary and asynchronous code is more appropriate.
  • Non-utilized talent: not reusing existing features/libraries.
  • Inventory: a backup of work/information that is sitting idle rather than being processed. Bottlenecks. Backpressure. Tech debt accumulation.
  • Extra processing: building to more restrictive constraints than actually called for. Not starting with MVP and extending on subsequent iterations.

I’ve combined travel/transportation and motion here; within software engineering these are the same, unless you want to consider the waste of commuting to an office instead of working remotely.