Java Child / The Machine Does Exactly What You Said
What You Meant Is Not What You Wrote Down
The single most common bug is a perfectly executed instruction that was never the instruction you intended to give.
Hold a task in your head and it stays comfortably vague. Sort the list. Check if it is valid. Send it to the right place. Each of those phrases feels complete until you try to hand it to something that cannot fill in blanks. Sort by what, in which direction, and what happens to items that tie? Valid according to whose rules, and what counts as almost valid? Right place decided by which piece of information, and what if that information is missing? The vagueness was never a problem while the task lived in your head, because you were quietly resolving it as you went. Written down, it has nowhere to hide.
This is why so much beginner frustration takes the same shape. You look at your instructions, you understand them perfectly, and you cannot see the error, because you are not reading what is there. You are reading your memory of what you meant. The two overlap almost entirely, which is what makes the difference so hard to spot. Experienced people are not immune to this. They have simply learned to distrust their own reading and to find ways of getting the instructions to speak for themselves, by running them in tiny pieces or by describing them aloud to someone else.
The practical remedy is to write the intention down in ordinary words before you write anything else, and to make that description so specific that a stranger could follow it without asking a single question. If you cannot do that, you do not yet understand the task well enough to instruct anything, and no amount of clever construction will rescue you. The description is not overhead. It is the actual work, and the rest is transcription.