Nine Wastes Hiding in Your Software Team

Measuring the productivity of software engineering teams is notoriously difficult and can often backfire. However, we don’t need complex metrics to recognise when time and effort are being wasted.

When we see engineers rewriting code because the first version was rushed, productivity is already suffering. When we see them waiting on another team, that’s a clear sign of a problem.

Think of waste in a development process like friction in a physical one. By definition, reducing this friction improves efficiency and productivity. The best way to improve productivity is to identify and reduce waste, the friction that consumes resources without benefiting customers or stakeholders.

If it’s so obvious, why is waste everywhere?

Because it’s hard to see. Waste hides behind bureaucracy, multitasking, and poor prioritisation. Worse, we quickly become used to it, and organisational inertia keeps it in place. To fix this, we first need to learn how to see it.

The Nine Wastes of Modern Software Development

Many are familiar with the seven wastes of Lean Software Development, which offer a useful (great actually) lens for spotting process inefficiencies. However, those principles don’t fully capture the human and cognitive frictions that I see in modern software work.

To see the full picture, we need to broaden the definition. I’ve found it more effective to frame the problem around nine distinct categories. This model recognises not only process failures, but also cognitive and cultural ones:

  1. Building the Wrong Thing: The cost of building a feature or product that doesn’t address actual consumer, customer, or business needs.
  2. Mismanaging the Backlog: The cost of duplicating work, expediting low-value features, or delaying necessary bug fixes.
  3. Rework: The cost of altering delivered work that should have been done correctly the first time.
  4. Unnecessarily Complicated Solutions: The cost of creating a solution that is more complex than necessary; a missed opportunity to simplify.
  5. Extraneous Cognitive Load: The cost of unnecessary mental effort required from the team just to get things done.
  6. Psychological Distress: The cost of burdening the team with unhelpful stress, which is intrinsically wasteful.
  7. Knowledge Loss: The cost of re-acquiring information that the team once knew but lost, perhaps due to churn or knowledge silos.
  8. Waiting/Multitasking: The cost of idle time, which is very often hidden by context-switching and multitasking.
  9. Ineffective Communication: The cost of incomplete, incorrect, misleading, or absent communication between stakeholders.

This list explicitly includes human-centred wastes such as Psychological Distress and Extraneous Cognitive Load. In my experience, these are the factors most often overlooked, and often the most damaging.

What’s Next?

Recognising the waste is the first step. Now we need to tackle it.

This post is the first in a new series dedicated to identifying and remove these nine wastes. In the next article, we’ll take a closer look at the flow killers that bring teams to a halt: Mismanaging the Backlog, Waiting/Multitasking, and Ineffective Communication.

More on that soon.