Attention, Distractions, and Context Switching

Anything you focus on will flourish

The information age has brought a lot of pressure on people’s attention. You are not immune to it and your software development team definitely isn’t either. The nature of software development requires long uninterrupted blocks of time to focus on problem solving. The longer you focus on a problem without interruptions the deeper you get into a state of flow, commonly referred to as being “in the zone”. Where everything is fluid, and smooth, and… until someone taps you on the shoulder just to tell you that they sent you an email 3 seconds ago.

These days, colleagues may not be physically in the room to interrupt you but modern interruptions come in the form of notifications across your devices. You know them. You may argue that some interruptions are necessary especially in the work environment, which is ok. Here is what you need to consider though, interruptions lead to context switching, and context switching breeds multi-tasking, and it breaks flow. These interruptions add up, rob of you of productive time and drain you of energy. I strongly believe that the longer you are able to stay in a state of flow without breaking it then the more productive you’ll be.

When you are highly skilled and faced with a highly challenging task, you’ll typically end up working in a state of flow. Being in a state of flow leads to very productive work but it takes some time to get into the state (around 15 – 30 minutes). Interruptions burst your state-of-flow bubble and you end up starting all over again. When a team is able to work in a state of flow the members are at their most productive. Distractions and interruptions lead to context switching and burst your flow bubble. Flow state diagram is based on Mihály Csíkszentmihályi’s work.

Your attention is a valuable resource and it’s in demand. Distractions make you lose focus, and lead to context switching. This is costly to you as an individual and to software development teams. Relatively, large companies tend to have more bureaucracy. In addition to that, their software development teams experience more context switching which leads to lower productivity especially when compared to smaller nimble teams.

A 7-person software team that experiences less context-switching will outperform a 70-person team inflicted with context-switching (which is typically disguised as being busy). Personally, I have notifications turned off on my devices and apps (Gmail, WhatApp, Twitter etc.) except for a few like Slack which enable me lead my team. I also practice a few things to help maximise my state of flow and productivity. Here are some of them:

Work deeply: Set time aside for productive work only. How long depends on you. I like to have 4-hour blocks of uninterrupted time a day, sometimes 2 hours. Having 1 hour of uninterrupted work is a very good starting point.

Do one thing at a time: Multi-tasking gives you a false feeling of productivity but you’ll be way more productive if you prioritise tasks and focus on one thing at a time. With software development, teams that are able to function as a single unit will outperform those that don’t. Letting your team work on one thing at a time enables them to spend more time closer to specific problems. This becomes an advantage in the long run.

Further Reading

  1. Deep Work book by Cal Newport
  2. Youtube: A Life Engineered Channel
  3. More on the concept of flow