How uncertainty changes cost
Uncertainty is a list of specific things nobody has checked, and each one has a price attached.
An untested third-party API rests on what the documentation promises. Legacy code with no tests hides behaviour that only surfaces when you change it. Data migration is its own category of trouble, because the condition of the old data is often unknown until someone tries to move it. Unclear acceptance criteria guarantee rework because two parties agreed on words rather than outcomes. And a dependency on another team's release date is a risk you've inherited without pricing.
Each of these does one of two things to a software development cost estimate. It widens the stated range, or it adds contingency to a point figure. Honest suppliers tell you which. The alternative shows up later as a change order, and the extreme version is well documented. In Harvard Business Review’s analysis of 1,471 IT projects, the average cost overrun was 27%, but one in six projects overran by 200% on average.
What estimates must record
Steve McConnell, chief software engineer at Construx, put the purpose plainly in Software Estimation: Demystifying the Black Art: "The primary purpose of software estimation is not to predict a project's outcome [it is] to determine whether a project's targets are realistic enough to allow the project to be controlled to meet them."
A range you can act on records six things:
-
Assumptions the estimate depends on, written as statements you could falsify
-
Exclusions, which cover work explicitly not included
-
Dependencies on your team or your data
-
Contingency, stated as a figure and tied to named risks rather than sprinkled invisibly
-
Confidence, expressed as a range with the reasoning behind its width
-
What would narrow it, which is the specific evidence or decision needed
That last item is the one to press on. Any supplier with a real estimation method can tell you exactly which unknown is costing you the most range, and what it would take to resolve it.
Choose the delivery model
Fixed price works when scope is stable and testable. You get one number and the supplier carries the estimation risk, which they price in. You’re buying certainty, so expect to pay for it.
Time and materials works when requirements will evolve, which describes most product development. You skip the premium and carry the risk yourself, which means you need the governance to actually watch it. The Project Management Institute found 52% of projects experienced scope creep, up from 43% five years earlier, and no contract type prevents that on its own.
Founders have a third option: fix the budget and the date, and keep the scope flexible. Instead of asking what everything will cost, ask what the most valuable thing is that you can ship for this budget by this date. The team orders the scope by value. When an assumption proves wrong, the lowest-priority items drop out, and the budget and launch date stay where they are.
Watch the incentives each model creates. Fixed price rewards defending the specification. Time and materials rewards continuing the engagement. Neither is sinister, but you'll get the behaviour you paid for. A capped arrangement, or fixed-price phases with re-scoping gates between them, usually fits real project scope better than either pure form.
Reduce risk before building
The cheapest way to lower the cost is to replace assumptions with evidence before the main build is committed: a short discovery phase and a clickable prototype tested with actual users.
Birmingham City Council’s Oracle replacement shows the pattern at public-sector scale. A programme originally budgeted at £19 million passed £100 million, with payroll integration and data quality among the issues that drove retesting and rework. The information that would have changed those decisions existed. It just wasn't gathered before the commitment.
For a founder, the same logic works at a smaller scale, and two moves do most of the work.
-
Cut the MVP to one journey. List every feature, then remove everything a first user doesn’t need to complete the one thing the product exists to do. Each feature you defer is also a role, a set of interface states and an integration you don’t have to estimate yet.
-
Buy a fixed-price discovery phase. A short, fixed-fee engagement ends with a prioritised scope, a clickable prototype and a build estimate with its assumptions written down. You pay a known amount to learn what the main build will cost. If the answer is unwelcome, you find out before the larger budget is committed.
Treat discovery as a purchase of certainty with a measurable return. If two weeks of investigation shrinks a quoted range by a quarter, the estimate you get afterwards rests on something solid.
Total software development cost
Launch is the start of the spending. Maintenance is a large share of a system’s lifetime cost, and the longer a system stays in use, the larger that share becomes.
Build your comparison budget across these lines:
-
Initial delivery, which covers the quality and delivery work described earlier
-
Hosting and monitoring, where Flexera's 2026 survey found respondents estimating 29% of IaaS and PaaS spend as wasted
-
Third-party services, which run for as long as the product does: payment processing fees, authentication, email and SMS delivery, and AI API usage billed per call or per token
-
Corrective maintenance and support
-
Compliance and security work that recurs rather than completes
-
Product changes driven by what users do once they have the thing
-
Debt repayment, the cost of shortcuts taken to hit a date. CIOs surveyed by McKinsey estimated technical debt at 20 to 40 percent of their entire technology estate’s value. That is an enterprise figure, but the lesson holds at any scale: budget a repayment line rather than assuming it stays at zero.
Ask every supplier to price those lines for three years, not one. The proposal that looks expensive at build looks cheap by year two, and the reverse happens. Whichever scope you approve, the lifecycle view is what makes two bids genuinely comparable.
Conclusion
Test the estimate. Ask what's assumed and what evidence would shrink the range. Then pick the commercial model that matches how much of that range you can live with.
If you're preparing a brief or comparing proposals right now, bring us the estimate you've received. Our team reviews scope and assumptions with clients before they commit, so the number you approve is one you can defend. Contact our team.