Monday, January 17, 2011

Managing Interruptions – Part Deux

In the previous installment of Managing Interruptions I introduced to strategies that worked for me and allowed increasing focus and attention span when working in a highly multitasking and frequently interrupted environment while trying to do focused development at the same time.

The strategies are:
  1. Minimize interruptions: for example discourage excessive use of instant messaging.
  2. Combine interruptions and handle them in batches: instead of handling an interruption when it occurs, queue it and handle it together with other interruptions during allocated time.
Recently I successfully introduced third strategy that can be viewed as an extension of the second strategy:

Handle interruptions in first half of the day, while trying to avoid and postpone most of them in the second half of the day.  (Of course which part of the day and it’s duration is entirely up to you)
The reason why this works for me is that I don’t have to switch between interruptions and focused work at all. While second strategy allows “islands” of focused work, those islands are relatively small. In order to do real programming you need at least a good few hours in order to do something productive. By allocating second half of the day for programming, I was able to significantly improve my concentration and amount of produced code.

The approach also makes it easier to handle interruptions in the first half of the day because I’m entirely allocated to them and my mind is in “interruption handling mode: which is very different from “focus and concentration mode". Also, I’m not worrying that yet another interruption is preventing me from programming because I’m not doing any programming at that time. Taken together it significantly minimizes context switching between interruptions and focused work.

Now to the technicalities. Even if the idea itself sounds reasonable, it might be hard to implement in reality. To achieve it I did the following:
  1. I communicated to my subordinates and my boss that I will be trying to handle most of external requests and interruptions during first half of the day, while handling only critical requests during second half.
  2. When an interruption arrives during second half, unless it’s absolutely critical, I flag it for handling the next day.
  3. I put a printed sign “Janitor is out! Janitor reception hours are 8am-1pm”. (I think architect/team lead’s work has a lot in common with the janitor:))

After employing this strategy for about a month I’m positively surprised by the results. I am able to efficiently handle all requests and at the same time be more productive member of the team.