1."How do I implement this feature?"
The implementation question, and it is a good question — the code has to work, and someone has to write it. What defines it is scope: it takes the requirement, the architecture and the technology as given, and asks how to build within them. That is exactly right when those things really have been decided, and it is where most of the actual value in software gets produced. The failure mode is not asking it; it is asking only it, on a problem whose decisions have not been made. Then the implementation quietly makes them: a schema shape becomes the data model, a synchronous call becomes the coupling, a retry loop becomes the failure policy, and none of it was reviewed because none of it looked like a decision. The way to keep the question at its correct scope is to notice when an answer requires inventing something that was not specified — a status field nobody described, a timeout value nobody chose, a rule about what happens when the third-party call fails. Each of those is a decision escaping into code, and the useful move is to name it out loud rather than to pick one silently.
Key features
- A correct question with a narrow scope: requirement, architecture and technology are taken as given
- The failure is asking only it, on a problem whose decisions have not been made
- Undecided things do not stay undecided — they get decided by whatever the implementation happened to do
- The signal is inventing something unspecified: a status value, a timeout, a failure rule
- Naming the invented decision out loud is the entire upgrade; you do not have to also answer it
What the implementation question covers, and what it assumes
Decisions that escape into code when nobody names them
- In scope — a good question
- The requirement is written and testable
- The architecture and the store are chosen
- The failure behaviour is specified
- What is left is genuinely how to build it well
- Past scope — decisions escaping into code
- A status value nobody described
- A timeout nobody chose
- A retry around a call nobody said was safe to repeat
- A query inside a loop nobody sized
Command
The upgrade is one sentence, not a promotion
Instead of:
"I'll add a status field with pending,
done and error."
Say:
"The ticket does not say what happens
when the provider call fails. I am going
to need a state for it -- can we decide
whether that is retryable or terminal
before I pick one?"
Same work. The difference is that a
decision that was going to be made anyway
is now made by someone who can see the
whole workflow.The implementation question is correct and narrow: it takes the requirement, the architecture and the technology as given. The failure is asking only it on a problem where those were never decided — then the implementation decides them, invisibly, because a schema shape and a timeout value do not look like design decisions. The signal is having to invent something unspecified, and the whole upgrade is naming it out loud rather than picking one silently.