This is a guest post by Johan Svärd. He is not only a gifted developer who gets things done, but also thinks of development processes and projects as a whole.
As a developer I am not too keen on interruptions and the more intricate the problem or task, the bigger the problems that can derive from an interruption. I like to think of it like this: My “short term memory/work memory” is a sponge. Especially when I am tackling a problem that I have not encountered before, or at least cannot see the solution for right away. Then I need invest time and thought to grasp the context. This is the suction part of the sponge-model. The more complex the context, the harder it gets to hold other contexts in the sponge. Then, when the collecting is done, the squeeze part commences, and the problem gets a solution. In the ideal, o so quiet world.
Note that this is not a rant on social media, cellphones and other disruptions that the modern man allows his day to get interrupted by. That’s his problem. No, I am talking about the “I just have a quick question; it’s probably a no-brainer for you.”
One can categorize the interruptions in a couple of levels, moving from manageable to total failure:
- Regardless if you are in the first or second phase of the sponge-model, you need to halt that process whenever that comes your way. I like to compare it to stopping peeing in the middle of the action. It hurts, it’s distracting, and there is almost always spillage.
- If “Not right now”, is not accepted as an answer, level two of the disruption will be reached, and here there are differences between the problems if you are in the suction or squeezing stage.
- If it is suction going on, the first risk is bad storage. Other things enter your mind from the long term memory, and without you being able to do anything about it you could get either of two problems. Air bubbles, in effect fractured storage, that will make it harder to access the trains of thought acquired while sucking. The other problem could be even worse, and that is mud in the water. That is: the fluid being sucked all of a sudden does not only contain the problem at hand but this other question as well. This will make the squeeze phase less efficient, with a poorer result in code.
- In the squeeze phase, there are other problems. For one thing, the pee-analogy just keeps getting more and more hurtful, and the leakage more severe. This manifests as slower out-put and dafter coder.
- If the disruption still does not go away the third level is reached. Data-loss, time-loss, and if you do not recognize that one of the two just happened, most probably some kind of corruption. Be it a bug, bad design or whatever. Note that when the data is lost before you have used it in the squeeze phase not much of it will be stored as knowledge making the whole suction part to have been done in vain!
Different people handle this in different ways, and are better or worse at tackling the problems, or even at being aware of any problem. (See social media above).
I for one handle interruptions in the squeeze phase better, but loath them for obvious reasons. I have also acquired a knack for a kind of long term suction phase, where more of the ideas and concepts are stored in the more permanent parts of the memory, and when the time comes to squeeze, I do not have to solely rely on the sponge for context, but some of the things can be found in long term as well. As if the problem is a known one, one might say. This is not a solution though, this is me folding under the pressure of constant interruption.
I know there are ways to train your memory to work better, and yes if you know everything you need to about what you do you have no problems like these, but where’s the fun in that?
What I really want to put out there is this: it is an illusion that you can have several sponges. Any multi-tasking on your part is beneficial for the interrupters, who get answers closer in time, not for the efficiency of your combined output. So, are there any solutions? Well I don’t know. This is a rant, not a silver bullet. This is a fact of my work-life that I, more often than I would like to, have to endure. Poor me. I just have to suck it up, pun intended.
Here’s what I find though; knowing this have made me better at staving off questions right when they will do the most damage. And, I have started to use email as the preferred mode for asking questions, since these are not as intrusive as other media. In person or on the phone being the worst. I have also become increasingly adamant in staving of multiple tasks of undisclosed depth. For example: “Can you solve these bugs today, and also keep track of the support inbox?”
The next stage will be to make all the interrupters in the world behave and stay silent when I need them to…