Contents

Chapter 1

How to Write Technical Specs That People Actually Read

A practical guide for PMs and engineering leads who need to write specs that prevent wasted engineering effort, align stakeholders, and survive contact with reality.


Why Specs Fail

Most technical specs fail for one of these reasons:

Failure ModeWhat It Looks LikeRoot Cause
Too long30-page document nobody reads past page 3Author included everything instead of the right things
Too vague"The system should be scalable" with no specificsAuthor didn't think through the details
Too detailedSpecifies implementation down to variable namesAuthor confused "spec" with "code in English"
Too lateWritten after implementation started to "document" what was builtTeam skipped the thinking phase
No audienceWritten for the author, not the readerAuthor didn't consider who needs to use this document

The Spec Spectrum

Different decisions need different levels of documentation:

Change SizeDocument TypeLengthReview Process
Rename a variableNo document needed—Code review
Add a field to an APIBrief note in the PR description1 paragraphCode review
New feature (1-2 sprints)Technical design doc (lightweight)2-4 pages1-2 reviewers, async
New service or major refactorFull technical design doc5-10 pagesDesign review meeting
Cross-team architectural changeRFC5-15 pagesFormal review with deadline
Irreversible decisionADR1-2 pagesDecision meeting

The most common mistake is using the wrong level. A 15-page RFC for a 2-day feature wastes everyone's time. A 2-sentence Slack message for a new service wastes engineering time when it's built wrong.


Writing Process

Step 1: Start with the Problem (15 minutes)

Before opening a template, answer these questions in plain language:

1. What's broken or missing?

2. Who cares? (users, internal teams, the business)

3. What happens if we do nothing?

4. What does success look like?

If you can't answer these clearly, you're not ready to write a spec.

Step 2: Sketch the Solution (30 minutes)

Draw the architecture on a whiteboard or in a text file. Don't worry about formatting. Focus on:

  • What are the main components?
  • How do they talk to each other?
  • Where does data live?
  • What's the happy path?
  • What can go wrong?

Step 3: Identify Your Audience (5 minutes)

ReaderWhat They NeedHow Deep
PM / ProductProblem definition, user impact, timelineSummary level
Engineering leadArchitecture, tradeoffs, risksFull detail
Individual contributorAPI contracts, data model, implementation guidanceSection-specific detail
SecurityAuth, data handling, threat surfaceSecurity section
Ops / SREMonitoring, deployment, failure modesOperability section

Step 4: Write the Spec (1-3 hours)

Use a template from templates/. Fill in the sections that matter, skip the ones that don't. Every section you include should earn its place.

Step 5: Get Feedback (1-3 days)

1. Share the draft with 2-3 reviewers

2. Give them a deadline (3 business days is reasonable)

3. Ask them to focus on: "Is this the right approach?" not "Are there typos?"

4. Use the design review checklist from templates/design-review-checklist.md


Writing Tips

Be Specific

Vague (useless)Specific (useful)
"The system should be fast""API responses should return within 200ms at p95 under 1,000 req/sec"
"We'll handle errors gracefully""If the payment service is unavailable, we queue the request and retry 3 times with exponential backoff (1s, 4s, 16s)"
"The data model is flexible""User profiles use JSONB for custom attributes, with a GIN index for key-path queries"

Address Risks Honestly

Don't hide risks to make the spec look cleaner. A spec that says "there are no significant risks" is either dishonest or hasn't been thought through.

Bad: "This approach has minimal risk."

Good: "The main risk is data migration. If the migration fails mid-way, we'll have inconsistent data between the old and new tables. Mitigation: we'll run the migration behind a feature flag, writing to both tables during the transition period, and validate consistency before cutting over."

Include Diagrams

A single architecture diagram replaces 500 words of description. ASCII diagrams in markdown are perfectly acceptable:

Client → API Gateway → Service A → Database
                    ↘ Service B → Cache → Database

Write for the Future Reader

In 6 months, someone (maybe you) will read this spec to understand why a decision was made. Include the context that won't be obvious later:

  • Why did you choose Option A over Option B?
  • What constraints existed at the time? (team size, timeline, existing infrastructure)
  • What would you do differently if you had more time/resources?

Spec Review Best Practices

As a Reviewer

1. Read the whole thing first before commenting. Your first concern might be addressed later in the document.

2. Focus on the approach, not the details. "Is this the right architecture?" matters more than "Should this be a POST or PUT?"

3. Distinguish blocking concerns from suggestions. Use labels: [blocking], [suggestion], [question].

4. Propose alternatives, don't just criticize. "This won't scale because X. Consider Y instead."

5. Timebox your review. If you've spent 2 hours reviewing a 5-page spec, you're over-thinking it.

As an Author

1. Don't take feedback personally. The spec is a tool, not your identity.

2. Respond to every piece of feedback. Even if the answer is "considered and declined because X."

3. Update the spec based on feedback. Don't leave the final version in the comments.

4. Know when to stop. A spec that's 90% right and shared beats a spec that's 100% right and stuck in draft.


ADR Best Practices

Architecture Decision Records deserve special attention because they're the only document that explains *why* your system is the way it is.

When to Write an ADR

Write an ADR when:

  • The decision is hard to reverse (database choice, API versioning strategy)
  • Multiple viable options exist and people disagree
  • The decision affects multiple teams
  • Future developers will wonder "why did we do it this way?"

ADR Numbering

Use sequential numbers: ADR-001, ADR-002, etc. Never reuse numbers. If an ADR is superseded, mark it as "Superseded by ADR-XXX" but keep it in the repository.

Keep ADRs Short

A good ADR is 1-2 pages. If it's longer, you're writing a design doc, not a decision record. The ADR captures the decision and rationale; the design doc captures the implementation details.

Chapter 2

Technical Spec Templates

By PM Toolkit Pro | $25

A complete set of templates for writing technical specifications, architecture decision records, RFC proposals, and API designs. Built for technical PMs and engineering leads who need to document decisions clearly and get alignment before writing code.


Chapter 3
🔒 Available in full product

What's Inside

You’ve reached the end of the free preview

Get the full Technical Spec Templates and unlock everything.

All Chapters

Get the complete guide with every chapter unlocked, including code samples, diagrams, and best practices.

Full Tool Suite

Access all interactive tools with complete data, all workload profiles, and the full scenario library.

Source Files

Downloadable source code, configuration files, and working examples from every chapter.

Lifetime Updates

Free updates for life. Every new chapter, tool, and improvement included.

Buy Now — $25 →
📦 Free sample included — download another copy for the full product.
Technical Spec Templates v1.0.0 — Free Preview