For Programmers: How to Deal with Distractions and Interruptions
Hello dear daydreamers, turning caffeine into codeine! I hope you have not come here from some disruptive notification or a referral from a teammate, interrupting you to “check this awesome article he found”.
In the next few paragraphs I will gift you with a short and concise information about what interrupters are doing to us, developers, and what it costs us to recover, so that you can make the interrupters more aware of the damage they are causing on a daily basis, hopefully leading to creating a more blissful workplace together!
I will try to focus more on the practical part and actual how-to’s & why’s instead of disassembling statistics and numbers as I presume that if you are reading this article, you are looking for a cure already, not a diagnose. I also will be discussing only unscheduled interruptions.
As I can already feel your pain craving for understanding and relief, please bare a few more paragraphs with me and let’s set our souls free :)
1. Why distraction is worse for developers than for other people?
Let’s start with the word developer. Developer. We develop. We are the creators of our marvels. We are designing and shaping the future. We are artists! We are pouring our souls and hearts (apart from the caffeine of course) into our creatures. I hope this does not need further clarification.
Now imagine a poet or a painter waiting for his inspiration to come (in the case of the painter, they may sometimes use some highly stimulating substances (coincidence? I don’t think so.)) in order to get into the so called “state of flow” or “the zone” where they are most productive and actually can create anything worthy at all. Now imagine distracting this highly “stimulated” painter long enough so that he is no longer in the zone and inspired and telling him to go back to his work and continue where he left off. He would need immense effort and time to come back to the zone.
Would there be a single sane person on the Earth making such a horrible damage to the Art and stopping this painter from giving his best gift to the world?! Would you do that?! Not even in your bravest dreams (or at least I hope so).
2. It is time to deal with distraction
Just like for the painter all intended actions / code to be written from a programmer are built inside his head. But unlike for the painter, a single interruption of the brain activity and flow for the programmer is all it takes for the state of flow to be broken instantly and irreparably. And in the end the interruptions are what is constantly happening on a daily basis with each and every programmer out there (I feel your pain bro, you are not alone).
So learning to deal with distraction is a must for every developer. Now lets see some useful tips and tricks to follow in order to cope with interruptions and avoid as many of them as possible:
2.1 Part 1: Prevent, protect and conserve
Here we are often limited to law regulations unfortunately. On the serious part of the problem though there are multiple actions we could take (even though you may not believe it). From my professional experience working at a custom software development company, I have gathered the following measures, over which we have control and have tested and proven to work over time:
- Headphones! – if a programmer has headphones / earbuds in both of his ears, there is a high risk of injury for the intruder. If only 1 of the ears is covered, you may carefully proceed to interrupt the programmer.
- Turn off mobile data / mute your phone.
- Disable browser notifications – for Google Chrome the setting is in: chrome://settings/content
- Turn off the notifications for your work messaging application: skype, slack, etc.
- Use different browsers for work stuff and for chill websites and activities like 9gag, facebook, etc. and use the lasts only when not working and not in the zone. Do not leave any distracting tabs open unless you are in a chill slot. If you are using Ubuntu, you can get use of the different workspaces for this purpose.
- Have specified times for answering emails, messages and chill time. For example 3 times a day. Instant message replying is a productivity killer for programmers.
- Close all unneeded programs. I would even recommend using a decent IDE, combining all your necessary tools: git, DB viewer, etc., so that you do not even need to leave the current application in order to get something task-related done.
- Work late in the night or early in the morning – most of your colleagues, especially from the manager’s type are gone by then (I will hint a bit about the manager and maker’s types of schedules later, the developers have the maker’s one)
- Learn to say NO – this is the holy grail for all psychologists. It is the most healthy word of them all! (Try asking a professional psychologist to do something he does not want to ;) )
- Use some kind of ticketing system for the intruders – e.g. they can have up to 5 questions a day.
- Use some kind of signal to indicate that you should not be disturbed – e.g. red headlight drawn on a piece of paper over your monitor.
- Ask interrupters to “stack” their requests and have them discuss all of them with you only at a specified time of the day.
- Instead of immediately replying, ask the interrupter to remind you or to send you an email with the information / question. At the end he will need to write what he initially wanted to ask you. In the long run he will learn to write to you, instead of disturbing you in person.
- Do not try to multitask. Multitasking is a myth and a productivity killer. Focus only on a single task at hand.
- Introduce a “Quiet hours” time slot during the day for your organization/team.
2.2 Part 2: Overcome the reality
So even if all of the above is implemented, we don’t have full control over the environment around us and there still may be some interruptions happening despite our very well-designed “firewall”. Here are the advices on how to get back into the zone faster, stay there longer and make it more productive:
- Immediately write all your current thoughts down: “dump the cache” from your head and your current state of flow to reload it faster later.
- Prepare a workflow for the current task at hand before you start working on it and write it down detailed. Split the big tasks into smaller ones. Make the size of the “cache” expected to be reloaded smaller.
- Set up your environment back to normal and stimulating.
- Learn about classical conditioning and program yourself to get into the zone faster – you will need only a few seconds instead of the usual 15-30 mins.
- Learn about suggestion and suggestopedia – together with conditioning they make a really powerful approach for learning.
- Work from home / cafe / separate office of your own if possible.
- Needless to say the “open offices” are productivity killers for most of us.
- Educate the interrupters what they are doing to you. Refer them to this article. They are not aware and most of the times they do not care enough to acknowledge the impact they have on us.
Start meditating on a daily basis. This is a big one! In its core meditation is just that – focusing only on a single thing for a long period of time, and strengthening your focus as fast as you can on it. Practice and workout your body and mind! Prepare for the unimaginable!
3. To sum it up
As promised here is a bit more information about the maker’s and developer’s schedule from Paul Graham.
The basic idea is that there are 2 types of schedules and a schedule including meetings in it is killing the programmer’s productivity as this is not our usual / optimal kind of schedule.
A key point to understand is also like the painter, we need a big chunk of time in order to get any actual work done. By interrupting a programmer and splitting his chunks of time, you are basically making sure that he will not do anything valuable that day.
Please do not do this to us.
Developers, Developers, Developers
P.S. What worked for you? How are you dealing with interruptions in the workplace? How do protect yourself against them? How do you recover from them? I will look forward to read your comments!