Theory of Constraints vs Lean

Looking for a conflict

Lately, I’ve been studying the “Thinking Processes“. As usually happens when I discover a new solution, I want to apply it to everything. I want to play some more with the “Evaporating Cloud” (see my first attempt), a tool to resolve conflicts. Hmmm… Which conflict can I resolve today?

To optimize non-bottlenecks, or not?

There is a question that’s been puzzling me for a long time: the Theory of Constraints and Lean have conflicting advice about optimization.


The Theory of Constraints tells us that we should only optimize the bottleneck. Because the throughput of the system is constrained by the bottleneck, the only way to improve the performance of the system is to improve the bottleneck. The theory also tells us not to optimize non bottlenecks. In the best case, the optimization won’t improve the system, but it’s probable that this improvement will actually worsen the system’s performance (by increasing work in progress, inventory…). It’s quite easy to see in the “drum-buffer-rope” example.


Lean tells us to mercilessly remove waste and improve every part of the system. Toyota encourages everyone to continuously search for ways to improve ways of working. Even if it’s only a small improvement. Even if that part of the system will replaced in the near future. No improvement opportunity is lost.

This is the dilemma: “Optimize everything” conflicts with “Only optimize the bottleneck”. I like both approaches and have used them both successfully. How is it possible that two of my favourite techniques disagree? Or do they…

The evaporating cloud

Let’s draw an evaporating cloud for this conflict:
Reading the diagram from right to left:

  • We don’t optimize non-bottlenecks IN ORDER TO avoid creating waste
  • We avoid creating waste IN ORDER TO have an efficient system
  • We optimize everything IN ORDER TO remove waste
  • We remove waste IN ORDER TO have an efficient system
  • Optimize everything CONFLICTS WITH don’t optimize non-bottlenecks

Examining the diagram critically

Let’s apply the legitimate reservations:

  1. Clearly, “remove waste” and “don’t create waste” contribute to having an “efficient system”
  2. Evidently, Toyota optimizes everything all the time and their system has very little waste.
  3. Clearly, optimizing a non-bottleneck has no effect on the system’s throughput and increases work in progress and inventory. If we look at the diagram below, what happens if we optimize Supplier 2 to have a capacity of 12? The system still has a capacity of 8. And we’re now overproducing 4 items, which end up in inventory. Overproduction is the worst kind of waste in the Lean philosophy.

A conflict. Unless…

Optimizing a non-bottleneck results in overproduction. Unless… If we use a “Pull” system, the consumer determines the output rate of the producer. In that case, the optimized Supplier 2 still produces 8 units, but now has 4 units of spare capacity. We could use that capacity to subordinate to the constraint or exploit the constraint. By doing that, we keep inventory low and increase the bottleneck’s (and the system’s) throughput.

Restating the system
In this system we see that optimizing both the bottleneck and the non-bottleneck resources removes waste. BUT: unless we have a “Pull” system, optimizing non-bottlenecks will introduce waste. Therefore, use the ToC approach in a less mature system, with a “Push” scheduling model; use the Lean approach in a system with a “Pull” scheduling model.

I feel a lot better, now that this is settled…

Tags: Systems Thinking, theory of constraints, thinking processes, Toyota Way