When developing a new project, or adding a feature, there’s a very strong instinct to start with manual testing – to run the binary and test the new feature by hand.
I try very hard to resist this urge.
Instead, as soon as I’ve added a feature, if I find myself itching to try it out by hand, I’ve learned to recognize that urge, pause, and step back and write an automated test covering whatever behavior I was about to execute by hand.
It's a sign of what a garbage developer I am that I never really consider this approach. I write some code, then check in the browser or on an iOS device to make sure it works. It would benefit me in the long term if I wrote an automated test before manually testing more often.