The Tech Lead Handbook · Quality and Delivery
Forecasting Delivery Honestly
Replace single-date guesses with probabilistic forecasts from the team's own throughput, using a Monte Carlo simulation you can run.
Scenario
Example team: product asks the payments team when the 60 remaining items of a migration will be done. The tech lead adds up estimates and says "eight weeks". It takes fourteen. The next time, the lead pads the estimate to sixteen weeks; product goes around the team.
What you see on the team
- Single-date commitments that are usually missed.
- Estimates padded or argued down depending on politics.
- Long estimation meetings for every item.
- Loss of trust between engineering and product.
The common mistake
Giving a single date from summed estimates, as if every item will go to plan, instead of a range with a probability.
Why it happens
Summing estimates ignores variation: some items take far longer, new work appears, people are interrupted. Single numbers sound confident, so they get requested and given. A forecast based on what the team actually finished in past weeks already includes all of that messiness.
The playbook
Use throughput history. Count items finished per week over the last 10–20 weeks.
Run a Monte Carlo simulation: many times, randomly sample past weeks until the remaining work is done, and record how many weeks each run took. The Monte Carlo method turns your history into a distribution of outcomes:
import random
random.seed(42)
# Items finished per week, last 14 weeks (example data)
history = [5, 7, 3, 6, 8, 4, 6, 2, 7, 5, 6, 9, 4, 5]
remaining = 60
growth = 0.10 # expect ~10% extra items to be discovered along the way
def one_run():
todo = remaining * (1 + growth)
weeks = 0
while todo > 0:
todo -= random.choice(history)
weeks += 1
return weeks
runs = sorted(one_run() for _ in range(10_000))
for p in (50, 70, 85, 95):
print(f"{p}% likely done within {runs[int(len(runs) * p / 100) - 1]} weeks")
print(f"\nSummed-estimate answer the lead gave: 8 weeks -> "
f"chance of hitting it: {sum(r <= 8 for r in runs) / len(runs):.0%}")
Output
50% likely done within 12 weeks 70% likely done within 13 weeks 85% likely done within 14 weeks 95% likely done within 14 weeks Summed-estimate answer the lead gave: 8 weeks -> chance of hitting it: 0%
Communicate a range with confidence levels: "50% likely within 12 weeks; 85% likely within 14."
Re-forecast weekly as work finishes and scope changes — it costs seconds.
Reduce variation to tighten forecasts: smaller items, fewer items in parallel, less unplanned work.
What to say
To product:
"Based on the last 14 weeks, there's a 50% chance we finish within 12 weeks and an 85% chance within 14. If you need a date to commit externally, I'd use the 14-week date. I'll update this every Friday — if scope grows, you'll see it move."
Trade-offs
- Needs stable history; for a new team, use a range from a similar team and update quickly.
- Item sizes must be roughly comparable; slicing work thinly (previous lesson) helps.
- Some stakeholders want one date; give the high-confidence date and explain it's a commitment level, not a guess.
Signals it's working
- Commitments are made at a stated confidence and are usually met.
- Estimation meetings get shorter; the team spends time slicing, not arguing points.
- Product checks the weekly forecast instead of asking for new estimates.
- Forecast ranges narrow as the team's flow becomes more predictable.
Key points
- Summed estimates ignore variation and are usually optimistic.
- Use the team's own throughput history and Monte Carlo simulation to forecast a range.
- Communicate dates with confidence levels; re-forecast weekly.
- Tighten forecasts by reducing variation: smaller items, less work in progress, less unplanned work.
Practice questions
Why do summed estimates tend to produce missed dates?
Answer
They assume each item goes to plan and ignore variation, interruptions and newly discovered work; real delivery has a long tail, so the sum is closer to a best case than a likely case.
Describe how a Monte Carlo delivery forecast works in two sentences.
Answer
Take the team's weekly throughput history and, thousands of times, randomly sample past weeks until the remaining work is done, recording how many weeks each run needed. The distribution of results gives dates at chosen confidence levels, e.g. 50% and 85%.
Product needs one date for a customer. What do you give them?
Answer
A high-confidence date from the forecast (e.g. the 85th percentile), stated as a commitment level, plus a weekly re-forecast so changes in scope or progress are visible early.
Open in the app to mark lessons complete, take notes and track your progress.