Skip to content
Mental Models

Bottlenecks & the Theory of Constraints

The Constraint Always Moves

Fix one bottleneck and a new weakest link instantly appears somewhere else. The constraint is a position, not a place — here's how to ride the cycle instead of fighting it, in factories, traffic, teams, and your morning.

12 min Updated Jun 28, 2026

Four lessons in, you can read a system like a plumber reads a pipe. You know that throughput — what a system actually delivers — equals the capacity of its slowest step, the bottleneck, and nothing else. You know how to spot it (work piles up in front of it, the steps behind it sit idle). You know Goldratt’s five focusing steps for governing it. You know not to polish the steps that aren’t the constraint, and you know — thanks to Amdahl — exactly how little a non-bottleneck speedup buys you.

There’s one fact left, and it’s the one that turns all of this from a trick into a practice. When you finally fix the bottleneck, your reward is not a finished system. Your reward is a new bottleneck. The constraint doesn’t die; it moves. This lesson is about that motion — why it’s inevitable, why it’s actually good news, and how the whole course collapses into a single repeating procedure you can run on a factory, a freeway, a database, or a family of four fighting over one bathroom.

Before you read — take a guess

You finally upgrade the bottleneck machine on a four-stage line from 30 to 55 units/hr. The other three stages run at 50, 45, and 60 units/hr. What's the new throughput, and where is the bottleneck now?

The constraint is a position, not a place

Here is the sentence to tattoo on the inside of your eyelids: a system always has a bottleneck. Always. The moment you relieve the slowest step, some other step is now the slowest, and it inherits the crown. The constraint isn’t a particular machine or person or query — it’s a role, a position in the system that is always occupied, even as the occupant keeps changing.

Think of it like “last place” in a race. You can’t abolish last place by helping the runner in last; you just promote whoever was second-to-last into the role. Last place is a position in the standings, not a property of any particular runner. The bottleneck is the same: it’s “the slowest step,” and there is always exactly one step that holds that title.

There is precisely one way to make the bottleneck leave the system entirely, and it’s worth understanding because it’s the goal: raise every internal step’s capacity above what the world actually asks of the system. When every stage can do more than the demand — the rate at which customers, users, or reality want output — then no internal step is the constraint anymore. The constraint has moved outside, into the market: you can now make more than anyone wants to buy. That’s not failure; that’s the constraint relocating to a place where the next move is sell more, not build faster. The bottleneck never disappears. It just leaves the building.

Tip:

The one-sentence version

A bottleneck is a position that’s always filled — relieve the current occupant and a new slowest step instantly takes the role. The only way to clear it from inside the system is to push every internal step above demand, at which point the constraint moves outside, to the market.

Watch it jump

Don’t take it on faith — make it happen with your own cursor. Below is one line, four stages. The dashed line is throughput; the red badge marks the current bottleneck. Find the red stage and drag it up. Watch what happens the instant it stops being the slowest: the red badge jumps to whatever stage is now lowest, and the throughput line settles onto that new bar. Keep raising whatever’s red and you’ll march the constraint across the whole line, one relocation at a time.

Find the bottleneck

Chase the constraint across the line

Drag each stage’s capacity. The whole line can only run as fast as its slowest stage — the bottleneck (red). Speed up a faster stage and nothing happens; speed up the bottleneck and the line finally moves — until a different stage becomes the new slowest one.

Line throughput30units/hr
Cut40BottleneckWeld30Paint32Pack5030 units/hr
BottleneckLine throughputStage capacityWork piling upStarved / idle

The line runs at 30 units/hr — the capacity of “Weld”, the slowest stage. Every other stage is faster, so 32 units/hr of capacity sits idle. Speeding up anything but “Weld” changes nothing.

Drag the red (bottleneck) bar upward. The instant another stage becomes the slowest, the red badge JUMPS to it and throughput settles on the new minimum. You can never remove the bottleneck by raising it — you can only move it to the next-slowest step. That relocation, over and over, IS the work.

Notice the rhythm. Raise Weld (the 30) past Paint (the 32) and the constraint hops to Paint. Raise Paint past Cut (the 40) and it hops to Cut. Every fix is real — throughput climbs each time — but the bottleneck is always still there, sitting on whoever’s slowest now. That hop is the entire subject of this lesson.

The whack-a-mole cycle (and why it’s good, not futile)

If you’ve ever played whack-a-mole, fixing bottlenecks feels familiar: you slam one down and another pops up. The natural reaction is despair — what’s the point if it never ends? But this is exactly backwards, and seeing why is the payoff of the whole course.

Remember Goldratt’s five focusing steps from lesson 2? The fifth one isn’t “stop.” It’s repeat — go back to step one and find the new constraint. The five steps were never a one-shot fix; they’re a loop you ride on purpose. And here’s the thing the despair misses: each lap raises the whole system’s throughput a notch. The mole popping up somewhere else is not the game mocking you — it’s the scoreboard ticking up. The constraint moving is the receipt for progress, not evidence of failure. If the constraint stopped moving while throughput was still below demand, that would be the alarm: it would mean you’d quit improving the thing that matters.

This is your old friend the feedback loop, the prerequisite to this whole course, pointed at a target. “Improve the constraint → throughput rises → the constraint moves to a new step → improve that one → …” is a balancing, iterative loop — except instead of letting it run on its own, you are the loop, deliberately closing it lap after lap. Systems thinking taught you to see such loops; the Theory of Constraints hands you one to ride toward a goal.

A worked example: three relocations

Watch the constraint travel through a real system. A four-stage line — Cut, Weld, Paint, Pack — with demand of 60 units/hr. Each row is one lap of the five focusing steps: find the slowest stage, elevate it, recompute throughput, and notice where the bottleneck went.

LapCutWeldPaintPackThroughput (= min)BottleneckWhat you did
Start4030325030Weld
14045325032PaintElevated Weld 30 → 45
24045485040CutElevated Paint 32 → 48
35545485045WeldElevated Cut 40 → 55
45562485048PaintElevated Weld 45 → 62

Read down the throughput column: 30 → 32 → 40 → 45 → 48, climbing every lap. Read the bottleneck column: Weld → Paint → Cut → Weld → Paint, hopping every lap — and notice Weld came back around in lap 4. The constraint isn’t marching in a straight line; it’s circling, landing wherever you neglected last. Each lap the number went up and the constraint moved. Those two facts are the same fact. The day a lap pushes throughput to 60 (your demand), the internal constraint dissolves and the next move is to go find more customers — the constraint has left for the market.

Warning:

The trap: declaring victory after one fix

The single most common mistake after a successful bottleneck fix is to stop — to celebrate the upgraded machine and walk away. But throughput only climbed to the next-slowest step; there’s a new constraint sitting right there, capping you. “We fixed the bottleneck” should always be followed by “…so where did it move?” If you’re not asking that, you’ve stopped improving the only thing that matters.

A team relieves its slowest step five times over a quarter, and each time a new step becomes the constraint. A manager calls the effort 'a failure — we keep finding new bottlenecks.' What's the better reading?

Don’t let inertia become the constraint

Now the subtle, expensive failure mode — the one Goldratt warned about most loudly. When you build a system around a bottleneck, you don’t just buy machines. You write rules. You make policies, schedules, and habits whose entire job is to protect or work around the constraint. And here’s the trap: those rules outlive the bottleneck that justified them. You move the physical constraint, but the policy stays — and now the policy itself is what’s capping the system. Goldratt’s blunt warning: don’t let inertia become the constraint.

The classic shape is a batching rule. Suppose a machine was once your bottleneck, and changing its setup took an hour, so you wisely batched work into big lots to amortize that costly changeover — fewer setups, more time actually producing. Sensible. Then you elevate that machine, or buy a faster one with quick changeovers, and it’s no longer the constraint. But the “always run big batches” rule stays bolted into the scheduling software and everyone’s habits. Now those giant batches are clogging the line, inflating inventory, and slowing everything down — to protect a machine that no longer needs protecting. The constraint moved; the policy didn’t; the policy is now the bottleneck. That’s a policy constraint, and it’s invisible precisely because it feels like “just how we do things.”

So the constraint can wear four different costumes, and an expert checks for all of them:

  • Physical — a machine, a server, a single bathroom, a merge lane. Limited capacity you can see and measure.
  • Policy — a rule, procedure, or metric (“always batch,” “two approvals required,” “no deploys on Friday”) that caps flow even though no physical limit forces it.
  • Skill — only one person can do the critical task, or the team lacks a capability the next step demands. The constraint is knowledge, not machinery.
  • Market — internal capacity exceeds demand; the limit is now how much the world wants. The healthiest place for a constraint to live, and where sales/marketing, not engineering, do the elevating.

The reason policy constraints are the dangerous ones: a physical bottleneck announces itself (you can see the pile-up). A policy constraint hides as common sense. Nobody piles up in front of “we require three sign-offs” — the queue is in calendars and inboxes, not on the factory floor. The most valuable thing this course gives you is the reflex to ask, when a system feels stuck, “is the thing capping us actually a machine — or a rule we wrote for a machine we no longer have?”

Classify each constraint by its TYPE: is it physical, a policy, a skill, or the market?

Place each item in the right group.

  • A "no deploys after 3pm" rule leaves half the day's work queued overnight
  • Nobody on the support team can configure the database, so those tickets stall
  • Demand for the seasonal product collapses after the holidays while the line keeps running
  • Only one engineer understands the legacy billing code, so all billing fixes wait on her
  • The single CNC machine can only cut 30 parts an hour
  • The factory can now build 10,000 units a week but only 6,000 sell
  • Every refund over $50 needs the regional manager's sign-off, and she travels
  • The one freight elevator caps how fast inventory reaches the upper floors

Everyday bottlenecks

The whole point of a mental model is that it travels. Here’s the course applied to ordinary life — five quick vignettes. For each, name the constraint, name the wrong fix (optimizing somewhere that isn’t the constraint), and the right fix (exploit, elevate, or pace to the constraint).

The merging highway. Six lanes barrel along beautifully, then merge to two, and the whole thing congeals into a parking lot. The constraint is the merge — the two-lane section sets throughput, and the six lanes upstream are just a wide bottle body feeding a narrow neck. The wrong fix is adding more lanes before the merge: that only lets cars reach the queue faster, lengthening it (you widened the body of the bottle). The right fix is to elevate or relieve the merge itself — add lanes through the constriction, meter the on-ramps to pace inflow to what the merge can swallow, or smooth the merge geometry so it loses less capacity to friction. Build capacity where the road is slowest, not where it’s already fast.

The one slow teammate (or the single approver). A project crawls because every deliverable must pass through one overloaded reviewer, or one approver who’s always in meetings. That person is the constraint, and the team’s combined brilliance upstream is invisible — work just stacks in their inbox (there’s your pile-up tell). The wrong fix is making the fast contributors even faster; that just grows the reviewer’s queue. The right fix is to exploit the constraint (protect the reviewer’s time, hand them only review-ready work, strip away everything that isn’t reviewing) and then elevate it (train a second reviewer, delegate approval authority below a threshold — note that’s dissolving a policy constraint). Subordinate the team to the reviewer’s pace; don’t drown them.

The slowest database query. A web page takes 800ms to load, and 600ms of that is one unindexed database query while everything else — rendering, network, the other ten queries — adds up to 200ms. That query is the constraint, and this is Amdahl’s law from lesson 4 wearing a hoodie: shaving the other 200ms to zero, even perfectly, leaves you at 600ms — a measly 25% gain. The wrong fix is optimizing the fast 200ms (the part you understand, the satisfying micro-tuning). The right fix is to attack the 600ms query — add the index, cache it, restructure it — because it dominates the total and is the only place a fix actually moves the page-load number. Profile first, fix the slowest, ignore the fast parts.

The morning routine. A family of four needs to get out the door, but there’s one bathroom (or one coffee machine, or one outlet for everyone’s chargers). However efficiently everyone else moves, the household empties at the speed of that single shared resource — the bottleneck of the morning. The wrong fix is everyone waking up earlier and getting individually faster; that just stacks more people outside the bathroom door sooner. The right fix is to pace to the constraint: stagger wake-up times so the bathroom is used back-to-back with no idle gaps (exploit), prep everything that doesn’t need the bathroom the night before (subordinate), or add a second mirror/kettle (elevate). Schedule the whole house around the neck.

Notice the pattern across all five: the wrong fix is always “make the part I can easily improve a little better,” and the right fix is always “find the actual neck and either wring more out of it or pace the rest of the system to it.” Same model, five disguises.

Match each everyday situation to the resource that is actually its constraint.

Pick a term, then click its definition.

Select ALL the moves that actually raise a system's throughput. (The system: a four-stage line at 40, 30, 45, 50 units/hr, with demand of 80.)

Where bottleneck-thinking helps and where it misleads

This model is powerful, which means it’s also seductive — and a seductive model will happily explain things it doesn’t actually fit. Time for some honesty about its edges.

Where this model lies to you

The clean story — one linear chain, one slowest step, fix it, repeat — assumes a world that isn’t always real:

  • Not every system is a linear chain. Many are networks or have parallel paths. If work can flow through two independent routes, there isn’t one neck — there are two, and relieving one may just shift load to the other in ways the simple “minimum of the stages” rule doesn’t capture. Web requests, supply chains, and org charts branch and rejoin; the bottleneck idea still helps, but you have to find the constraint of the path that matters, not assume a single straight line.
  • There can be multiple simultaneous constraints. Sometimes two steps are near-tied, and elevating one barely moves throughput because the other immediately co-binds. The “lift it and the constraint cleanly jumps elsewhere” picture blurs when several steps are bunched at the same capacity.
  • The constraint can shift faster than you can act. In volatile systems the slowest step changes hour to hour (a call center’s bottleneck moves with the time of day). By the time you’ve elevated yesterday’s constraint, today’s is elsewhere. The model assumes a constraint stable enough to aim at.
  • Capacity has to be measurable, and demand has to exceed it. The whole framework assumes you can measure each step’s capacity and that the system is supply-limited. If demand is below capacity everywhere, there’s no internal bottleneck to chase — the constraint already lives in the market, and squeezing the line is wasted effort.
  • Speed isn’t the only axis. Bottleneck-thinking optimizes throughput. But systems also have quality, safety, cost, and resilience, and the fastest configuration can be the most fragile. The slowest step might be slow on purpose (a careful inspection, a deliberate cooling period). Don’t “elevate” a constraint that’s actually doing necessary work.

This is where two other models keep you honest. Map vs. territory: “the slowest single step caps the whole” is a map — a brilliant, lossy simplification of a messier territory of networks, variation, and trade-offs. Use it to navigate, but don’t mistake it for the terrain. And circle of competence: the bottleneck lens is sharpest on systems that genuinely are roughly-linear, measurable flows (production lines, pipelines, queues). Reach for it confidently there; reach more cautiously when the system branches, fluctuates, or trades speed against things you also care about.

Trust it most when the system is (1) roughly a chain — work passes through steps in sequence, not a tangled network; (2) measurable — you can put a capacity number on each step; (3) supply-limited — demand clearly exceeds what you can produce, so a faster system is genuinely the goal; and (4) stable enough — the slowest step holds still long enough for you to aim at it.

When those hold (a production line, a CI pipeline, a checkout queue, a morning routine), the model is close to a law: throughput really is the minimum, and chasing the constraint really is the whole game. When they don’t — networks, near-tied constraints, demand-limited systems, or speed-vs-quality trade-offs — keep the instinct (find what limits the whole, push there) but drop the false precision of “there is exactly one neck and here is its number.” The instinct generalizes; the arithmetic doesn’t always.

Fill in the honest limits of the model.

Pick the right option for each blank, then check.

Bottleneck-thinking is sharpest when the system is a measurable, supply-limited . It gets shakier when work flows through , when several steps are , or when the fastest configuration sacrifices — so keep the instinct to push at the constraint, but drop the false precision of 'exactly one neck.'

Bringing the course together

Step back and look at what you can now do. Five lessons have folded into one operating procedure for any flow-limited system:

  1. Throughput = the minimum. A system delivers at the speed of its slowest step — not the average, not the sum. (Lesson 1)
  2. Spot the constraint. Find the step with work piling up in front and idleness behind. That’s your neck. (Lesson 1)
  3. Run the five focusing steps. Identify it, exploit it (wring out every drop without spending), subordinate everything else to it, elevate it (add capacity), and repeat. (Lesson 2)
  4. Don’t polish non-bottlenecks. Effort spent anywhere but the constraint moves throughput by zero — and can pile up inventory and starve later steps. (Lesson 3)
  5. Know the ceiling before you spend. Amdahl’s law tells you how much a given fix can possibly help, so you don’t pour effort into a 25%-max gain. (Lesson 4)
  6. And expect it to move. Every fix relocates the constraint to the next-slowest step. That’s not failure — it’s the receipt for progress. Watch for policy constraints left behind by old bottlenecks, and ride the loop until the constraint moves outside to the market. (This lesson)

That’s the whole machine. Find the neck, push there, expect it to jump, push at the new neck, and keep going — checking every lap that the thing capping you is a real, current, physical constraint and not a rule you wrote for a bottleneck that’s long gone. You started this course able to pour water from a bottle. You can now govern a system.

Recap

Big picture

The whole course — Bottlenecks & the Theory of Constraints

  • Govern the Constraint
    • L1 — Throughput = the minimum
      • A system runs at the speed of its slowest step (the bottleneck)
      • Not the average, not the sum — the MINIMUM
      • Spot it: pile-up in front, idleness behind
    • L2 — Five focusing steps (Goldratt)
      • 1 Identify · 2 Exploit · 3 Subordinate · 4 Elevate · 5 REPEAT
      • Step 5 = the constraint moves; go again
    • L3 — Don't polish the wrong stone
      • Improving a non-bottleneck moves throughput by zero
      • It can pile up inventory and starve later steps
    • L4 — Amdahl's ceiling
      • Speeding up one part has a hard cap
      • Compute how much a fix CAN help before spending
    • L5 — The constraint always moves
      • Fix one neck → a new slowest step takes the role
      • A bottleneck is a POSITION, always filled
      • Moving = the receipt for progress (ride the loop)
      • Watch for POLICY constraints left over from old bottlenecks
      • Push capacity above demand → constraint exits to the market
    • Where it lies to you
      • Networks & parallel paths break the single-chain story
      • Multiple near-tied or fast-shifting constraints
      • Throughput ≠ quality/safety/resilience
      • Map vs. territory; use within your circle of competence

Check yourself: the constraint moves

Question 1 of 50 correct

After you elevate a four-stage line's bottleneck from 25 to 60 units/hr, the other stages stand at 40, 55, and 50. What is the new throughput?

Check your answer to continue.

Where this goes next

That’s every teaching lesson in the course. You can read throughput as the minimum, spot the constraint by its pile-up, run Goldratt’s five focusing steps, refuse to polish the parts that don’t matter, compute Amdahl’s ceiling before you spend, and — now — expect the constraint to move and ride that loop deliberately, watching for the policy ghosts old bottlenecks leave behind.

What’s left is to prove it. The Final Exam is a graded, one-question-at-a-time run across the whole course — throughput as the minimum, spotting the constraint, the five focusing steps, the local-optimization trap, Amdahl’s law, and the moving constraint. It’s a one-way door by design: each answer locks the moment you submit it — no going back, no retries, no restart — and you’ll see your score only at the end. You need 70% to pass. Take your time on each question, because once you commit, you commit. Go find the constraint.

Mark lesson as complete