The difference between a software project that lands on budget and one that spirals is almost always decided before a single line of code is written. Scoping is where projects are won or lost.

And yet, most businesses skip it or rush through it because they're eager to start building.

What good scoping looks like

Good scope isn't a 50-page requirements document that nobody reads. It's a clear, shared understanding of what you're building, why, and what "done" means.

For every feature, you need:

  • What it does: In one or two sentences, the actual behaviour.
  • Who uses it: Which user or role interacts with this feature?
  • What data it needs: Where does the information come from? What systems are involved?
  • What success looks like: How do you know it's working correctly?
  • What's out of scope: Equally important — what does this feature not do?

The discovery workshop

The most effective scoping method I've found is a structured half-day workshop. Get the project sponsor, the key users, and the development lead in a room (or a call) for four hours.

  1. Hour 1: Business context. What problem are we solving? What's the current process? What's the cost of doing nothing?
  2. Hour 2: User stories. Walk through each user type and what they need to do. Whiteboard the workflows.
  3. Hour 3: System context. What existing systems does this connect to? What data needs to flow where? What are the constraints?
  4. Hour 4: Prioritisation. What's essential for launch? What's nice-to-have? What can wait for phase 2?

Four hours of structured thinking saves weeks of back-and-forth during development.

Writing acceptance criteria

Every feature needs acceptance criteria — the specific conditions that define "done." Without them, you're relying on everyone having the same mental picture of the feature, which they never do.

Good acceptance criteria are specific and testable:

  • ❌ "The dashboard should be fast" — fast is subjective
  • ✅ "The dashboard loads in under 2 seconds with up to 10,000 records"
  • ❌ "Users should be able to search" — search for what? How?
  • ✅ "Users can search customers by name, email, or phone number. Results update as they type."

Dealing with unknowns

Some things can't be fully scoped upfront — complex integrations, data migration, performance under real-world load. That's fine. The key is to acknowledge the unknowns explicitly rather than pretending they don't exist.

For each unknown:

  • Flag it in the scope document
  • Estimate a range rather than a fixed number
  • Schedule a spike (a short investigation) to reduce the uncertainty
  • Include it in the contingency budget

Honest scoping isn't about predicting everything. It's about being clear about what you know, what you don't, and where the risks are.

Kasun Wijayamanna Founder & Lead Developer Postgraduate Researcher (AI & RAG), Curtin University - Western Australia