These days I still use paper to initially sketch out my code when I can’t just Google for a solution. The result is usually some flowchart, pseudocode, and more importantly, a clearer understanding of the problem. The paper makes the problem feel more tangible and concrete, a physical entity that can be held and inspected.
If the problem’s big enough, I don’t quite start typing away at my keyboard right after the paper and pencil phase. In college, I discovered that the visual size of my writing had an ability to get me unstuck somehow. Math proofs that felt insurmountable in my trusty notebook seemed to get a second chance on a large whiteboard. It still puzzles me why the size of the writing makes such a difference. I’d like to think it’s the act of making ideas human-size that helps me see them from a new perspective, and increases the chance of serendipity and insight as you walk past it throughout the day.
There are times however, when I forgo all of the above. Sometimes speed, legibility (I have terrible handwriting), and the ability to cut and paste text quickly is the best choice. In these situations, my text editor excels. The choice of what medium to use isn’t always clear cut. Sometimes I find myself internally debating the pros and cons of going to my notebook, whiteboard, or editor first. Other times, if I take shortcuts and skip the natural progression dictated by a problem, I usually regret it.
A growing volume has been written about “slow programming” and hammock driven development, and I think the common theme is that picking the right medium and slowing down your process (not your thinking) has significant benefits. Bret Victor recently gave an illuminating summary of his recent work in a talk titled “The Humane Representation of Thought.” In it, he attacks the shackles of static representations of thoughts and communication as great inhibitors of our full potential. We are seeing glimmers of this approach with Chris Granger’s Light Table and most prominently Apple’s Swift language with its Playground. How far these ideas can go and provide alternatives to notepads and whiteboards is an open, and exciting question.
At pMD, we’re building out big new functionality in secure messaging, coordination of care, health information exchanges, and charge capture, and we’re facing a lot of interesting engineering challenges. Using the right medium to think about and discuss problems is more important than ever.