Write your done checklist before you start
Before I let a coding session run, I write a short checklist of what "done" means. Does it save the file. Does it handle a blank entry. Does it show an error instead of failing quietly. I write this before any code exists.
Without a checklist, it's easy to look at a working demo and assume the tool is finished, when it actually only handles the one example you happened to test. A checklist written ahead of time keeps you honest, because you're checking the result against your own standard instead of against whatever the tool shows you.
Try this today: for the next small tool you build, write four checklist lines before you start, then read each line out loud against the finished tool and mark it pass or fail yourself.
- handles a normal case
- handles a missing or wrong input
- saves or sends the result somewhere you can see
- fails with a message, not silence