Dec 01, 2019

How to Defeat the Top 3 Enemies of Developer Flow

TL;DR

  • Interrupts (enemy #1) scramble the delicate context and cognitive state required to code
  • Meetings (enemy #2) eat more time than scheduled, fragmenting time around them
  • Inertia (enemy #3) needs to be overcome in order to get coding
  • All 3 top enemies can be defeated by visualizing and acting on the right data

Facebook is a testament to the power of software, both for good and for bad. Software has never been more important in the world.

Just look where it's landed Mark Zuckerberg:

zuckerberg swarmed
Source: The Verge

In order to create software, developers need the right tools, skill sets, and time to concentrate—time to load context before generating code.

It's a delicate, logical, painstaking craft.

We've all experienced flow, an effortless state where you look up, time has elapsed, and you've completed a significant body of work. Flow is the wellspring of great code. But there are many enemies of flow.

Enemy #1: Interrupts

Luckily most interrupts aren't as dramatic as testifying before Congress or this scene from The Social Network, when Eduardo Saverin smashes Mark Zuckerberg's computer.

Zuckerberg computer smash

But subtle interrupts can be just as disruptive to the cognitive state required to code, scrambling the logic we've carefully loaded in preparation. For instance, how often do you get interrupted by Slack or other messaging apps? Or by co-workers passing by, like in the post below?

Interrupting train of thought
Source: Jason Heeris

Enemy #2: Meetings

Meetings are another obvious enemy of flow, but what's not as obvious is their total impact beyond the allotted time, as illustrated in the post below.

meetings
Source: Reddit

As a result, Facebook's "No Meeting Wednesday's" has become popular with engineering organizations that embrace developer productivity.

But do we only care about coding one day a week? And how much code do we really create during standard work hours, when meetings are most frequent?

Enemy #3: Inertia

Writing software is hard. There's always more to research, more to learn. How do you balance time spent learning versus coding itself?

In addition, real focus requires effort. Maybe you need a water break or a little snack for energy...so you can finish checking all your email first. Or maybe you should wait until after lunch to get started, since lunch is only thirty minutes away, if you decide to have lunch early...

At times, the enemy of code flow is yourself.

It takes willpower and discipline to break down total work into a small, actionable units of work, so you can get coding right away.

Protect From Interrupts

Understanding flow is the key to coding smarter, not harder. Luckily elements of flow leave a digital footprint we can capture and analyze.

If you track your coding activity, like keystrokes, characters added, and characters deleted, you can begin to plot it across days and weeks. With enough data, you can build a heatmap to see patterns of when you typically achieve code flow.

heatmap

Then, in order to protect your time against interrupts (at least some classes of interrupts), you can set protected times on your calendar.

protect code time

Code Before Meetings

In addition, if you collect data about meetings, you can begin to build a picture of your meetings versus code time. And you can see if increases in meeting time are 1:1 trade offs for code time or if meetings have an even bigger impact on code time than the time scheduled for meetings themselves.

Does your company make it easy to code at work?

Or do you inevitably eat into life—coding at nights and on weekends when you have fewer interruptions?

work life balance

Overcome Inertia

Finally, do you need a little extra motivation? Are you collaborating a little too much around the water cooler, or do you need a little less time on Facebook?

If you record and plot your own data, you can quickly see if you're tracking above or below your average for any given day or week.

inertia

Compete against yourself to find your best self. Tracking your data and setting goals can increase discipline and output.

Quantified Coding

Software is transforming the world.

Our software matters and so does the data about how we develop software. Recording and visualizing developer data can help defeat the enemies of flow.

The faster we learn and improve, the faster we can help change the world—hopefully for the better.

It's Code Time

Want to see what you can learn from your data? You can track your data yourself, or you can let Software do it for you, for free. Join us on our journey for data and answers.

Let's improve the craft and make the world a better place. It's Code Time!

Want to get more of these in your inbox?

Subscribe for weekly updates from the Software team.