As a programmer, I find the cost of changing gears to be massive. There are studies that say it takes about 15 minutes to get back to where you were after being interrupted nad having to change gears. When having those 'busy' days, at the end of the day, I feel like I have been busy busy busy, but maybe wrote 2 hours worth of code. And its kind of a trap too, because it feels like I took care of people, handled everything that came my way, and I feel like I was good little busy bee. But its an illusion, I really didn't get much done at all.
I worked at a place where the main DBA had people streaming in to his office all day, asking for this and that. He was very well liked, and a very sharp guy. He didn't get jack donem and had to work off hours a LOT just to get any work done at all.
For me, communication management is the key to being productive, and relatively sane. IM? I don't use it. Turned off ICQ in the late 90s and never went back. Another thing that helped a LOT was turning off the email notification sound. There is still a little mail icon of course, but it turns out that the sound stressed me out big time, and made me lose focus. I still get to most emails within a few minutes, but can do it at more strategically sound times.
Reducing communication overall has helped a lot too. Over the last couple years, I have placed a dramatically higher emphasis on low maintenance clients. The difference between low and high maintenance clients is massive. I find it highly preferable to have a low maintenance client that may pay a little less and not have as much work for me over a high maintenance client, regardless of how well they might pay.