Skip to main content

Blog entry by Sheldon Forsythe

Start with the reason this software should exist, not a feature list. Which people will use it day to day, how often, and how is the job done today? A vendor who understands the goal often proposes an alternative that costs less; someone handed only the requirements as given prices your assumptions along with the work.

Define what is included as concrete flows: who does what, and what happens next. Just as important, state explicitly what the first release deliberately excludes. A written out-of-scope list saves more argument during acceptance than the graphql vs rest of the brief combined. Mark too which decisions are settled and which are still open — honest teams price those differently, and concealing the open questions helps nobody.

List the constraints. These include existing systems the software has to talk to, the data you have and where it lives, security and compliance rules, traffic expectations, which is better monolith or microservices devices matter and infrastructure that is already decided. Where a date is genuinely fixed, explain what drives it: an experienced team can often cut the right scope to hit it, provided they hear about it early.

Say what completion means feature by feature. Testable acceptance criteria need not use any formal notation: a short paragraph stating the expected behaviour is enough. This single habit compresses the review at the end dramatically and eliminates the most common source of disputes.

To close, ask for a specific format. Ask for a breakdown by feature saas or custom development module, the assumptions behind each number, whatever the team considers risky and a range rather than a single figure. Treat a wide range as a signal about the brief: hire dedicated angular developers it normally identifies the part of the brief that needs work. At that point tighten that section and request a revised number — the revised figure tends to be the one worth planning around.