Every new development tool promises improved productivity. New languages promise better developer productivity; but, sometimes, the key factors for developer productivity aren't the tools, the computer, or even the additional monitors. Sometimes, the keys to allowing developers to get more done are psychological factors that we've known about for decades.
In our world, we're constantly interrupted. Our phone goes off with that latest alert from ESPN. It's constantly vibrating from the stream of incoming messages, chirping from the latest text with our friends, and more. We ignore the phone vibrations from emails because Outlook conveniently pops up a toast notification telling us about the latest message. It's stacked full of messages from the corporate HR department telling us about something we don't care about, the thread of inane comments, and the SPAM that has become a part of our daily lives. More toast from our instant messaging tools pop up with notifications when our colleagues and friends become available.
Many developers feel the need to keep a social media feed open so they don't miss out on something important. Whether it's Twitter, Facebook, or something more business-related like Slack, we're concerned that we'll miss out on something important if we're not connected. These channels generate more distractions.
In a way, it feels like we're deliberately encouraging, or at least allowing, distractions. It's comforting to know we're not missing out. It feels like we should be responsible and answer emails 10 milliseconds after they arrive. The problem is that these distractions are making us anxious and they're zapping our productivity.
Years and years ago in 1987, Tom DeMarco and Timothy Lister wrote a book called Peopleware: Productive Projects and Teams. It's the first place that I discovered the concept of "flow." It's the highly productive state where a person can be five or more times as effective as they are normally. This highly effective state of flow has a problem: getting and staying in it. They quote the time to enter flow at 15 minutes or more. Although further research on the state seems to indicate that this much time isn't necessary to enter the flow state, it's not a state that most people can turn on and off like a light switch. It takes preparation time to get there, and constant interruptions prevent that.
The father of flow is Mihaly Csikszentmihalyi. He coined the term for the state and is the researcher who has spent the most time attempting to understand the state. In his later writing (Flow and Finding Flow), he's spoken of the conditions for flow: clear goals, immediate feedback, and an appropriate challenge-to-skills ratio—but also the difficulty in achieving and maintaining flow.
Steven Kotler, an author and journalist, pulled together a variety of research related to flow that discusses brain chemistry and activity. In his research for The Rise of Superman, he discovered a delicate dance that the brain does during flow, including shutting down parts of our brain particularly related to our inner critic. (This may explain, in part, why developers have such a hard time testing their own code.) The implication of this is that flow is a very delicate balance. In fact, the estimated gap between skills and challenge required for flow is only 4%. Much more challenging, and we get frustrated; much less, and we'll get bored. Thus, even a small distraction like an email notification can yank you out of flow.
He also discovered that people who have been in flow are happier for days after being in flow. So, not only does flow provide better productivity during the moment, but it also seems like it has a mood-enhancing effect for days to come.
Disabling Distracting Alerts
As a developer, if you want to feel better and be more productive, it's imperative to shut down the distractions in your world. For most of us, that means disabling the distracting alerts that form the interruptions of our day. Outlook can have new message notifications turned off. You can turn off availability status for instant messaging programs. You can stop your phone from notifying you of new emails. You can revoke the ability for apps on your phone to notify you.
Some things, like perhaps text messages from your spouse, probably shouldn't be silenced; however, many of the notifications that we get in each day are things that we can silence. Consider that a typical email user may get more than 50 messages during a standard 8-hour day. This means that, on average, there's an email coming in every 9 minutes or so. If it takes 15 minutes to get into flow and you're getting an alert every 9 minutes, you don't have a reliable opportunity to enter flow—much less maintain it.
To reach productivity, you don't have to become a hermit under a rock and stop interacting with the outside world. That's not realistic. However, there are steps that you can take to better manage your distractions.
Another source of distractions today is the noise that we encounter in our offices. With open plans, cubicles, and a constant flow of traffic by our desks, our unstable state of flow is constantly in jeopardy of getting knocked over by a distracting noise. We're hard-wired to notice changes in our environment, and as such the sneeze from three cubicles down will necessarily demand a bit of attention to decipher.
Blocking out the noises of the environment is one of the reasons that organizations invest in acoustics. They add sound suppression panels and white noise generators to reduce the chance people will hear the distracting sounds. This is never completely effective—and some organizations don't realize the need to protect flow.
For some, including myself, the answer is headphones. I can play music that I know well and is more instrumental-based than lyric-based. This provides enough coverage that I generally don't hear the distractions, and because it's well-known and not competing with the linguistic center of my brain, it requires no effort to process. Some people, particularly if they've been taught to analyze music, can't do this.
There are certainly arguments that the music can be distracting. However, in my experience, for developers who are forced to be in noisy or chaotic environments, it can reduce interruptions. Additionally, it provides a visual signal to others that someone is attempting to focus and that they should be left alone.
Different people have different capacities for flow. However, it's not neurochemically possible to stay in flow 100% of the time. We need to give our brains time to recover from high rates of neurochemical consumption. Even the best, most productive developers need time when they're not in flow. The key is to create periods when flow is encouraged, and have other times when status meetings and other types of non-flow activities are normally held. By creating flow and non-flow periods of the day, people know what to expect and how to interact with each other in ways that protect productivity.