Blog Banner

Methods to estimate software, a primer

Estimation is probably the most contentious, vital aspect of a software project with as many approaches as there are vendors and very few trusted resources on the subject.

For your clients, an estimate is the first bridge between their internalized need and external reality. Most hope for a detailed estimate, specific tasks and fixed costs: Solving your problem will cost $X and be ready by Y. Their trust will plummet and their anxiety will skyrocket as a function of ambiguity, regardless of project size. Worse, estimates cause so much long-term heartache because they’re the very first time an official expectation gets set.

Unfortunately, most vendors can’t or won’t estimate to a high degree of specificity, preferring the mechanisms outlined below. Sometimes this is warranted, especially when a project simply can’t be conceptualized to the necessary fidelity. More often this reluctance is by design, preferring the minimized accountability of defending ambiguity rather than owning and defining uncertainty.

Estimates generally come in two flavors:

  1. Detailed
  2. Ballpark

Let’s unpack the methods we’ve seen (and used) to estimate a project both ways, including the identifiers, uncertainty, merits, and risks of each.

Detailed software estimates

To understand the relative value of other methods, let’s define a detailed estimate, which is the most welcome but hardest to deliver well. Generally, a detailed estimate:

  • Cites hours and dollars to complete a specific set of tasks
  • May include ranges of time (dollars) to complete certain tasks, depending on uncertainty
  • Groups discipline specific items into technical and non-technical buckets
  • Are ready to be staffed and begin quickly

Critically, detailed estimates help clients understand exactly what is needed to complete a project. Most detailed estimates are obvious:

Identifiers

Specific task- or deliverable-based line items, discipline-specific hour or dollar totals.

Uncertainty

Tied to the expertise of the vendor and clarity of the request. A good detailed estimate will call out areas of uncertainty.

Merits

Uncertainty can be localized to line items rather than spread across a whole project, you get to see that vendor’s thinking and understanding in detail.

Risks

Can become a detailed fiction, overdefining and becoming obsolete during the project despite then usually being part of your contract.

Ballpark estimates

Anything that’s not a detailed estimate can be classified as a ballpark estimate. These take myriad forms.

Budget-based ballpark estimates

Exactly what it seems: a project estimate that fits inside a provided budget amount. This may seem disingenuous, more like an acknowledgement than an estimate.

Budget-based ballparks are often an expression of confidence. Often, a quick “yes” followed by a budget-filling estimate likely means your budget is too high—vendors almost always pad hours to cover uncertainty, internal process slippage, or losses incurred against someone else’s project.

Whether your dollars exactly match your need, or you suspect some vendor padding, additional interrogation will uncover the facts. Requesting a different form of estimate can be warranted, but your vendor may require some other proof of “seriousness”. The markers of a budget-based ballpark:

Identifiers

The estimate miraculously matches the amount of money you have. “Based on $X or Y (date), we will accomplish \__“

Uncertainty

Depends. Highly predictable tech such as WordPress can be budgeted against. Custom development usually can’t.

Merits

You get an estimate that matches your budget.

Risks

The proposed solution only fits because that’s what you can pay.

Pay attention.

Trust your gut. If what you’re hearing seems “hand wavy” or a miraculous outliner, it probably is.

Capacity-based estimates

This model describes fitting tasks within a volume of labor rather than adding up hours to complete. Colloquially, this is a “butts in seats times hours” estimate. Capacity-based estimation has been popular in software for over a decade because it’s:

  • Easily done quickly with minimal engineering input
  • Predictable to staff and flexible to operate
  • Accommodates changes without much effort
  • Forces client readiness and constant attention
  • Easy to grow

If we’re honest, capacity estimation is more about vendor staffing projection than true software delivery. This method is a fantastic starting point to see if a project is even possible, especially when the delivery date is the most critical factor. Conversely, it’s the worst possible model when budget is paramount. The highs and lows:

Identifiers

Aside from a declaration of “capacity”, look for things like “we sell a team”, burn rate, sprints, or agile.

Uncertainty

Highest. Capacity estimates should be renamed “fuck around and find out.”

Merits

- You have a group of people dedicating time to your project.- Miscellaneous smaller things that got missed in a proposal can be slotted in easily

Risks

- May masquerade as a phased or detailed estimate with line items and everything. If it has details but a wide range, it’s probably capacity-based.- Transfers all responsibility for progress, action, and results fully on the client.- Does not easily support pauses in work.

Phased ballpark estimates

This style of estimate is popular for larger projects, though we’re seeing it declared for smaller and smaller commitments. The premise is that initial phases of a project can be estimated specifically but later work dependent on those early phases is unknown and can’t be scoped.

Usually, those early phases take the form of discovery or strategy workshops. Later phase costs and timing are offered as increasingly broad ranges, if at all. Essentially, a vendor is getting paid to learn and estimate.

Estimates structured like this might have merit if work in later phases is truly unknown and unexpectable, sitting behind a significant decision fork that would fundamentally change the nature of the work. We struggle to find a genuine example of this, but they surely exist.

Ultimately, phases are more about expedience than confidence. In our experience, a simple application of assumptions will allow for later-phase estimation with startling accuracy. If you’re faced with one of these, offer some clarifying assumptions, then request further detail.

Identifiers

Pretty clear when this is happening—look for paid learning.

Uncertainty

Projected high, though it may not be. Vendors often use phased estimates to avoid up-front commitment to specific outcomes or budgets

Merits

Done correctly, this method can legitimately reduce the overall cost of a project through rigorous controls and thoughtful architecture.

Risks

Spiraling costs, under-delivered, strategic drift of objectives-to-outcomes.

“Can we build this in …?”

Although this method rarely makes it to a client explicitly, the behavior is quite common and can result in any of the other forms of estimate outlined here.

Broadly, a team is asked “can a project be built within a specific budget / time / technology? Why or why not?” The answers quickly generate follow-on questions, highlight possible constraining factors, and uncover areas of uncertainty.

This method is distinct from a capacity estimate in that many variables are applied throughout the course of the discussion to challenge biases and reshape the conversation. Competent estimators will withhold actual budget and timeline details from their teams to uncover truth, uncertainty, and risks before providing biasing constraints.

An excellent starting point for estimation, balancing vendor concerns and client needs in a way that quickly generates follow-on discussions and assumptions.

Identifiers

Vendor includes hypotheticals as part of a proposal.

Uncertainty

Low, assuming the aforementioned hypotheticals

Merits

Can be done quickly:- gets to right answers early- uncovers areas of concerns- pressure tests project assumptions

Risks

- Lowest client risk of all the ballparks.- Sometimes hard to know what you’re agreeing to with technical hypotheticals.

Comparison-based ballpark estimates

If you’ve been in the industry long enough as an engineer or vendor, you start to see current estimates in the context of past work. Comparison estimates often start this way. The bad ones never advance beyond “yeah, this looks like that other project. $X.”

There are three core problems with comparisons:

  1. Bias. They start from a point of extreme, often unarticulated bias. This is especially true when the reference projects didn’t go well for the implementation team, but the estimation team doesn’t remember (or know) why.
  2. Uniformity. They promote sameness prior to investigation. More egregiously, they assume the clients, markets, and desired outcomes are the same because the technology need appears similar.
  3. False certainty. They deliver a false sense of confidence. You know what happens when you assume!

From our experience, this method is only valuable as a check against another form of estimate, done independently. Prior work should be referenced with extreme prejudice.

Identifiers

Cited comparisons or estimates delivered with confidence and no supporting detail.

Uncertainty

When the comparison is right, low. When it’s off, staggeringly high.

Merits

Likely informed by experience rather than speculation.

Risks

Can bias a project towards sameness and underestimate the differences

Payer tolerance

As a client, you’ll never see this method but will absolutely receive the output, usually as a budget or phased estimate. It goes something like this:

  • We don’t know/assume their budget is (this).
  • What’s the highest/lowest it will take to deliver this work?
  • What’s the lowest we can cite with confidence? This is usually much more than the lowest cost to actually deliver.
  • What’s the highest number we can get away with?

Reasonably, this is a good exercise in understanding business constraints—is it worth this client doing this work at all? Cynically, when done in isolation, tolerance-based estimation ignores the technical problem entirely in an attempt to maximize revenue.

Identifiers

Proposal stretches your budget but is doable, though it’s low on details.

Uncertainty

Hard to say. This is the least accurate method by itself as it ignores the reality of the technical problem at hand, focusing on what its resolution is worth.

Merits

None for the client.

Risks

You’ll feel pressure to accept without interrogation. Trust your gut.

A note on paying for estimates

It’s not uncommon to be asked to pay for an estimate. These are usually framed as “discovery”. We have mixed feelings:

  • They theoretically tie you to a vendor, but give you a starting point if you don’t have one.
  • They signify a lack of understanding or confidence, both of which can generally be overcome with a little more conversation and slower action.
  • They’re not always more informative than some of other methods outlined above that require higher up-front effort.

More often than not, paid estimates done by the implementer (as opposed to a third party) become self-fulfilling prophecies. Projects end up close to an estimated value simply because once agreed, everyone involved focuses on getting to that number hard enough to make it essentially true. It’s on you as the buyer to ensure that the prophecy being sold to you is one you want to come true.

The hard truth about software estimates

There’s a simple truth about estimation that gets lost in almost every method.

> There is a correct and specific answer to “how long/how much will it take to do this project”.

That answer will be knowable at the end of a project. Everything an estimator does should be in service of discerning that number as early as possible. Every method outlined above is an approach to this.

Finally, the style of estimate provided says a lot about a vendor. Good vendors will deliver a mix, starting with some form of ballpark and working towards a detailed estimate before agreeing to work with you.

The excellent vendors will give you:

  1. A real number. “We believe we can do this work for $X dollars in Y time.”
  2. Things that will impact their number. “We assume A and B, if those change, we expect the estimate to change by Z.”
  3. Confidence. “Their estimate will not only make sense to them, they’ll frame it in a way that makes sense to you.”

If your vendor takes their time to get it right, software estimates stop being an onerous, anxiety-inducing process. Instead, they trigger excitement to begin and a willingness to say “go!”


Estimation isn’t hard, but it is a commitment that’s proven hard to make as a vendor and equally hard to consume as a client. If you find yourself in this particular fog, Next Mile can help. We’ve created (and consumed) more estimates than we can count.

Find additional insight at our blog or contact us for a monthly summary of new content.

If this speaks to a problem you’re facing, we'd love to see if we can help you further.