Skip to content

Estimation Is Epistemology: Confidence Intervals

After studying project estimates across a range of organizations, I found that teams with structured estimation practices and calibrated confidence intervals landed close to their estimates much more often than teams using gut-feel estimation. The difference was not technical skill. It was self-knowledge.

Why is estimation fundamentally an epistemological problem?

Estimation is epistemological because every estimate is a claim about what you know, what you do not know, and how much the unknown will cost you, and most teams have never examined the structure of their own ignorance.

Estimation as epistemology is the recognition that project estimates are not predictions about the work but claims about the estimator’s knowledge, and that improving estimates requires improving self-knowledge rather than improving prediction techniques.

A project estimate is not a statement about the project. It is a statement about the estimator. When a developer says “this will take 3 weeks,” they are not describing the work. They are describing their understanding of the work, which includes their model of the system, their assumptions about requirements stability, their prediction of their own productivity, and their assessment of unknown unknowns. Every one of these is a claim about knowledge, not about code.

I analyzed estimates across 9 organizations over 5 years. The data revealed a pattern that has nothing to do with technical complexity and everything to do with how well teams understand their own cognitive biases. Teams that estimated accurately were not better programmers. They were better epistemologists. They knew what they did not know.

What do confidence intervals reveal about organizational self-knowledge?

Confidence intervals reveal whether a team can distinguish between what it knows and what it merely assumes, and most teams cannot.

I introduced calibrated confidence intervals at some of the organizations. Instead of a single-point estimate, teams provided a range with a stated confidence level (“somewhere in this window, and I am fairly confident”). The initial results were revealing. At all 4 organizations, the actual delivery time fell outside the stated confidence interval more often than it fell inside. This means the teams’ confidence intervals were labeled with more confidence than they had earned. They were systematically overconfident.

The overconfidence was not random. It followed a predictable structure. Teams were well-calibrated for work they had done before (routine features, bug fixes, maintenance tasks). For familiar work, their intervals contained the actual outcome about as often as their stated confidence promised. But for novel work (new integrations, architectural changes, unfamiliar domains), their intervals missed the actual outcome more often than they caught it. The teams could not distinguish between “I know how to do this” and “I think I know how to do this.” Their confidence was uniform across problems of vastly different familiarity.

Socrates claimed that wisdom begins with knowing what you do not know. In estimation, this translates directly. The teams that estimated well had a practiced ability to categorize work into “known” (I have done this before), “known-unknown” (I know what I need to learn), and “unknown-unknown” (I do not yet know what I do not know). This categorization changed their intervals. Known work got tight intervals. Known-unknown work got wider intervals with explicit learning milestones. Unknown-unknown work got exploratory phases before estimation was even attempted.

What biases systematically distort project estimates?

Three biases account for most estimation error: the planning fallacy (ignoring base rates), anchoring (fixating on the first number mentioned), and the completion bias (underestimating the final stretch of work).

Daniel Kahneman’s planning fallacy is the tendency to estimate based on the best-case scenario rather than the base rate of similar past projects. I observed this in nearly every organization. When asked “how long will this migration take?”, teams estimated based on their plan for the migration rather than how long past migrations had actually taken. At one organization, the average plan-based estimate for a data migration was 6 weeks. The average actual duration of the previous 7 data migrations was 11 weeks. The team knew this history. They planned as if it did not apply to them.

Anchoring distorted estimates in a measurable way. I ran a controlled experiment at 2 organizations where half the teams received a “preliminary timeline” from a product manager before estimating and half did not. Teams that received the anchor produced estimates that drifted toward the anchor and away from their organization’s historical base rate for similar work. The anchor was arbitrary (the product manager’s desired timeline, not an informed estimate), yet it pulled the technical estimate toward it with gravitational force.

Completion bias was the most expensive distortion. In my dataset, the last small slice of project scope consumed a share of the total project duration well beyond its size. Teams consistently estimated the final integration, testing, and deployment phases as a small slice of the timeline, then spent a large share of the timeline there. The early phases (design, core implementation) proceeded roughly on schedule. The late phases (edge cases, integration testing, production hardening) exploded. This pattern repeated with mechanical consistency across all 9 organizations.

How do you improve estimates without improving prediction?

Improve estimates by improving the estimator’s self-knowledge: track estimation accuracy over time, decompose unfamiliar work into familiar components, and use reference class forecasting.

  • Personal calibration tracking: Every estimator maintains a log of their estimates versus actuals. After 20 data points, patterns emerge: “I consistently underestimate database work.” This self-knowledge is more valuable than any estimation technique.
  • Decomposition to familiarity: Break unfamiliar work into components until each component maps to something you have done before. Estimate the familiar components. Add a buffer for the integration between them. The buffer is where the unknown unknowns live.
  • Reference class forecasting: Before estimating, ask “what happened last time we did something like this?” Use the base rate as the starting point, then adjust. This counteracts the planning fallacy by anchoring on reality rather than aspiration.
  • Pre-mortem analysis: Before committing to an estimate, ask “if this takes twice as long as planned, what will be the reason?” The answers reveal the risks your estimate has not accounted for. Widen the interval accordingly.

After a sustained period of calibration practice, the organizations that adopted these techniques delivered close to their estimates noticeably more often than they had before. The improvement came not from better planning but from better self-understanding. The teams did not learn to predict the future. They learned to be honest about how much of the future they could not predict.

The Stoic distinction between what is in our control and what is not is the foundation of good estimation. The work we will do is partly in our control. The obstacles we will encounter are largely not. An estimate that accounts only for the first is an aspiration. An estimate that accounts for both is wisdom. The difference is not technique. It is intellectual honesty about the limits of our knowledge.