The “Big Block” Method
Joshua Clanton posted a guest post on Jarkko Laine’s blog yesterday, talking about how to get into a state of “flow” to increase your productivity.
I commented that I seem to be able to get into a state of flow
better when I have a large chunk of time allocated to work on a task.
To me there’s nothing worse than coming back to something I had to
stop in the middle of. It takes far too much time to get back up to
speed on what I was doing, and often I’ll have forgotten about
something essential, which results in bugs.
Joshua pointed out in another blog post that it helps flow to have not only big blocks of time but also to have your tasks divided into big blocks as well.
I definitely agree with Joshua on the “big block method,” though
this is the first time I’ve put much conscious thought into it. Looking
back, it seems that I’ve done better work when I’ve used this method,
and I’ve always hated working in short bursts, since it feels like I’m
wasting too much time in “context switching.”
How big of a block?
There’s one question I’m not really sure of the answer to yet: How big should a big block be?
The first answer that comes to mind is “Just big enough, but no bigger” (a modified Einstein quote)
So far my technique has been to just pick what seems to be a single
functional unit, or perhaps a piece of functionality that all belongs
together.
I suppose that different people will have different definitions of
what a big block task is, but to me it works out that it’s something
that is a complete unit. A complete unit can be a full module, or one
step in the implementation of a full module. The key is, though, that
there is a clear stopping point and something isn’t left unfinished.
For example, working on my browser, I have index cards (old business
cards, actually) which each have an individual task on them. I sort
these cards by the order I plan to do them in. These cards contain
something like “Implement DOM 2 HTML” or “Rendering Engine support for
inline elements.”
The former is a complete module which could (and was) finished in one big block section of time.
The latter won’t result in the final version of the layout engine,
but it will get it to a point where it is functioning, and then the
next step would be to support block elements. Absolutely and relatively
positioned elements would be yet another separate task.
I’d be very interested to hear more ideas and thoughts about the big
block method. How about adding a comment or writing a blog post with a
trackback?