How to Defeat the Top 3 Enemies of Developer Flow
- 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:
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.
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?
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.
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.
Then, in order to protect your time against interrupts (at least some classes of interrupts), you can set protected times on your calendar.
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?
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.
Compete against yourself to find your best self. Tracking your data and setting goals can increase discipline and output.
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!