Technical & ProductContent Creator

Technical specification: decide what to build and what to leave out

A technical specification describes the behavior, design and constraints of a system change before anyone builds it, so reviewers can agree or object to specific decisions. It has to state the goals and the non-goals, the interfaces and data involved, and the failure cases, written so each requirement can be tested. Keep the spec short enough to review in one sitting, and link to detail instead of pasting it in.

Section outline

Sections in the order reviewers read them

  1. Problem and goals

    State the problem in two or three sentences, then the measurable goal the change serves. Name the people who feel the problem today.

    90 words
  2. Non-goals

    List what this change will not do, including nearby work that someone may expect to see. A written non-goal keeps the review from turning into a debate about scope.

    70 words
  3. Proposed design

    Describe the chosen approach, the components it touches and the data that moves between them. Include one alternative you rejected and the reason.

    220 words
  4. Interfaces and data

    Define each request, message or field that crosses a boundary: its name, type, owner, and whether it changes an existing contract.

    120 words
  5. Failure cases

    For each way the change can fail, state what the user sees, what the system does and who is alerted.

    120 words
  6. Test and rollout plan

    Describe how each requirement will be verified and how the change reaches users in stages, including the step that reverses it.

    110 words
  7. Open questions

    Record each unresolved decision, the person who owns it and the date it must be settled before build starts.

    60 words

Total: 790 words

Example excerpt

Worked example: a failure cases section

Sample section

Illustrative example. The system, team and dates are fictional. Failure cases Availability check times out. If the inventory service does not answer within two seconds, the booking page shows a checking message and retries once. If the retry also fails, the customer sees a message that availability cannot be confirmed right now, and no booking record is created. The on-call engineer is alerted when more than ten percent of checks time out within five minutes. Duplicate confirmation. A customer who clicks Confirm twice sends two requests with the same booking key. The second request returns the first booking and creates no second record. Support can see both attempts in the audit log. Quote expires. If the price changes between the quote and the confirmation, the booking is held and the customer must accept the new price. The original quote expires after fifteen minutes. Open question: the team has not decided whether a held booking blocks the vehicle for other customers. Owner: the operations lead. Settle it before build starts.

Weak and strong wording

Turn vague requirements into testable ones

Weak: The search should be fast.

Strong: Search results appear within two seconds for 95 percent of queries against the production dataset.

A reviewer can measure this, and an engineer can design against it. Replace the example target with the one your users need, and record where it came from.

Weak: The system handles errors gracefully.

Strong: If the inventory service is unavailable, the booking page shows a retry message and creates no booking record.

The stronger line names the trigger, the visible result and the data outcome, so a tester can check all three.

Weak: Customers will be told about changes.

Strong: A customer with a booking receives an email within one hour of a change to the pickup time.

An implementer needs to know who is told, through which channel and within what window. Mark the one-hour window as a placeholder until the team confirms it.

Weak: We will consider small screens.

Strong: The approval screen works at 360 pixels wide and above, and every button is at least 44 pixels high.

A size is something a tester can check. Keep the reason for the limit in the design section, not in the requirement.

Quality checklist

Review the spec before anyone estimates it

  • Every goal has a non-goal beside it that marks where the work stops.
  • Each requirement could be shown to pass or fail by a named test.
  • Every interface lists its owner and whether it breaks an existing caller.
  • The rejected alternative has a reason a reviewer could reasonably dispute.
  • No requirement depends on a decision that is still listed as open.
  • Each number carries its unit and the source of the target, such as a service level or a customer complaint.
  • The spec shows its version, its date and the people who approved each section.
Format notes

Keep the spec reviewable in one sitting

Put evidence in an appendix

A schema, a full sequence of calls or a long test matrix belongs in an appendix or a linked file. The spec carries the decisions, and the appendix carries the evidence for them.

Mark the status of each section

Put a status word at the top of every section: proposed, agreed or blocked. A reviewer should see at a glance which parts may still change.

Use one word for each thing

If one section says booking and a later one says reservation, reviewers will wonder whether there are two objects. Define each term once in the goals, then reuse it everywhere.

Save a copy at each approval

A single HTML file is a snapshot. Download a copy each time reviewers approve a version, and keep the approved copies together. This page keeps no version history, so your saved copies are the record.

Frequently asked questions

How long should a technical specification be?

Long enough that reviewers can settle every open question without another meeting, and no longer. A small change may fit on a few pages. A change that alters a shared interface or stores new personal data needs more sections, and its reviewers should include the owners of the systems it touches.

Is there a technical specification template I can copy?

The section list in this guide works as one. Copy the headings into your own document, write the non-goals before the design, and delete any section that does not apply rather than leaving it blank.

Should a technical specification include code?

Include the shape of each interface, such as field names, types and error codes, but not the implementation. Code that changes during the build makes the spec wrong the day it ships. Link to the repository for the reference implementation.

Can reviewers comment on a technical specification inside the page?

Share the link and collect their decisions in the open questions section. Attain OS Content Creator does not offer real-time co-editing, so agree on one owner who makes the edits and sends each approved version.

Browse by category

More documents in Technical & Product

How to build it

  1. Follow the eight-step wizard: type, assets and description, images, branding, contact and call to action, Atty Suggestions, blueprint, and generate. Atty generates one HTML page in the background. Review it, then publish and share the page link or download the HTML file.

Attain OS BETA