Collaboration & Process › Estimation & Planning
Estimation
Predicting how long work will take, and communicating the uncertainty.
Also known as: software estimation, estimating work, time estimates, effort estimation
Estimation is predicting how long work will take. It’s hard, and everyone is bad at it at first. The goal isn’t a perfect number. It’s a useful forecast with honest uncertainty, so others can plan around it.
Why estimates are usually wrong
- Unknowns. You discover problems while building: unclear requirements, tricky legacy code, surprises in a library.
- Optimism. We estimate the happy path and forget testing, review, meetings, deploys and bugs. Hofstadter’s law: it always takes longer than you expect, even when you account for it.
- Interruptions and context switching.
- Early estimates are the least informed (cone of uncertainty).
Practical habits
- Break the work down first, and estimate the small pieces (breaking down tasks). Small tasks are far easier to estimate than big ones.
- Give a range, not a single number: “3 to 6 days, most likely 4”. A range communicates uncertainty. A single number sounds like a promise.
- Say what you assumed, and what could blow it up (“assuming the API is as documented”).
- Include everything: review, tests, deployment and waiting time. Don’t estimate only typing time.
- Compare with similar past work (“last time a similar integration took 5 days”). Your own history is the best data.
- Time-box investigation of unknowns with a spike, and estimate afterwards.
- Estimate as a team when possible, since different perspectives reveal hidden work (planning poker).
- Update when you learn. Telling someone early that it’ll take longer is far better than a surprise later (status updates).
Estimates are not commitments
Don’t let an estimate quietly turn into a deadline. If someone wants more certainty, discuss scope, options and risk, instead of squeezing the number. Padding everything secretly isn’t honest. Use visible buffers.
As a junior, you’ll tend to underestimate. A useful trick: estimate, then ask a senior what they’d expect, and learn from the gap. Over time, you’ll calibrate.