
Scoping a custom software project so you don't blow the timeline by 3x
A pragmatic scoping process for custom software: the discovery artefacts that shrink estimate uncertainty, risk-weighted ranges instead of false single numbers, scope-control levers, and contract structures that keep both sides honest. With the templates we use on engagements.
- Author
- By DevLume
- Published
- Published 5 August 2026
Key takeaways
- The "3x" isn't hyperbole. Research on 1,471 IT projects found one in six becomes a "black swan" with a 200% average cost overrun and roughly 70% schedule overrun (Flyvbjerg & Budzier, HBR 2011).
- Estimating before discovery guarantees the miss. Early "concept" estimates range from 0.25x to 4x of the real number; that cone only narrows after requirements and design are done (Construx / McConnell).
- Scope creep is the norm, not the exception. 52% of organizations reported projects hit by scope creep, up from 43% five years earlier (PMI, 2018).
- Give ranges, not numbers. A single-figure estimate on a vague scope is a promise you're statistically likely to break; a risk-weighted range with an outside-view check is honest and defensible.
TL;DR
Projects blow their timelines because teams estimate before they understand, commit to a single number instead of a range, and let scope grow silently. Fix all three. Run a short discovery to produce concrete artefacts before anyone estimates, because that's what actually shrinks uncertainty. Quote a risk-weighted range, sanity-checked against how similar projects really went, not how you hope this one will go. Then control scope deliberately with prioritization and a contract structure that shares risk instead of pretending it away. None of this is complicated. It's just usually skipped in the rush to a start date.
Why do custom software projects blow their timelines?
Because humans systematically underestimate effort, and software hides its hardest parts until you're in them. Psychologists Kahneman and Tversky named the first problem the planning fallacy: we predict best-case timelines even when we know better and have evidence to the contrary (planning fallacy). The data on real projects bears out the consequences. A study of 1,471 IT projects found that while the average cost overrun was 27%, one in six projects was a "black swan" that blew its budget by 200% and its schedule by about 70% (Flyvbjerg & Budzier, HBR 2011). A separate McKinsey and Oxford analysis of large IT projects found they ran 45% over budget and 7% over schedule while delivering 56% less value than predicted (McKinsey, 2012).
Notice the shape of that risk. The average is bad; the tail is catastrophic. Scoping isn't about nailing the average, it's about not landing in the one-in-six tail. And the tail is fed by the second-most-common problem: scope creep, which 52% of organizations reported experiencing, up from 43% five years earlier (PMI, 2018). You don't blow a timeline in one dramatic moment. You blow it one "small addition" at a time.
What should discovery produce before anyone estimates?
Concrete artefacts, because uncertainty is highest before you have them and estimating into that fog is how the 3x happens. The cone of uncertainty, a concept from Barry Boehm popularized by Steve McConnell, quantifies this: at the initial concept stage, estimates realistically range from 0.25x to 4x of the eventual outcome, a 16-fold spread, and that band only tightens to roughly plus-or-minus 25% once requirements and design are locked (Construx). The single highest-leverage thing you can do for a timeline is move the estimate to the right, past discovery, before you commit to it.
A discovery doesn't need to be long, but it needs to produce specific outputs:
- A problem statement everyone agrees on, in plain language, with the metric that defines success.
- Key user journeys, end to end, so hidden steps surface early.
- A rough data model and integration list — every external system you'll touch. Integrations are where "simple" projects go to die.
- Non-functional requirements: performance, security, compliance, expected load. These quietly double effort when discovered late.
- An explicit out-of-scope list. What you exclude is as important as what you include, and writing it down prevents the "I assumed that was included" fight later.
If a vendor gives you a fixed timeline without doing this, they're guessing, and you'll pay for the guess.
How do you produce a risk-weighted estimate?
Quote a range with an explicit confidence level, and check it against how similar projects actually turned out, not how you feel this one will go. A single number is a false promise; the honest unit of an estimate is a range. Give three points: a realistic best case, an expected case, and a "if the known risks bite" case. Then weight the commitment toward the pessimistic end, because the tail risk, not the average, is what hurts.
The most effective correction for the planning fallacy is what Bent Flyvbjerg calls reference-class forecasting: take the "outside view" by looking at a class of similar past projects and their actual outcomes, rather than building a bottom-up estimate that assumes everything goes right (Flyvbjerg, 2006). In practice: ask your vendor, or yourself, "the last five projects like this, how long did they really take versus the first estimate?" That ratio is more predictive than any task breakdown. If similar work historically ran 60% over the first guess, your defensible estimate is the bottom-up number times 1.6, whether or not that feels pessimistic.
Here's the method as a worked example. Say the bottom-up task breakdown adds up to 12 weeks. Instead of quoting "12 weeks," do three things. First, set the three points: best case 11 weeks (everything goes right), expected 14 weeks (normal friction), risk case 20 weeks (the two riskiest integrations bite). Second, apply the outside view: if your last comparable builds ran about 1.5x their first estimate, that's 18 weeks, which sits between your expected and risk cases and tells you the optimism is showing. Third, commit to a range, "14 to 20 weeks, most likely 16," and name the specific risks that would push it to 20. That last part matters: a range with named risks invites the client to help you retire them, while a single date just invites disappointment. The number you'd have quoted, 12 weeks, isn't even in the honest range.
Whatever you do, don't bury the buffer. Padding the "12 weeks" quietly up to 16 and presenting it as a point estimate teaches everyone the wrong lesson and gets competed away by the next vendor who quotes 12. Show the range and the reasoning. Buyers who've been burned before recognize honesty, and the ones who haven't are about to learn why it matters.
Which scope should you cut when, not if, you run late?
Decide the cut order during scoping, while everyone is calm, not mid-project while everyone is panicking. Time and cost are the constraints you least want to move; scope is the lever you should plan to pull. So prioritize ruthlessly up front. A simple MoSCoW split, Must-have, Should-have, Could-have, Won't-have-this-time, turns "we're behind" into "we drop the Could-haves" instead of a crisis negotiation.
The discipline is to fix the date and flex the scope, rather than the reverse. Build the Must-haves first so that if you run out of runway, what you cut is genuinely optional, not load-bearing. This is also your defense against scope creep: every new request goes into the priority list and displaces something, rather than being silently added on top. "Yes, and what should it replace?" is the most useful sentence in project management. Making that trade explicit is what keeps the 52% scope-creep statistic from being your project.
Which contract structure keeps both sides honest?
Choose the structure that matches how much you actually know, and never fixed-price a vague scope. There are three common shapes, and each allocates the risk of the unknown differently (NetSuite):
| Structure | Who carries overrun risk | Best when | The trap |
|---|---|---|---|
| Fixed-price | The vendor (so they add a 15–30%+ risk buffer, or cut corners) | Scope is genuinely well-defined and stable | Fixed price on fuzzy scope means you pay a buffer and fight every change request |
| Time & materials | The client (you pay actuals) | Scope is exploratory and you'll steer actively | Needs real oversight, or costs drift |
| Capped T&M (not-to-exceed) | Shared: T&M flexibility under a hard ceiling | Most custom projects, especially post-discovery | Requires an agreed change process for the cap |
The honest sequence for most custom software is a small, separately-priced discovery phase first, then a capped time-and-materials build once the scope is real. That structure aligns incentives: the vendor isn't gambling on a number they invented before understanding the work, and you aren't signing a fixed price that's either padded with risk or destined for a change-order battle. If a vendor pushes a big fixed price before any discovery, they've either padded it heavily or they're about to learn something expensive on your dime.
A scoping process you can actually run
Here's the sequence we use, compressed to something a busy team can follow.
- Discovery phase (1–3 weeks), priced separately. Produce the artefacts above: problem statement, journeys, data model, integration list, non-functionals, explicit out-of-scope.
- Prioritize (MoSCoW). Sort every feature into Must / Should / Could / Won't-now. Get the buyer to own this list.
- Estimate as a range, outside-view checked. Three-point estimate, then multiply by the historical overrun ratio of similar projects. Present a range and a confidence level, never a single date.
- Choose a matching contract. Capped T&M after discovery for most builds; fixed-price only where scope is truly locked.
- Agree a change protocol. New requests are ranked into the priority list and displace lower items; nothing is added silently.
- Re-forecast at milestones. As the cone narrows, update the range. An estimate that never changes is an estimate nobody is checking.
What we got wrong: Early on we quoted a client a single, confident delivery date after a two-hour kickoff, no real discovery, because they wanted certainty and we wanted the work. Two integrations we'd waved off as "standard" turned out to need custom auth and a data reconciliation layer nobody had mentioned. We hit the one-in-six tail: the build ran well over double the original timeline, and the relationship never fully recovered. Now we won't give a build number without a discovery phase, and we quote ranges with the reasoning shown. We lose a few deals to vendors who'll say a confident number. We keep the clients whose projects actually land.
Frequently asked questions
How long should discovery take for a custom software project?
Long enough to produce the artefacts, usually one to three weeks for a mid-sized project. The goal isn't a giant specification; it's enough clarity to move your estimate out of the widest part of the cone of uncertainty, where estimates range from 0.25x to 4x (Construx). A short, focused discovery that surfaces the integrations and non-functionals is worth far more than weeks of speculative documentation.
Is fixed-price or time-and-materials better for custom software?
It depends on how well the scope is known, and for most custom work a capped time-and-materials contract after a discovery phase fits best. Fixed-price shifts overrun risk to the vendor, who prices a 15–30% buffer in or cuts corners; pure T&M shifts it to you and needs oversight (NetSuite). A not-to-exceed cap gives flexibility with a ceiling.
Why shouldn't we just ask for one delivery date?
Because a single date on incomplete information is statistically a promise to break. With one in six IT projects overrunning by around 200% (Flyvbjerg & Budzier, 2011), a responsible estimate is a range with a confidence level. A vendor who gives you a firm single date before discovery is managing your feelings, not your risk.
How do we stop scope creep without being rigid?
Make every addition a trade, not an add-on. New requests enter the prioritized backlog and displace something lower, rather than piling onto the timeline. This keeps you flexible about what you build while protecting when it ships, and it's the practical antidote to the 52% scope-creep rate PMI reported (PMI, 2018).
Scope is where timelines are won or lost
The projects that land on time aren't run by luckier teams; they're scoped by more honest ones. Do discovery before you estimate, so you're not guessing in the widest part of the cone. Quote a range and check it against how real projects went, not how you hope this one will. Prioritize so you know what to cut before you have to. And pick a contract that shares the risk of the unknown instead of pretending it away. That's the whole method, and it's the difference between the 27% average and the one-in-six tail.
If you're about to commission custom software and want the scope pressure-tested before you commit a budget and a date, that's exactly the kind of discovery work we do with clients, and it's a lot cheaper than the tail.

