If you're a developer (not only programmer - any developer, doing creative work), read this: http://www.joelonsoftware.com/articles/fog0000000339.html.
Some excerpts of what I found especially relevant to me:
there have been times in my career as a developer when I went for weeks at a time without being able to get anything done. As they say, I'm not in flow. I'm not in the zone. I'm not anywhere
ever since my first job I've realized that as a developer, I usually average about two or three hours a day of productive coding.
I feel a little bit guilty when I see how hard everybody else seems to be working, and I get about two or three quality hours in a day, and still I've always been one of the most productive members of the team.
Many of my days go like this: (1) get into work (2) check email, read the web, etc. (3) decide that I might as well have lunch before getting to work (4) get back from lunch (5) check email, read the web, etc. (6) finally decide that I've got to get started (7) check email, read the web, etc. (8) decide again that I really have to get started (9) launch the damn editor and (10) write code nonstop until I don't realize that it's already 7:30 pm.
If it happens to Joel, it can happen to me too, right ? I'm glad I have a blog now to document this.......