We all know about Flow and how long of uninterrupted periods one needs to get into it. I am wondering about how to take advantage of the opposite of those long periods.
Due to many different unforeseen circumstances, I can't get more than about 20-30 uninterrupted minutes at a time throughout the day from 7am-8PM. I am sure I am not alone in this.
All of the tricks of the trade (email once a day, phone off during set periods, scheduled alone time etc...) are not possible for the foreseeable future. I am wondering if anyone has any good ideas for how to be productive in those short windows. Assume that standard work/sleep hours are enforced and that the job is as a Product Manager.
The way it works is simple. When you want to do a disk operation, first, you write down in a special place (called a journal) what you are going to do, at a high level. "I'm going to delete this directory and all its files." Then, you go through the steps of actually doing that. Finally, you record in your journal that's what you did.
Now when power is interrupted during a disk operation you simply look at the journal and you can complete any operations that were in-flight at the time of the interruption. For example if the journal says "Delete X folder" and you see it still exists, now you can pick up where you left off.
The application to interruptible programming is straightforward. I have an actual paper journal and I will in a few words explain a task to the journal before I begin. Often I end up with a hierarchical journal, like
The overhead of recording this information is microscopic, and the benefit of returning from every interruption to a page or so of context is awesome. It's almost better to be interrupted now, because I come back to a clearly defined problem, as opposed to starting on "blank slate" items with no direction.As a side benefit, I now write really good commit messages, because I just write what my journal says I did. Which is quite a lot more detail than it was when I was trying to remember things after the fact.
[0] http://en.wikipedia.org/wiki/Journaling_file_system