Appearance
Workshop 2: Bottleneck Analysis Handout
This is what we work through together in the session. Follow along in your own clone. Record what we find in your logbook as we go.
Part 1: Rank the pipeline stages
We open baseline.log from Session 1 together and read the duration for each stage, then rank the stages 1–8 by duration (slowest = 1). The eight stages:
- install
- lint
- typecheck
- test:api
- test:web
- build:api
- build:web
- deploy
Record each stage's duration, its rank, and whether it felt slow in your logbook as we go. Note the single biggest hot spot, the total duration, and the hot spot as a percentage of total (expect ~95%:
test:api).
Part 2: 5 Whys on the top three bottlenecks
For each of the three slowest stages, we apply 5 Whys together until we reach a process root cause, something about how the team works, not just about the line of code. I run the first one live on screen; we do the next two together.
The shape of a 5 Whys:
| Step | Question |
|---|---|
| Why 1 | Why is this slow? |
| Why 2 | Why? |
| Why 3 | Why? |
| Why 4 | Why? |
| Why 5 | Why? |
Record each bottleneck, its five whys, and the root cause you land on in your logbook as we go.
Part 3: Fishbone diagram (one bottleneck of your choice)
For one bottleneck (ideally a flaky test), we sketch a fishbone together with contributing factors grouped under each category: People, Process, Tools, Environment, Materials.
There are five flaky tests in the repo (all fail ~50% of runs): processes async events within budget (apps/api/tests/reports.test.ts), auto-saves a task within budget (apps/api/tests/tasks.test.ts), renders a relative timestamp (apps/web/tests/components/CommentList.test.tsx), signs in once the request resolves (apps/web/tests/pages/Login.test.tsx), and shows the task list shortly after load (apps/web/tests/pages/Dashboard.test.tsx). The one in reports.test.ts is the canonical example.
Record your chosen bottleneck and the contributing factors per category in your logbook as we go.
Part 4: Prioritization
We plot each of the three bottlenecks on the impact / effort grid below, together.
LOW EFFORT HIGH EFFORT
HIGH ┌──────────────────┬──────────────────┐
IMPACT │ Quick wins │ Big bets │
│ (fix this sprint)│ (write proposal) │
│ │ │
├──────────────────┼──────────────────┤
LOW │ Warm-up work │ Don't do │
IMPACT │ (newcomer tasks)│ (politely kill) │
│ │ │
└──────────────────┴──────────────────┘Record each bottleneck's impact (H/L), effort (H/L), quadrant, and priority (1-3) in your logbook as we go.
Keep your logbook
Everything above lives in your logbook. This is continuity, not an assignment: we carry your three ranked, root-caused, prioritized bottlenecks straight into Workshop 3.