The Theory of Constraints' 5 Focusing Steps
Applying the focusing steps to the simulation
Step 0. Make the Goal explicit
Put as many paper boats+hats in production, using the least amount of paper.
Step 1. Identify the Constraint
Usually, the programmer is the constraint. Work piles up in front of them, people behind them are idle a lot of the time.
Step 2. Exploit the Constraint
Get the most out of the constraint resource. For example:
- Make sure the programmer is never idle by always having a small amount of work available in a buffer. Don't make the buffer too small, or you will stall the Constraint. Don't make the buffer too big, or you will waste resources in excess inventory.
- Someone else can handle the rejects from testing, so that the Programmer is not interrupted (but are we not also deriving the programmer of feedback about their work?)
Let the resources who have excess capacity spend some of that capacity to help the Constraint. For example:
- The analyst and designer can spend time making sure that the paper they give to the programmer is very neatly folded, so the programmer doesn't waste time
- The designer can do a bit of the folding work of the programmer, e.g. finishing the hats (only one extra manipulation for the designer), so that the programmer can concentrate on the labour-intensive boats.
- The tester can perform some testing upstream, to detect quality problems before they reach the Constraint
![]() | Running the simulation again after applying focusing steps. Notice how Jaana, The Tester, (with the green shirt) has moved so she can oversee the whole process. |
Step 4. Elevate the Constraint
We can raise the throughput rate of the Constraint by:
- Giving them training and coaching. We did this in the second round: Fred (sitting, light blue shirt) has now replaced Joerg (standing) as programmer (see picture above), but he needed some folding coaching from Joerg to get up to speed
- Hiring another Programmer
After improving the performance of the Programmer, we can't let up. There's always another bottleneck! In the simulation, the constraint can shift to the Designer. So, we start again from the beginning...
Step 6. Change the System
If the previous steps don't yield any substantive improvements anymore, change the system.
![]() |
The modified system:
|
All the documentation required to run this workshop is available from the Agile Coach site under a Creative Commons license.
Pictures courtesy of Marc Evers


