One thing that I noticed that I tend to do (that most developers I’ve met don’t) is program with pen and paper first. I originally picked up the habit from my introductory Computer Science course and it has been something I’ve resorted to time and again when the going starts getting complex.

In terms of resting inertia to getting started, it’s extremely easy to just open up a notebook and begin thinking. As you create your lists, tables, and diagrams, you also learn to become better at being succinct, yet explicit. Whether you call the result a prototype, outline, sketch, or something else, learning to draft is a good skill to develop in any creative endeavor, be it writing, drawing, or programming.

While there are plenty of tools for all the various forms of representing your ideas, there is something visceral about the physicality of translating your ideas with pen and paper that forces you to slow down and deliberately think through the essence of what you want to communicate.

I’ve found sitting down with pen and paper particularly useful in complex scenarios where the number of considerations begins to expand beyond the capacity of my working memory. If you’ll allow a computer architecture metaphor (I suppose your objections are irrelevant here), think of the page as a sort of secondary cache to help you keep all the relevant items fresh in mind as you work through a specific task or problem.

To help instill a habit, try to keep in mind any time you run into a moment that you feel requires some thought – write it down. It’s a lot like writing comments in your code; once you return to considering the issue in the future (which you inevitably will), you’ll be glad that you took the time to save yourself some of that cognitive effort.