Coding is the easy part about writing software.

The IDE, the language, and the execution of the code itself all support and guide me as I write code. Especially when executing on a pre-designed plan or refactoring, I can rely on the compiler to let me know when I’ve made a mistake and I can look at the UI to see if I’ve done it right. Some tasks can even feel refreshing because they don’t require hard thinking while seeing a lot of output.

Pure technical design is far harder. Without supporting tools, a higher percent of the cost comes from my brain. I can’t lean on a program to tell me I’m doing something wrong or tell me what to think about next.

To help, I try to prototype in parallel. Whatever code I produce I leave out of review to avoid sunk-cost bias and avoid “can’t see the forest for the trees” effect.