Simyl
simylflow
Course Home
Module 4: Metrics & Flow Management
Lesson 4 of 5
12 min

Finding and Addressing Bottlenecks

Using data to identify where flow breaks down and what to do about it.

1What Is a Bottleneck?

A bottleneck is a stage that limits the throughput of the entire system. It's the slowest step in the process.

Theory of Constraints (Eli Goldratt): The output of the system can never exceed the output of the bottleneck. Improving anything other than the bottleneck doesn't improve the system.

In Kanban:

  • Work piles up in front of the bottleneck
  • Downstream stages are starved
  • The bottleneck's throughput = system throughput

Every system has a bottleneck. When you fix one, another emerges. This isn't failure—it's how improvement works. The bottleneck should move as you improve.

2Identifying Bottlenecks with Data

Metrics that reveal bottlenecks:

1. Queue lengths (WIP in waiting states) If "Ready for QA" has 8 items while other queues have 1-2, QA is likely the bottleneck.

2. Time in stage If items spend 3 days in development but 5 days in code review, code review is slowing things down.

3. CFD band widths Wide bands = high WIP = bottleneck. Look for bands that grow over time.

4. Age of oldest item per stage If the oldest item in "Deploy" is 2 days but oldest in "Testing" is 10 days, testing is the constraint.

Common bottlenecks in software teams:

  • Code review (not enough reviewers)
  • QA/Testing (insufficient capacity or automation)
  • Deployment (manual processes or infrequent releases)
  • Requirements/Design (upstream bottleneck)
  • Approvals (waiting for stakeholders)

3Addressing Bottlenecks

Once you've identified the bottleneck, options include:

1. Add capacity to the bottleneck

  • More people
  • Cross-training
  • Automation
  • Remove waste from the bottleneck process

2. Offload work from the bottleneck

  • Can other stages help?
  • Can the bottleneck work be simplified?
  • Can some work skip the bottleneck?

3. Reduce demand on the bottleneck

  • Tighter WIP limits upstream (don't flood it)
  • Better preparation of work items
  • Batching (sometimes—trade-off with flow)

4. Subordinate other stages to the bottleneck

  • The bottleneck sets the pace
  • Don't optimize non-bottlenecks (wastes effort)
  • Feed the bottleneck at exactly the rate it can consume

5. Elevate the bottleneck

  • Invest in making the bottleneck faster
  • Eliminate the constraint entirely if possible
Good: Bottleneck Focus

QA is the bottleneck. Team decides: (1) Two developers start helping with testing, (2) Add more automated tests to reduce manual QA load, (3) Tighten WIP limit on dev so QA isn't flooded. QA throughput increases, flow improves.

Bad: Ignoring the Bottleneck

QA is the bottleneck. Team decides to 'go faster' in development by cutting corners. Dev throughput increases. QA pile-up worsens. Quality drops. System throughput unchanged.

4The Bottleneck Moves

When you fix a bottleneck, a new one appears. This is expected and healthy.

The cycle:

  1. Identify the bottleneck (QA)
  2. Improve it (automation, cross-training)
  3. A new bottleneck emerges (now it's code review)
  4. Identify and address the new bottleneck
  5. Repeat

Common progression in software teams:

  1. First bottleneck: Testing/QA
  2. Fix: Test automation, cross-training → Bottleneck moves to...
  3. Second bottleneck: Code review
  4. Fix: Pair programming, async reviews → Bottleneck moves to...
  5. Third bottleneck: Deployment
  6. Fix: CI/CD, feature flags → Bottleneck moves to...
  7. Fourth bottleneck: Product decisions

This is progress! Each time the bottleneck moves, your system capacity has increased.

The danger: Trying to fix all bottlenecks at once. You can't. Focus on the current constraint. When it's no longer the constraint, move to the next.

If you're not sure which stage is the bottleneck, your WIP limits are probably too loose. Tighten them until queues form—then you'll see the bottleneck clearly.

Key Takeaways
  • The bottleneck limits system throughput—improving anything else doesn't help
  • Identify bottlenecks via queue lengths, time in stage, and CFD patterns
  • Address bottlenecks by adding capacity, reducing demand, or subordinating other stages
  • When you fix one bottleneck, another emerges—this is progress
Common Pitfalls to Avoid
  • Trying to optimize non-bottleneck stages
  • Ignoring the bottleneck while speeding up other stages
  • Not re-evaluating when the bottleneck shifts
  • Loose WIP limits that hide where the real constraint is