The month of April, I've been working very strongly on a problem that has plagued me for several years now. And yes, the title says it all: it's the problem of managing interruptions.
The last 3 weeks, I've been working very hard on a feature at work that had at least 13 components to it. And while I was working on this feature, I realized time and again how bad I was at managing the almost constant influx of interruptions entering my mind. On average, I was getting about 5-10 interruptions an hour.
These interruptions were anywhere from IM (Gtalk, MSN, AIM, Yahoo, etc.), facebook wall posts, colleague clarifying something with me, lunch, dinner, supervisor asking me to come over, team meeting, new bug being assigned to me, twitter, email from an old friend that I just have to reply to, hunger, thirst, hot, cold, request to play ping pong, and a whole bunch more I can't be bothered to list out.
And then I looked around and studied the people I considered smart. And what I saw blew my mind away. All these smart people seemed to be managing their 10-20 interruptions an hour with such flawless precision. They were pros at this. It was an art to them that they had mastered long ago. They had certainly already solved this problem and had moved on to other interesting stuff.
This got me very curious. I wanted to be like them. If they could do it so effectively, why couldn't I? What have they got that I haven't? These 4-5 guys were putting me to shame, and I couldn't allow that. I was much too egoistic to let it pass.
But what I observed next blew my mind even more. I zoomed out some more and really looked at all the people around me to see how they were managing their interruptions. And boy they sucked! Every one of them! And I thought I was bad.
This was my cue. This is the old pattern that almost every single self-help book I've read contains: When the vast majority of the population sucks at something but a select few people seem to be experts at it, then what you have in your hand is an optimization problem that is very solvable. I jumped at this golden opportunity.
I think with the explosion of ubiquitous social networks and team-oriented problem solving, interruptions are almost impossible to avoid. I spent all of Grades 11 and 12 micro-managing my interruptions by basically eliminating them one by one. But now, I don't think I can eliminate them even if I wanted to. So I was faced with the only alternative. If you can't avoid, manage.
So I sat down and solved the problem using techniques I discussed in my TPS handbook. I definitely did not want to solve the problem iteratively. I wanted to concentrate my thinking to 15 minutes and solve the problem once and for all.
First thing I did was to make an exhaustive list of every single interruption I could possibly have and looked for patterns. These were all pretty simple interruptions — nothing terribly complicated. And most interruptions did not span more than 30 minutes. And of course the bulk of the problem lied not in the interruption itself, but in recovering from the interruption and getting back to what you were doing before. This becomes especially hard when interruptions are themselves interrupted by other interruptions and so on. In my day-to-day work, this branching can be nested as much as 6-7 levels deep.
The solution came to me quite easily actually. All I needed to do was to get my brain to work like a very efficient stack. A stack is like a stack of papers. Each sheet of paper is a thought or an idea or an interruption. Each time I get interrupted, I add, or push, a sheet of paper, a stack frame, to the top of the stack of papers, the call stack. Once I'm done with the idea, thought or interruption, I pop the stack and throw away that sheet of paper — only to reveal the previous sheet of paper underneath. Hence, I can continue from where I left off almost instantly.
The obvious reference to the data structure from computer science isn't accidental at all. Computer science is armed with some of the most powerful metaphors of the human brain, well, mostly because the computer scientists designed computers after largely borrowing ideas from how they thought the brain functioned.
So about 3 weeks ago, I started with some simple exercises to help me arrange ideas on top of each other like a stack. Practice with 10 ideas. Try it right now. Try to think of 10 unrelated ideas or situations you've been in the last 10 days one after the other, and then try to process the stack backwards. Half-way through, try to add other ideas randomly, then pop randomly. Do this about 10 times a day for a week and you'll become a pro too. The key thing here is that you're remembering ideas or situations, not a list of items. And ideas and situations are always linked in some way or the other.
I think most people will see significant gains if they train their mind to behave like a simple stack. However, there is ton of room for optimization. Once again, I borrow powerful concepts from computer science.
- Translucent stack frames
- Ruby-style continuations for each stack frame
- Priority stacks analogous to priority queues
I have had varying degrees of success with each of these optimizations. If you'd like to discuss any or all of them, feel free to hit me up on IM (firstname.lastname@example.org). And don't worry about interrupting me — I've got you covered quite well ;-)