In Episode 12, Paul finds the bug by saying it out loud to a duck. Nova is hurt. But the duck didn’t find anything. Paul did, the moment he had to put the problem into words. That’s the trick, and it works just as well as the first line of a prompt.
Duck first, prompt second
- Say what should happen. One sentence. “Loading a user by ID returns the user.”
- Say what does happen. One sentence, with the real output. “It returns null for ID 42, which exists.”
- Say where you’ve looked. “The repository call returns a row; the null appears after the mapping step.”
- Say your hypothesis. “I think the null check on line 12 fires on a valid user.”
Half the time you solve it at step 3, like Paul. The other half, you now have a prompt that gives the assistant something to work with instead of a vague feeling that it’s broken.
Prompt to steal
Expected: GetUserAsync(42) returns the user.
Actual: it returns null. The row exists (checked in the DB).
Where it goes wrong: _repo.FindAsync(42) returns a user; the method still returns null.
My hypothesis: the `if (user == null)` check at line 12 is wrong, or something
reassigns `user` before the return.
Confirm or refute my hypothesis from the code. Don't propose a fix until you have.
Want the full routine? This week’s Hint of the Week turns the duck into a five-minute written protocol you run before every bug prompt.