Requirements Gathering

Document functional and non-functional needs.

What This Is

Write down what the system must do and how well it must do it. Requirements are your contract with stakeholders about what you’re building.

Minimum Viable Requirements

List “Must have” vs “Nice to have” features. Include:

  • What features the system needs
  • Performance targets (how fast, how many users)
  • Who can access what
  • Any compliance/legal requirements

Red flag: Vague requirements = endless scope creep and missed expectations.

Good vs Bad Requirements

Bad examples:

  • ❌ “Fast and secure”
  • ❌ “User-friendly interface”
  • ❌ “Handle lots of users”

These are too vague to verify or build.

Good examples:

  • ✅ “Page load <2s on 4G connection”
  • ✅ “MFA required for all user accounts”
  • ✅ “Handle 1000 concurrent users without degradation”
  • ✅ “WCAG 2.1 AA compliant for accessibility”

Notice how good requirements are specific and testable.

Two Types of Requirements

Functional requirements: What features does it have?

  • “Users can reset forgotten passwords via email”
  • “System generates monthly invoice PDFs”
  • “Search results filter by date range”

Non-functional requirements: How well does it work?

  • “Login completes within 3 seconds”
  • “99.9% uptime during business hours”
  • “Supports English, Spanish, and French”

You need both. A feature that technically works but takes 30 seconds isn’t actually working.

The Testability Check

Every requirement should be testable. Ask: “How will I know when this is done?”

  • “Fast search” - Can’t test this
  • “Search returns results in <500ms for 90% of queries” - Can test this

If you can’t test it, you can’t verify it. If you can’t verify it, you can’t commit to it.

You've finished reading this surface level content