Skip to main content.

The Theory of Constraints

The Theory of Constraints developed by Dr Goldratt states that "The throughput of any system is determined by one constraint". Thus, if you want to increase throughput, you should work on identifying and improving the constraint (or bottleneck).

In simpler language: a chain is as strong as its weakest link; if you wish to strengthen the chain, find and strengthen the weakest link.

XP2005_TOC_game1XP2005_TOC_game2
Participants running the hat/boat folding company to discover their bottleneck (at XP 2005)

Step 0: The Goal

We must always start with making the goal of the system clear. For the simulation our goal is:

Step 1: Find the Bottleneck

toc_chain.png The participants simulate a paper hat and boat folding company. Each of the participants does part of the work:
  • The Requirements person is responsible for the inflow of material
  • The Analyst decides what the team is going to make (boat or hat) and make the first fold
  • The Designer folds some more and indicates on the paper where the programmer should fold
  • The Programmer does the bulk of the folding, especially for a boat
  • The UI Designer draws a flower on the hats, portholes and an anchor on the boats
  • The Tester verifies the acceptance criteria and sends back any faulty product to the person responsible for the fault
  • The Production person receives and counts the output. Only boats and hats "in production" earn throughput.
Now, who's the bottleneck? It's usually the programmer in this simulation. It's quite clear to see, even if we don't/can't measure each player's throughput:
  • A pile of work builds up in front of the bottleneck
  • People downstream from the bottleneck are mostly idle
How many boats+hats can the team make? As many as the "programmer" can make.

What can we do to improve throughput (output)? Apply the 5 Focusing steps


Pictures courtesy of Marc Evers