Problem Framing

Turning a vague goal into an explicit problem: what is actually being asked, what must be true, what can be ignored for now, and goal against implementation.

Problem Framing
▶ lab

"Build an e-commerce platform" is a bad frame; "customers browse, add to cart, pay, and admins manage products" is better; adding what must never happen, what is outside the system and what V1 leaves out is better still. The frame is the first artefact.

Q · You have a sentence and you need a problem. What does a well-framed problem contain, what does a badly-framed one leave out, and how do you get from one to the other?
From a Vague Goal to an Explicit Problem
▶ lab

"I want to build something like Spotify" contains a problem, and a fixed sequence of questions extracts it: who, what they do, the one workflow that matters, the data, the boundaries, what can wait, what you do not know. The output is a first slice, not a design.

Q · A goal has arrived as an ambition — "something like X" — rather than as a problem. What sequence of questions turns it into a problem you could start on, and what does the output look like?
Goal vs Implementation

"The user can pay" is a goal. "Stripe Checkout" is an implementation. Requirements that arrive as implementations lock in decisions nobody made; the move is to separate the two so the goal can be met by the best implementation, not the first one named.

Q · A requirement has arrived already containing its solution. How do you separate the goal from the implementation it came wrapped in, and when is the implementation actually part of the requirement?
Restating the Problem

Say the problem back in your own words — to the requester, to a colleague, to the page — before solving it. The restatement is where misunderstandings surface, and it is the cheapest experiment in the domain.

Q · You think you understand the problem. How do you find out whether you do, before the cost of being wrong is a week of code?
What Must Be True?

For "checkout works" to be true, a set of smaller things must each be true: the cart total is right, stock exists, payment succeeded exactly once, an order was recorded. Decompose the frame into conditions, and each condition is a test and a place a design decision lives.

Q · The frame says what the system does. How do you turn "it works" into the list of things that must each hold, and what does that list give you that the frame did not?
What Can I Ignore for Now?

A frame lists everything the system will need; V1 needs a fraction of it. Deciding what to ignore — and writing down why, and what would bring it back — is how a project gets small enough to start without forgetting what it left out.

Q · The frame is complete and it is too big to build. How do you decide what to leave out of the first version, how do you tell "ignore for now" from "ignore at your peril", and how do you make sure the ignored things come back?