This recently came up in a discussion on birmingham.io so I jumped in with my thoughts.
I seem to remember that the basis for Pomodoro was study: Evidence showed that if you took regular breaks from study and did something mundane - make a coffee, walk about etc. then your brain had a chance to have better understanding and memory of what you had been learning.
Thus the 25 minute study / 5 minute break system was used.
So to be clear: This technique is a way to deliberately interrupt yourself every 30 minutes. Which for study is great.
Unfortunately people have applied it to programming. I personally cannot get anything significant completed in 25 minutes and then switch away from that state - it would be very unproductive for both myself and many others I have worked with.
For programming, I use 'Golden Hours' (thanks to @adean). This is a period of 2 hours work, in which you give yourself permission NOT to be interrupted by anything less than a fire breaking out. If you are interrupted by anything else then you just tell yourself you will deal with it after the 2 hour period is complete.
This is pretty much the opposite of Pomodoro: It is a way to ensure you individually, or the two of you (if you're pair programming) aren't interrupted for an extended period of time. It works for me.
It is probably unproductive to get in more than 3 maybe 4 sessions maximum a day - the rest of the time, you are interacting with others and preparing all the artefacts you need to go through the next session.