Skip to main content

Blog entry by Orville Lafountain

Open with the reason this software should exist, not a list of screens. What kind of user will use the system, how to choose a software development contract often, and what does the process look like without it? An experienced team who understands the goal will suggest a simpler way to reach it consulting services; someone handed only the requirements as given prices exactly what you asked for.

Describe the scope as concrete flows: who does what, and what happens next. Every bit as useful, list what the first release deliberately excludes. An explicit list of exclusions prevents more friction during acceptance than the rest of the brief combined. Also mark which decisions are settled and which are still open — honest teams price those differently, and hiding it helps no one.

Write down the hard constraints. These include the platforms and services involved, existing databases and their quality, regulatory obligations, user volumes, target platforms and any technology you are committed to. If there is a hard date, say what depends on it: an experienced team is usually able to rearrange the plan to protect it, but only if they know it exists.

Say what done means for the important items. Acceptance criteria do not need formal language: a short list setting out what a user should be able to do is sufficient. This single habit compresses acceptance testing by a surprising margin and eliminates most late-stage disagreement.

Finally, say what you expect back. Request an itemised estimate, the assumptions used, the main risks and a low number and a high number. Read a wide range as a signal about the brief: it usually points to the part of the brief that needs work. From there tighten that section and ask again — the second estimate tends to be far closer to reality.