Writing

22 April 2026

Why scope before code

Most software projects fail not because the developers couldn't build it, but because what got built wasn't what the business needed. The fix is unglamorous and old: write the scope down before anyone opens an editor.

If I had to name the single biggest failure mode in software-for-business, it isn’t a technical one. It’s that the wrong thing got built.

The wrong thing got built because the right thing was never written down.

What “scope” actually means

When I say scope, I don’t mean a paragraph in a quote document. I mean a written artefact, before any code exists, that answers — in plain language — these questions:

  • What does success look like for this engagement?
  • What features are in, and what features aren’t?
  • What’s the acceptance criteria for each feature? (Not “user can log in.” More like “user can log in via email and password, sessions persist for 14 days, password reset goes through email, lockout after 5 failed attempts.”)
  • What integrations does this depend on, and what happens if those integrations are unavailable?
  • What’s explicitly out of scope?
  • What does the timeline look like if everything goes well, and what does it look like if specific things go wrong?

That’s a document. It’s usually two to ten pages. It takes a day or two to write. And it changes everything that comes after.

Why this is so unpopular

Two reasons.

It’s not exciting. Nobody hires a software developer to write a document. Clients want to see code; developers want to write code. The pressure on both sides is to skip this step and get to the “real work.”

It surfaces disagreement early. Half the conversations a written scope forces are conversations the team would rather avoid. “Wait, you thought we were doing X — we were planning to do Y.” “We can’t actually integrate with that system the way you described, here’s what the constraint is.” “If we’re doing all of this, the timeline is twice what we quoted.”

The natural reaction to those conversations is to defer them. “We’ll figure it out as we build.” Which is fine — except the figuring-out happens in code, the code costs four times as much to change as a document does, and by the time you’re far enough along to see the problem, half the work has been done in the wrong direction.

What scope-first actually buys

A few specific things, all unglamorous:

  • Builds run on time more often. Not because the team is faster, but because they’re not rebuilding chunks of the system midway through.
  • Reviews are about whether the right thing got built, not what was meant. No more “I thought you said…” disputes after delivery.
  • The team learns sooner that something’s wrong. Disagreements that would have surfaced in week six surface in day three. They cost almost nothing to fix that early.
  • Handoffs work. A new developer can pick up a project mid-stream because there’s a document explaining what’s being built and why.

The “not for” piece

Scope discipline isn’t a fit for every project. Two cases where I’d skip it:

  • Genuine prototypes — code thrown away after a single demo, where the question is “does this idea even hold up?” Ship a sketch in a day, learn, throw it away, write the real scope when you know what you’re actually building.
  • Tiny changes — fixing a bug, tweaking a copy block, swapping an asset. Don’t write a scope document to change a button colour.

For everything in between — anything that lasts more than a sprint, anything more than one developer touches, anything the business is going to depend on — written scope earns its keep within a week.

What this costs

A day or two of someone’s time, before code starts. That’s it.

The whole “we don’t have time to write scope” argument is one of those things that sounds reasonable until you compare it against the time spent rebuilding things that got built wrong. Once you’ve watched a project ship six weeks late because three features had to be redone, the question stops being “can we afford to write scope” and becomes “can we afford not to.”

This is the same answer to the question of why most software problems aren’t a developer problem. They’re a structure problem. Scope is the cheapest, oldest piece of structure you can put in front of a project.