I was recently listening to one of the old Stack Overflow podcasts where Joel mentioned, almost in passing, that many great developers are actually not that productive most of the time.
I'm paraphrashing here, but the gist is that a lot of developers go into a hyper-productive flow state a few times a week, and that's when 80% of the work gets done. After that we go into a recovery period where we charge back up and get ready for the next burst.
In my personal experience this is absolutely and profoundly true, and at times I've felt really bad about it.
Let me explain.
Overall my output is very high, but it comes in bursts. There will be an amazingly productive day sandwiched between two or sometimes more days where I definitely worked but it wasn't the same. For awhile I tried to force it all the time, thinking that it was my responsibility to always function at my highest level. Needless to say, this lead to great suffering, and occasional caffeine rage.
(Note to future prospective employers: That last part was a joke. Probably.)
Eventually I came to terms with the fact that my overall output is actually high, although my pattern is bursty and a bit unpredictable. And I realized the the lulls are part of the process and well worth the price of the absurdly productive periods.
Also, learning to take better care of myself (diet, exercise, etc) definitely continues to improve my productivity across the board.
I wonder what other developers think about this, and what your own experiences have been. It seems to me that understanding, admitting, and harnessing this could be a big deal to a lot of people!
Note: I know that there are a lot of productivity gurus who advocate discreet phases of work (gather, work, recover, etc), and that seems to be the same idea. Personally I'm a big fan of GTD, although I'm not sure it directly addresses this subject. I'm interested in whether any of those guys actually had anything useful to say that made an impact for you.