← // all posts
field notes // process

How I Scope a Project Before Writing Code

2026-06-26 // Nicholas Rushing // 8 min read

The most expensive line of code is the one written before anyone agreed on what was being built. I've watched projects — mine and other people's — go sideways not because the engineering was hard, but because "build me a website" meant five genuinely different things to the five people in the room. So before I open an editor, I scope. This is what that actually involves, and why it ends up protecting the client at least as much as it protects me.

This is also the honest answer to the question I get asked most: "how much will it cost?" The truthful response is that price tracks scope and complexity, and you can't price what you haven't defined. A brochure site and a multi-tenant SaaS platform are both "a website." Quoting either one from a one-line brief is guessing, and guesses get paid for later — usually by the client, in the form of a rushed, corner-cut build.

Step one: the discovery questions

Before anything else, I want to understand the shape of the problem, not the solution someone already has in mind. The questions that do the most work early are:

Step two: drawing the scope boundary

Scope is defined as much by what's out as what's in. The most valuable sentence in any plan I write is usually the one that starts with "this does not include." An unstated assumption is a future argument waiting to happen, so I make the boundary explicit and put it in writing:

IN SCOPE
  - 5 pages, responsive, from supplied content
  - contact form -> email, with spam protection
  - basic on-page SEO + sitemap

OUT OF SCOPE (separate phase)
  - content writing / copywriting
  - e-commerce / payments
  - ongoing maintenance retainer

None of this is about saying no. It's about making sure that when the client says "and obviously it'll take payments," we discover that now — while it's a pleasant conversation about a phase two — instead of at launch, when it's a crisis.

A clear scope boundary isn't a wall between me and the client. It's the thing that lets us both point at the same plan and agree we're building the same project.

Step three: writing the assumptions down

Every estimate rests on assumptions, and the difference between a professional and an amateur is whether those assumptions are written down or left implicit. I state mine plainly — content will be supplied by a certain date, third-party services have available APIs, the design is a single agreed direction rather than open-ended exploration. When an assumption turns out to be wrong, we have a shared document to point at and a calm conversation about adjusting, rather than a dispute about what was "obviously" included.

Why fixed quotes from a one-line brief fail

There's a strong temptation, especially in a competitive market, to fire back a confident number the moment someone asks. It feels responsive. It's also how projects get quietly sabotaged before they begin. A number attached to an undefined scope can only end one of two ways:

Neither serves anyone. Pricing against real scope means the number reflects the actual work, the client knows what they're getting, and nobody's incentive is misaligned at 11pm before launch.

What the client gets out of it

From the outside, scoping can look like delay — why isn't the developer just building? But the discovery conversation is the cheapest, fastest place to change your mind. Rethinking a feature in a planning doc costs a sentence. Rethinking it after it's built costs a rebuild. The hour spent defining the project up front is the highest-leverage hour in the whole engagement, and it's the reason the build phase tends to be calm instead of chaotic.

So when I don't quote a number off a single sentence, it isn't evasiveness — it's the first sign that the project is being taken seriously. The plan comes first. The price follows the plan. And the code, when it finally gets written, is building something everyone already agreed on.

// let's scope yours

Bring the idea, even a rough one. The first conversation is about turning it into a plan you can actually price and build. No commitment to start.

transmit_message