02 · Framing the problem
Clarifying requirements
6 min read
Clarifying requirements is the work of turning a one-line request into an agreed description of the system. That description says what the system must do, for whom, and within what limits. It happens before any model is chosen, and it decides the shape of everything that follows, because no amount of modeling fixes a system built for the wrong task.
Understand what the feature should do
A visitor walks up to a library desk and asks for something good to read. A careful librarian asks questions before reaching for a book. They ask who the book is for, what the visitor enjoyed last, whether it is for tonight or for a holiday next month, and whether anything is off limits. Five minutes of questions turn a vague wish into a request the librarian can fill well.
A request to build an ML system deserves the same treatment. A line such as suggest books could mean helping a reader find their next book or helping a shop decide what to stock, and the two need different inputs and produce different results. Start with the person using the feature and what they are trying to do, then describe what happens when they use it, from the information they provide to the result they receive. Three things settle the first part.
- The person who receives the result. Find out whether it is a customer, an employee or another part of the software, because a list a shop manager reads once a week and a list a reader sees on every visit are different systems.
- The form of the result. Agree on whether it is a number, a category, a ranked list of suggestions or a piece of text, and how many items it contains. For the library, that might be up to ten books.
- The moment the result is needed. Find out what triggers the request and whether a person is waiting. A list that appears as the home page loads has a deadline measured in a fraction of a second while a printed list for the morning shift can be prepared overnight.
Agree on what is included
A broad feature grows into several separate problems unless someone draws a line around it. For book suggestions, the design might include recommendations based on books a reader has rated, and leave book search and written reviews outside. Say the boundary out loud so the rest of the discussion stays on one problem.
Missing information should stay visible instead of being filled in without anyone noticing. If the request does not say whether new readers with no ratings need suggestions, ask. If nobody can answer, write down the assumption you will use, such as showing new readers a general list, and say what would change if the assumption turns out to be wrong. An assumption that is written down can be checked later, and one that stays silent becomes a surprise.
Boundaries also tell you what the first version must not attempt. If written reviews were inside the line, the design would need a second kind of model that reads text, and the feature would wait for both models to be finished. Leaving reviews outside lets the ratings-based list ship on its own and gives the team a working feature to learn from.
The librarian can ask a follow-up question whenever the first answer is unclear. A system cannot, so every ambiguity the librarian would have resolved in conversation has to be resolved now, in the requirements, before the system exists.
Check the data and the limits
Knowing the desired result is half the problem. The other half is what information exists to produce it and the conditions the system must work under. At this stage, name the limits with numbers where you can and leave the question of how to meet them for later.
- Available data. Ask what records already exist and whether they may be used. A design built on reader ratings depends on those ratings existing, and if only 5 percent of readers have ever rated a book, the plan has to work for the other 95 percent too.
- Expected demand. Ask roughly how many people will use the feature and how often. Ten thousand readers opening the home page once a day is a different system from ten million, and a later topic shows how to turn that count into machines.
- Response time. Replace the word fast with an agreed number. A list that must be ready as the page loads has about 200 milliseconds, a fifth of a second, while a list prepared overnight has hours, and the two allow completely different designs.
- Rules and missing information. Check which results are allowed and what happens when information is absent. Decide whether books that are out on loan may appear and what a reader with no ratings sees.
Write a short problem statement
Bring the answers together before moving on. A useful statement names the person, the input, the output and the main boundaries in a few sentences, and keeps confirmed requirements apart from assumptions and from questions that still have no answer.
For the library, the agreed statement might read as follows. When a reader opens the home page, the system suggests up to ten books that are available to borrow, using the books that reader has rated before. Readers with no ratings receive a general list of popular books. Book search and written reviews are outside this design. We still need to confirm the expected traffic and the response deadline.
A table keeps the three kinds of statement apart, so a reviewer can see at a glance what is settled and what is still open.
Two confusions are common here. People mistake the request for the need, and set out to build what was asked for instead of what would help, which is why the first section begins with the reader and the shop manager. People also accept words like fast and accurate as requirements, when only a number can be tested, and a design that promised fast can never be shown to have failed or succeeded.
The statement gives us a specific feature to design without choosing a model too early. The next topic explains how to turn the goal of helping a reader into a task a model can learn, and how to measure whether the feature helped.
| Part of the statement | Agreed wording | Status |
|---|---|---|
| Person | A reader opening the home page | Confirmed |
| Input | The books that reader has rated | Confirmed |
| Output | Up to ten books available to borrow | Confirmed |
| New readers | A general list of popular books | Assumed |
| Outside the design | Book search and written reviews | Confirmed |
| Traffic and deadline | Still being asked | Open |
What to practice next
Design these systems on the canvas and get your design graded.