Skip to content

Estimation under uncertainty

Give a range with its assumptions, narrow it by settling unknowns, and calibrate the next one with this one's actuals.

Predict first

Before you read: predict

ExamHall's operations lead must decide whether a seat-map view for the proctor console can ship before the spring exam season, and asks Omar how long it will take. His notes list what nobody knows yet: whether the exam centres' floor plans exist as files, how many rooms the largest centre has, and whether the map must update live during an exam.

Which reply gives the lead what the SWEBOK Guide and McConnell ask of an estimate?

Pick one

The 30-second version

An estimate predicts an unknown quantity so that someone can decide. The work varies, so give a range and the assumptions that hold its ends. The range narrows as decisions and spikes remove that variation; more estimating does not narrow it. Afterwards, divide each actual by its estimate, and apply the spread of those ratios to the next estimate.

Give a range with its assumptions, narrow it by settling unknowns, and calibrate the next one with this one's actuals.

How it works

Step 1 of 13

An estimate serves a decision. Engineers estimate to make decisions when critical quantities are unknown; behind every estimate is a decision. [S1]

Analogy: A well driller quoting a borehole (water-well drilling)

A householder asks a well driller how deep the new borehole will go, since drilling is priced by the metre. With no drilling log for the plot, she quotes 30 to 90 metres and names her assumption: the water sits in the same gravel as the next-door well. Re-reading the geological map that evening would not narrow the quote; a narrow test hole that finds the top of the gravel would. Her notebook pairs every past quote with the depth actually drilled, and in this valley she has gone deeper than quoted every time.

At the borehole In an estimate
30 to 90 metres, "if the gravel is the neighbour's" a range and its assumption (step 3)
re-reading the same map more estimating with no decision (step 6)
the test hole a spike on one unknown (step 7)
quoted depth beside drilled depth actual ÷ estimate, logged (step 11)
deeper than quoted, every time, in this valley parts leaning one way (step 12)

Breaks down when: the rock does not change while she drills, but a product can be redefined mid-project. Wrong inference: "once the test hole is in, the range can only shrink." A redefined scope widens it again (step 8). A borehole also has one depth, while an estimate adds many parts, each with its own range.

In real terms: each estimate carries its low end, its high end and the assumptions behind them, and each closed task adds one actual-over-estimate ratio to the log.

Examples, run for real

EXH-2600 is a synthetic estimate of Arabic right-to-left support for the ExamHall candidate app, split into four parts in working days.

EXH-2600 · Arabic right-to-left support, candidate app · working days · ends summed
  layout mirroring                3–4   known: logical CSS properties are already used
  code snippets in Arabic text    2–10  open: how a snippet displays inside right-to-left text
  date formats                    1–4   open: which formats the exam centres want
  PDF export                      2–8   open: whether the PDF library joins Arabic letters
  kickoff                    total 8–26 days (high ÷ low 3.25)
  decision: one date format  date formats 1–4 -> 1–2 · total 8–24 days (high ÷ low 3.00)
  2-day spike on snippets    code snippets in Arabic text 2–10 -> 2–4 · total 8–18 days (high ÷ low 2.25)
  widest part left: PDF export 2–8; the low end assumes the library joins the letters

At kickoff three of the four parts are open, so the range runs from 8 to 26 days. Deciding one date format is a decision, not more estimating, and it trims the top. The spike settles the snippet question, and the range narrows again. Lina announces 8–18 days and names the PDF assumption that holds the low end.

MR !2900 adds the work to the team's estimate log: five closed tasks, each estimate beside its actual.

MR !2900 · estimate log, five closed tasks · working days, estimate -> actual (actual ÷ estimate)
  seat-map filter 3 -> 4 (1.33) · proctor notes 5 -> 6 (1.20) · timer banner 2 -> 3 (1.50) · locale switcher 8 -> 10 (1.25) · alert sound 4 -> 5 (1.25)
  over 5 of 5 · under 0 · summed plan 22 -> 28 (1.27): no overrun is offset
  RTL support · announced 8–18 after the spike · actual 15 · inside the range

Every task ran over, so adding them did not cancel anything: the summed plan ran over too. The ratio column, not one remembered task, is what the next estimate is calibrated with. The script replays fixture figures; it does not measure a real team.

Try it

Answer first, then check. Nothing is saved.

Question 1 of 5

A payments-ledger team estimates multi-currency settlement in four parts, in working days: currency tables 2–3, posting rules 4–6, the bank's FX rate file import 3–15 (nobody had seen the file), and the reconciliation report 2–4. A two-day spike on a sample file, now finished, puts the import at 2–9.

What range does the team now give for the remaining work?

Pick one

Question 2 of 5

A ledger team's range for replacing its reconciliation engine was 6–24 weeks at kickoff, and three months later it is still 6–24 weeks. The team has built a prototype in that time, while the matching rules, the bank file formats and the cut-over plan are still under discussion. The finance director offers the lead a full week, free of all other work, to rework the estimate and bring the range within a month either way.

What does McConnell's account of the cone of uncertainty say about the offer?

Pick one

Question 3 of 5

A ledger team logs its last six features of one kind, all estimated the same way, as estimate → actual in working days: 5 → 6, 4 → 6, 4 → 5, 10 → 13, 6 → 9 and 5 → 8. A seventh feature of that kind is estimated, the same way, at 10 days. Figures are to one decimal place.

Using the log, what should the team give for the seventh feature?

Pick one

Question 4 of 5

A ledger team estimates its statement export in four parts, in working days. At kickoff, when nobody had seen the bank's file format, the file writer was put at 3–13. The bank then agreed to take CSV, a format the team has written before, so the team put the CSV writer at 2–4 and announced 9–16 for the export: the statement query 3–5, the CSV writer 2–4, the delivery job 2–3 and the audit trail 2–4. Before any of it is built, the bank withdraws that agreement: it will take only its own XML format, which nobody on the team has seen.

What range does the team now give for the export?

Pick one

Question 5 of 5

Four lines from a payments-ledger team's weekly estimate notes.

Which line goes against what the SWEBOK Guide or McConnell says?

Pick one

Go deeper

Pro tip

Keep the estimate log where tasks close: add an "estimated" field to the ticket, and when the ticket closes, record its actual beside it. Read the ratio column before the next planning session.

Checked against the tools and docs as of 2026-10-02.