Curing Writer's Block for Developers

I'm a motivated, self-starting person, but I have to admit, sometimes I have a hard time getting the wheels going on a project or task. This happens most often when I'm distracted, bored, or unsure about the next steps to take on a task.

Here's some techniques I've developed to help get me going again.

Stare at the Screen This probably sounds like a strange idea, but I've found it really helps. If you're familiar with meditation concepts, it's a variation on that idea. By simply sitting in front of the computer and staring at the screen, I can still my mind and ease myself into a higher state of concentration that is needed to proceed with the task at hand. And staring at the screen means just that. Literally doing nothing. No surfing the web or reading Facebook. Just still your mind and focus on the screen. Usually, something begins to happen in the noggin after a few minutes.

Open my Daily Log and Prepare to Type I keep a daily log in a note-taking system. If I haven't done so already for the day, I create the log entry for the day, make an appropriate heading, and create the first, empty bullet item. I don't force myself to type anything yet, but I'm ready for when things start happening. I then go back to staring at the screen.

Using Boredom to My Advantage So you're probably thinking that staring at the computer screen doing nothing would get boring really quickly. Yep. It does. But that's part of the point of the exercise. I use the boredom to my advantage. My mind starts looking for something to do, and that's when I can harness it to start doing some real work.

Stream of Consciousness Journaling Since I have my Daily Log open by this point, I'm ready to start typing anything that comes to mind. Usually, thoughts start coming me to me the form of "I need to ...", so I write that down. I allow myself to write down anything that comes to mind, even if it is not related to my daily workload, but more often than not, the things that come to mind are relevant to what I need to be working on next.

Micro Task Breakdowns As I'm doing my stream of consciousness journaling, what usually ends up coming out the other end is a finer-grained task breakdown of the task I'm currently working on. I always have a high-level task list, including the user stories I own and the tasks that are part of the story, but what I realize is that the tasks are too chunky to take immediate, direct action upon. In fact, that's often the true source of my writer's block. I discover that I'm either unsure of what to do, or how to do it. Whatever it is, I write it down. I'm writing in my own personal notebook that no one else will read, so I allow myself to create the most microscopic of tasks, without fear of embarrassment. Sometimes the tasks are of the form "How do I ...", like for example, "How do I check for the existence of a directory in Ruby?" I try to get my list of tasks down to things that are easy and only take a few minutes each.

Examining My Personal Workflow As I'm doing my journaling, another thing I frequently discover is that there is some kind of friction in my task workflow that is creating frustration or a lack of motivation. It could be that niggling "key read error" that I get every single time I try to ssh to a certain machine, or that I need a few extra Bash aliases to save me from typing repetitive commands. Examining the friction points in my personal workflow gives me another source of microscopic tasks that I can quickly cross off the list and help build some momentum. Yeah, I suppose people might call that "yak shaving", but if it helps me build some momentum and create a little motivation, I'm okay with that.

Re-Organizing My Task Notes One particular area of personal workflow friction comes from how my task notes are organized. I'm a fairly well-organized person, but as a task or project evolves, I come to realize that the way my notes are organized are no longer well-optimized. Taking the time to refactor my tasks notes so that I'm ready to do each task on my list quickly and efficiently helps to motivate me.

Taking Baby Steps By this point my mind has risen to a higher level of concentration, and I'm starting to engage with the workload with a heightened sense of interest. I'll read through my list and pick out the first thing to do. Then I do the next thing. I'm starting to get some work done and have broken through my writer's block.

Reflection If I'm still having trouble, I go back through the journal entries I just got done writing and reflect on them. For me, there's something magical about the feedback loop that is created by having my thoughts written down, and then visually reflected back to me. It's a soothing experience that once again helps to elevate my mind to a higher level of concentration prepared for productive output.