Programmer Interrupted (2013)
blog.ninlabs.com
blog.ninlabs.com
If the problem statement is "interruptions cause me to be unproductive for some time after one occurs", there's a lot of value to working on cutting down "some time" as well as simply trying to avoid interruptions. Some interruptions are unavoidable, as well: bathroom, RSI-induced rest breaks, loud noises from outside.
I moved away from programming a couple years ago, and I've found that there are non-programming tasks that require the same amount of "load-up" that development does. Writing comes to mind. Programming is unique, though, because there are far more digital artifacts you have to navigate while you do it. That makes these sorts of techniques particularly interesting. How do we take advantage of the fact that there are so many markers in the code, instead of making their complexing the problem?
Don't Wake Up the Programmer!
If a coworker needs to talk to me, he sends me a message. If he really needs to talk to me, he waves his hand in front of my screen. If we are pairing on something, I obliviously don't wear the headphones or we both do and simply communicate using chat.