Skip to content
Rabin Poudyal
Rabin Poudyal
← All models

Systems and complexity

Bottlenecks and the theory of constraints

A system's throughput is set by one constraint; improving anything else is wasted effort until that constraint is fixed.

Eliyahu Goldratt, The Goal (1984, with Jeff Cox), and his five focusing steps.

Goldratt defines a constraint as anything that limits a system from achieving higher performance against its goal. In a chain of dependent steps the slowest step sets the pace of the whole: speeding up a step upstream of it only piles work in front of it, and speeding up a step downstream only makes that step wait more. His five focusing steps follow from that. Identify the constraint. Decide how to exploit it, meaning get the most out of it without major spending. Subordinate everything else to that decision. Elevate the constraint by adding capacity. Then, when it breaks, go back to step one, and do not let inertia from the old constraint become the new one.

It holds because the parts are dependent and variable. In The Goal the hike moves at the pace of the slowest scout, Herbie, no matter how fast the others walk, and the gap in front of him is the inventory of the system. Work waiting in front of a bottleneck is the clearest sign of where it is, and the wait is the queue length divided by the constraint's rate, which Little's law makes exact. In practice this means walking the pipeline and finding where the queue is longest, then asking how much of that stage's time goes to things that are not its job.

The constraint moves once you lift it, so the steps are a loop, not a project, and Goldratt's warning about inertia is the part most often skipped: the rules an organisation built around the old constraint outlive it and become the new one. Constraints are often policies rather than machines: an approval, a batch size, a rule about who may deploy. And exploit comes before elevate for a reason. Teams reach for more capacity when the bottleneck is idle a third of the time because of scheduling, and the cheaper fix is to stop starving it. Finally, the model assumes a chain. In a web of parallel paths there can be several constraints at once, and the method works one at a time.

Example

On 23 March 2021 the container ship Ever Given ran aground across the Suez Canal and blocked it for six days. Nothing anywhere else in the shipping system could make up for it: by the time the ship was refloated on 29 March, 422 vessels were queued at both ends. The Suez Canal Authority's chairman said 85 ships were expected to pass on Saturday 3 April, and the backlog cleared that day. The canal was the single constraint for every ship routed through it, and the queue in front of it was the measure of the loss.

Where it applies

A single database primary, one slow stage in a build pipeline, or the one reviewer who approves every change is the constraint, and adding engineers elsewhere only lengthens its queue. In a data pipeline, find the stage with the most work waiting in front of it before you add workers anywhere.

Think about it

What is the one constraint on your team's output right now, and how much of its time goes to work that is not its job?

Applied it to something real? Log it.

Test yourselfYou double the speed of a stage that is not the bottleneck. What happens to throughput and to the work in progress?

Throughput does not change; the constraint still sets it. If the faster stage is upstream, work piles up in front of the bottleneck. If it is downstream, the stage just waits more.

Related models

Sources and further reading