Module
Module 2 of 5Lesson 2 of 2~14 min

Intent before solution

Requests often arrive as a ready-made solution, and building it as is can miss the real problem. This lesson teaches you to trace a request back to the intent behind it, and to decide what the spec imposes and what it leaves to developers and agents, without locking them into a premature solution.

Lesson objective

By the end of this lesson, you will be able to rewrite a request phrased as a solution into a complete intent (problem, target outcome, constraints, non-goals), and decide which parts of the solution to fix and which to leave open.

Topics covered

  • problem before solution
  • product intent
  • non-goals
  • feature scoping
  • specifications

Where it fits

The job of a spec

What is a spec for, at what level should you write it, and how do you say what you want without dictating how to do it?

Lessons in this module

  1. What a spec is for, and at what level to write it
  2. Intent before solution (this lesson)

What you will learn in the course

This lesson is part of the course Write specs that developers and AI agents understand

  • Choose the level of spec suited to the decision at hand (PRD, feature spec, ticket) and know what each must contain.
  • State the intent of a feature (problem, target outcome, constraints, non-goals) separately from the solution, to leave the right room to the team and the agent.
  • Write verifiable, declarative and unambiguous Given/When/Then acceptance criteria, including as tables of examples.
  • Identify edge cases and non-functional requirements (performance, security, accessibility, personal data) and make them testable.
  • Write a spec and an intent file that a coding agent can use (context, constraints, files involved, out of scope, verifiable definition of done).
  • Review a coding agent's plan against the spec, spot gaps before it writes code, then check the evidence of what was delivered.
  • Keep a spec alive (versions, decisions, updates when the code reveals a case) and spot the anti-patterns that make it useless.