Ben’s Law: within a 4 hour block of time, for each unit of uninterrupted time in hours (t), the value of productivity and creativity is roughly t^2.
An interruption resets t to zero.
p = t^2
c = t^2
if t = 1 (1 hour of uninterrupted time) then
p (productivity) = 1 and
c (creativity) = 1
if t = 2 then
p = 4 (4 times more productive then at t = 1) and
c = 4
and so on…
Now, I say roughly, because around the 4th hour–as it gets closer to lunch productivity starts to go down, the curve probably looks more like the below but p or c=t^2 is close enough.
Uninterrupted Development – Ideal 4 hour block of time
The below is very difficult to achieve. This only happens to me once or twice a month, but when I get a 4 hour block of uninterrupted time I get more done during the last two hours of that block than I do in an entire week!
Writing programs is not at all like rote work, or any job where you’re following a procedure and can just pick up where you left off. Development is more of a creative task, it requires time to ramp up, load what you’re trying to accomplish in your head. You can’t always switch into creativity mode on demand and just start coding, you just find yourself one second staring at the code, and the next moment you’re unaware of your surroundings, you’re in the zone and the longer you can stay there the more you can accomplish. I would say programming is more creative than most people think. It’s more like painting, or writing a book, or composing music than it is engineering. Interrupting a programmer is like interrupting a musician in the middle of a song.
Interrupted Development – Real World 4 hour block of time sliced to bits
This is more like the real world, and probably is a better indicator of most programmer’s 4 hour blocks of times. You can get some work done this way, but it takes about a week to do what could be a day’s worth of work. A quick interruption sometimes won’t cause enough damage to reset back to zero, but anything over a few minutes will do so.
See also:
http://www.paulgraham.com/makersschedule.html
This post is licensed under the CC BY 4.0 license.