IMHO, while working on challenging tasks (bugs mostly) where we are not able to figure out something, tiny breaks spent on unrelated subjects seem to help a lot. While interruptions are bad, a badly timed interruptions seem to be the worst.
It sometimes happens to me on my way home. I let my mind wander and briefly come back to a problem, often seeing it from an angle I haven't considered during the day.
Rich Hickey (creator of Clojure) advocates 'Hammock Driven Development.' Let your background mind do the hard work for you.
For me, the best sort of tiny break is reading a good book for a page or two. I think maybe because the two contexts are so distinct?
In my experience tiny breaks away from the workstation are far more helpful than the ones that need you to use the computer. I have found taking a break from a programming session in form of checking HN, twitter makes the mind all more muddled.
Yes, let's grab a cigarette... or a coke, or a coffee. But all these circuit breakers are bad for health. The best I found out for now is to add hot water to my tea mug.
Or starjumps in the corridor
Does this also mean the Pomodoro technique is not particularly effective for programmers?