Pseudocode
Inputs, outputs, state, branches and failures written down before any framework syntax — pseudocode as a thinking tool, not a coding step.
"function checkout(cart): validate cart, calculate total, create payment, create order, return confirmation" — five lines that say what checkout does, written before any framework decides how. The lines are where the missing decisions become visible.
Pseudocode is not a notation for code you have not typed yet. It is a device for finding inputs you forgot, state you did not know you needed, branches you had not considered and failures you had not decided — and it works because it is too small to hide any of them.
The four things every operation has and pseudocode must show — what comes in, what goes out, what is remembered, where the path splits — plus failures, which are branches with consequences. Checkout under all five, and the chat app for contrast.
The pseudocode had six endings on one screen. The code has a route, a validator, an ORM, an SDK and a catch block — and, if you are not careful, one ending. What survives the translation, what the framework adds, and how to keep the branches visible.