Openbook

Story Points and Estimation: A Practical Guide

How story points actually work: relative sizing, reference stories, fast planning poker, velocity pitfalls, and an honest look at the no-estimates alternative.

Project ManagementOpenbook Team13 min read

Story points might be the most cargo-culted practice in software. Teams assign them because the tool has a field for them. Managers convert them to days in a spreadsheet the team never sees. Executives compare velocity across teams like league tables. And every few years a "no estimates" wave arrives announcing the whole thing was theater.

Here is the uncomfortable truth in the middle: story points solve a real problem — humans are terrible at absolute estimation and decent at comparison — but the practice only pays for itself under specific conditions, and most teams violate at least one of them. This guide covers what points actually are, how to set up a scale that works, how to run estimation in minutes instead of hours, the specific ways velocity gets corrupted, and an honest treatment of the alternative: not estimating at all.

What story points are (and what they are not)

A story point is a unit of relative size. A 5-point story is roughly five times the size of a 1-point story — where "size" bundles three things:

  • Effort: how much work there is to do.
  • Complexity: how hard the thinking is, how many parts interact.
  • Uncertainty: how much is unknown — unfamiliar code, ambiguous requirements, a vendor API nobody has touched.

Uncertainty is the ingredient people forget, and it is the one that makes points genuinely different from hour estimates. "Rename this button" and "investigate why exports intermittently fail" might both be a few hours of typing, but the second could also be three days of spelunking — its point value should carry that risk premium.

Just as important is the negative space:

  • Points are not hours in disguise. The moment someone publishes a conversion table ("1 point = 4 hours"), you have hour estimates with extra steps and none of the benefits. Every pathology of hour estimation — padding, anchoring, being held to the number — comes flooding back through that conversion.
  • Points are not a productivity measure. They measure the size of work, not the worth of workers. A senior engineer finishing a 3-pointer that would have been an 8 for anyone else did not "do less work" that week.
  • Points are not comparable across teams. Each team's scale is calibrated to its own reference stories. Team A's 5 and Team B's 5 share a numeral and nothing else. Cross-team velocity comparison is numerology.
  • Points are a team property, not an individual one. The estimate answers "how big is this for us, collectively," which is why the whole team estimates together — and why "points completed per person" is a metric that should never exist anywhere.

Why relative sizing works at all

There is a reason this indirection exists instead of just estimating days. Ask someone "how tall is that building?" and you get wild variance. Ask "is that building taller or shorter than the one next to it, and roughly by how much?" and accuracy jumps dramatically. Decades of estimation research — from Kahneman and Tversky's work on the planning fallacy onward — point the same direction: humans systematically underestimate absolute effort for their own work, but comparative judgment ("this is like that one, but with two integrations instead of one") is relatively robust.

Relative sizing also degrades gracefully. If a team consistently underestimates by 30 percent uniformly, velocity silently absorbs the bias: the team completes fewer points per sprint than an outsider would guess, forecasts based on that velocity remain accurate, and nobody ever needs to correct the bias. Hour-based plans have no such self-correction — a 30 percent bias in hours is a 30 percent miss on every commitment. This bias-absorption property is the single strongest argument for points, and it only works if nobody converts points back to hours.

Setting up a scale that works

Use a spaced scale, not a continuous one

Most teams use the modified Fibonacci sequence: 1, 2, 3, 5, 8, 13 (some add 20 and 40 for epics; treat those as "too big to enter a sprint, must be split"). The gaps are the feature. Arguing whether something is a 6 or a 7 is precision beyond anyone's actual knowledge; the widening gaps force the only distinction humans can reliably make — "meaningfully bigger or not." T-shirt sizes (S/M/L/XL) work identically for teams allergic to numbers; they just cannot be summed into velocity as conveniently.

Anchor the scale with reference stories

An abstract scale drifts. Pin it to two or three real, completed stories the whole team remembers:

  • 1 point — "the config toggle": added a feature flag and one conditional. Known code, no unknowns, done in a morning.
  • 3 points — "the CSV export": new endpoint, pagination, a few formats to handle. A couple of days, minor unknowns.
  • 8 points — "the SSO integration": third-party API, unclear docs, security review, several days plus real uncertainty.

Every future estimate becomes a comparison: "closer to the toggle or the export?" Write the reference stories down where estimation happens. When the team turns over enough that nobody remembers the SSO saga, elect new references — a scale is a shared memory, and shared memories need refreshing.

Calibrate once, then stop debating

New scale or new team: grab 15–20 recently completed items, spread them across the scale as a group in one 45-minute session, and argue until rough consensus. That session is the calibration. Afterward, individual estimates take seconds because they are comparisons against a settled backdrop, not philosophical debates.

Planning poker without the whole afternoon

The mechanics of planning poker exist for exactly one reason: to prevent anchoring. The first number spoken in a room drags every subsequent number toward it — so everyone commits to an estimate simultaneously before anyone speaks.

The fast version, honed for a 45-minute refinement session covering 8–12 items:

  1. Someone reads the story — 30 seconds. Outcome and acceptance criteria. Not the implementation essay.
  2. Clarifying questions only — 2 minutes max. Questions that change the size are fair; solution design is not. "Does this need to work for suspended accounts?" is a sizing question. "Should we use a queue or a cron job?" is a design meeting trying to hatch.
  3. Everyone reveals simultaneously. Cards, fingers, or a poker tool — anything simultaneous.
  4. Consensus or adjacent? Take it and move on. All 3s and 5s: call it 3 or 5, either is fine, next story. The scale's gaps already exceed this disagreement.
  5. Wide spread? Talk to the outliers — 2 minutes. A 2 and a 13 on the same story is the whole point of the exercise: the 2 knows about an existing helper the 13 doesn't, or the 13 remembers the legacy-permission swamp the 2 has never entered. Both explain, everyone re-votes once, take the result. This conversation is where estimation earns its keep — the number is almost a byproduct of the knowledge transfer.
  6. Still split after one re-vote? Take the higher number or split the story. Persistent disagreement means genuine uncertainty; price it in or slice it out. Do not average — a 2 and a 13 do not describe a 7, they describe a question mark.

Two timeboxes protect the session: two minutes per discussion, and a hard rule that any story generating a design debate goes to the parking lot with a name attached. Distributed teams can run steps 1–3 asynchronously in a thread — post the stories, collect votes by a deadline, then meet for five minutes only on the items with spread. Estimation belongs in refinement, not in sprint planning itself; a planning meeting that estimates is a planning meeting that runs long (we cover that division of labor in sprint planning that does not waste a morning).

Velocity: legitimate uses and reliable corruptions

Velocity — points completed per sprint, averaged over the trailing three to five sprints — has exactly two legitimate uses:

  1. Capacity for the next sprint. "We average 32; Priya's out half the sprint; plan around 28."
  2. Medium-term forecasting. "The remaining scope is roughly 180 points; at 30±4 per sprint, that is six to seven sprints — call it seven."

Note what both uses share: velocity is an input to the team's own planning. Every corruption of velocity starts the moment it leaves that role and becomes something reported upward. The reliable failure modes:

  • Velocity as a target. Leadership asks the team to "get velocity up." Points are a made-up unit, so the team obliges the only way possible: estimates inflate. Yesterday's 3 becomes tomorrow's 5, velocity climbs 40 percent, throughput of actual work changes zero percent. This is Goodhart's law in its purest lab conditions — and once inflation starts, historical forecasts break too, so the corruption is not even free.
  • Cross-team comparison. "Team A does 45 points, why does Team B only do 20?" Because their scales differ, which is like comparing temperatures without agreeing on Celsius or Fahrenheit. Teams under comparison respond with — again — inflation.
  • Velocity as an individual metric. Attributing points to people converts a collaborative sizing tool into a piecework wage system. Pairing collapses (helping a teammate "costs" you points), big-ticket hoarding appears, and code review starts to feel like charity.
  • The velocity commitment. Treating the average as a floor the team must hit every sprint ignores that an average, by construction, is missed half the time. Teams held to a floor pad estimates until the floor is safe — inflation again, by another road.

The pattern is monotonous: every misuse produces estimate inflation, and inflation destroys the forecasting value that justified the practice. If you keep only one governance rule, keep this one: velocity never appears in a performance conversation, a dashboard ranked across teams, or an OKR. In Openbook, sprint insights in the Kanban room show velocity and completion trends to the team on the board where the work lives — which is where those numbers belong, close to the people who can actually interpret them.

A worked forecast, start to finish

Here is what the legitimate use looks like in practice. A team's last five sprints completed 28, 34, 25, 31, and 33 points — average 30.2, with sprints ranging roughly ±5. The remaining scope for a release sums to 170 points of estimated stories plus, from experience, about 15 percent unestimated discovery work (bugs found late, small stories that always appear): call it 195.

  • Optimistic: 195 ÷ 35 (best observed pace) ≈ 5.6 sprints.
  • Expected: 195 ÷ 30 ≈ 6.5 sprints.
  • Conservative: 195 ÷ 25 (worst observed pace) ≈ 7.8 sprints.

The honest sentence to stakeholders: "Six to eight sprints — twelve to sixteen weeks — with eight sprints the number I would put money on." Note everything this required: a stable scale, uncorrupted velocity, and the discipline to report a range instead of the midpoint. Note also what it did not require: a single hour estimate, a conversion table, or a Gantt bar per story. When someone asks for "just one date," give the conservative end. Nobody has ever been fired for shipping two weeks early.

Estimating the awkward stuff: bugs, spikes, and debt

Feature stories are the easy case. Three categories generate recurring arguments, and each has a clean answer.

Bugs. Do not point them individually — a bug's defining feature is that its size is unknown until it is mostly fixed, so bug estimates are fiction. Instead, reserve capacity: look at history ("bugs consume roughly 20 percent of our sprints"), plan that reserve explicitly, and let bugs flow through it unestimated. Pointing bugs also creates a perverse ledger where shipping defects earns velocity, which is exactly backwards.

Spikes. A spike — a timeboxed investigation — is estimated by its timebox, full stop. "Up to two days answering whether the vendor API supports bulk writes" is the whole estimate. The output of a spike is knowledge that makes some other story estimable; if a spike ends without that story becoming estimable, the spike's finding is "we need another, differently-shaped spike," which is a legitimate finding.

Tech debt and refactoring. Point these normally — they are ordinary work with unusually honest uncertainty — but resist the temptation to smuggle them inside feature estimates ("I'll quietly make the export a 8 and clean up the module while I'm in there"). Smuggled debt work corrupts the scale, hides real investment from prioritization, and dies first under deadline pressure precisely because it is invisible. A visible 5-point refactoring story can be defended in planning; an invisible one cannot.

Meetings, reviews, support rotations. Never point these. They are the reason your focus factor is 0.7 instead of 1.0 — already accounted for in capacity, not scope. Teams that point "attend quarterly planning" have started paying themselves in their own currency.

Estimation smells and their diagnoses

Smell Likely cause Fix
Everything estimates to 3 or 5 Reference stories forgotten; comparison degraded to habit Re-run the calibration session with recent items
Estimates always split high and stay split Stories carry hidden unknowns Slice a timeboxed spike off the story; estimate the rest afterward
Points quietly converted to hours in a spreadsheet Manager needs dates and lacks a forecasting path Give them the velocity-based forecast directly; kill the conversion table
Velocity trending up, delivery flat Inflation (find the target or comparison causing it) Remove the incentive; recalibrate against old references
Estimation sessions run over an hour Design debates hiding inside sizing Two-minute timebox, parking lot, separate design sessions
Carryover items re-counted next sprint Double-counted points pollute the average Count points only in the sprint where the item finishes
A 13 enters the sprint anyway Slicing skipped under deadline pressure Hard rule: 13s must be split before planning, no exceptions

When estimates go stale

Estimates decay. A story pointed in March and pulled into a sprint in September was sized by a team that no longer exists, against a codebase that has moved on — maybe the migration that made it a 8 has since shipped, or the engineer who knew the subsystem has left. Two cheap policies handle this: first, re-glance at the estimate of anything older than about two months when it reaches the top of the backlog — a ten-second "still a 5?" in refinement, not a full re-vote. Second, treat a backlog full of stale estimates as a symptom that the backlog itself is too long; estimating work you will not touch for six months is effort spent manufacturing decay.

The no-estimates counterpoint, taken seriously

The #NoEstimates argument deserves a fair hearing, because for a lot of teams it is simply correct. The claim: if you slice all work to roughly uniform small size — say, everything between half a day and three days — then counting items forecasts as well as summing points, and you can delete the entire estimation apparatus.

The supporting math is real. If item sizes vary but cluster, throughput (items per week) converges over any horizon longer than a couple of weeks, and the forecast "we finish 11±2 items per week, so ~60 items is five to six weeks" performs about as well as its points-based equivalent. Meanwhile the practice you cannot delete — slicing work small — turns out to deliver most of estimation's actual value anyway: the clarifying conversation, the discovery of unknowns, the forced decomposition. Much of what teams attribute to estimating was really the talking.

Where item-counting genuinely works:

  • Flow-based teams with continuous, similar work — the same teams Kanban fits (see Scrum vs Kanban for that boundary).
  • Mature teams that already slice reflexively and whose items are near-uniform.
  • Environments where nobody upstream demands long-range scope-date commitments.

Where it struggles:

  • Roadmap-scale forecasting. "How many items is Q3's initiative?" requires decomposing the whole initiative to small slices first — at which point you have done more analysis than a rough point estimate would have needed. Points handle far-horizon lumpy scope more cheaply.
  • Teams that have not learned slicing. Uniform size is the load-bearing assumption; a backlog that mixes two-hour items with two-week items breaks item-counting completely. And slicing is the harder skill — teams reaching for no-estimates to avoid discipline are removing the guardrail before learning to drive.
  • Low-trust environments. Like it or not, an estimate is sometimes the tax a team pays for autonomy. Removing estimates without first building leadership trust in throughput forecasts gets the practice reinstated from above, with hours this time.

A sensible middle path many teams land on: keep rough points (or just S/M/L) at the epic level for roadmap conversations, and stop pointing individual stories once slicing discipline makes them near-uniform. Estimation effort should live at the altitude where the decisions are.

Choosing for your team

A short decision guide:

  • New team, lumpy work, roadmap commitments upstream: use points, run the calibration session, guard velocity fiercely.
  • Mature team, flow-based work, small uniform slices: count items; spend the reclaimed time on slicing and keeping the backlog small.
  • Any team whose velocity appears in a management deck ranked against other teams: your first problem is not estimation technique, and no scale will fix it. Fix the reporting, then choose.
  • Unsure: run both for a quarter. Point stories as usual and track plain item throughput. If the two forecasts agree — and for teams with decent slicing they usually do — drop the more expensive practice with data in hand.

Next steps

  1. This week: pick your two or three reference stories from recently completed work and write them down where estimation happens.
  2. Next refinement: run the fast poker format — simultaneous reveal, two-minute discussions, outliers talk first, no averaging.
  3. This month: audit where velocity appears. Remove it from anything that is not the team's own planning or forecasting.
  4. This quarter: measure item throughput alongside points and check whether the cheaper forecast would serve. Keep the talking; keep the slicing; keep whichever numbers earn their maintenance cost.

If you want points, sprints, and insights without wiring up another tool, Openbook's Kanban room has story points, sprint tracking, and per-sprint insights built in — free to start at openbook.work, alongside the 16 other room types your team probably also duct-tapes together today.

Keep reading

Project Management14 min read

Sprint Planning That Does Not Waste a Morning

Cut sprint planning from three hours to 45 minutes: prep checklists, capacity math, story slicing, commitment vs forecast, and a minute-by-minute agenda.

June 30, 2026

Put these ideas to work

Openbook gives your team one home for feeds, boards, docs, check-ins and more — free to start.