Tracking Flow: The Art of Effortless Development
- We are happiest when we are in flow—an effortless but productive period of intense focus
- By being more mindful of when we are in flow, we can protect our most productive times to be happier developers
Now tell me who can stop me?
I'm in the zone.
In a league of my own.
—Lyrics from In the Zone, by PL
Steph Curry is the latest player to transform the game of basketball.
At 6'3" he's tiny, at least for the NBA. When he enters the zone, he seems to effortlessly sink three-point shots from almost anywhere.
He not only transformed Silicon Valley's Golden State Warriors into NBA champs, but he also disrupted the game for all NBA players and teams. He proved that you don't need to be a big man in the center to win the BIG game.
You can do it from the outside by getting into the zone. And players and teams have been practicing and taking more three point shots ever since.
So what can developers learn from Steph Curry? And what does it mean to be in the zone?
The Definition of Flow
In the 70s, Dr. Mihaly Csikszentmihalyi, a leading authority in positive psychology, defined "the zone" as a state of "flow," which can often be seen in athletes, artists, and developers.
Dr. Csikszentmihalyi studied what makes people happy, and he found that people are happiest when in flow.
We've all experienced periods of effortless focus, when we look up, time has passed, and we've accomplished a body of work. There's a joy in that effortless but productive passage of time and a lingering sense of accomplishment.
So how can developers identify and leverage flow?
Data Behind Developer Flow
Developer live in a digital world filled with digital tools. As a result, we can track data, such as keystrokes per minute, from text editors or IDEs, and visualize them in heatmaps to look for typical patterns of peak quantitative activity averaged across all days. We can also look for patterns across specific days of a week (e.g. week days).
Developer flow is when we do our best development work, which can include collaboration, research, design, architecture, reviews, debugging, and of course coding.
Code flow is a narrower subset—when we are coding most effectively, when we have eyes on screens and hands on keyboards. We can quantify code flow by tracking metrics such as keystrokes per minute, characters added, characters deleted, and characters pasted across work days and weekends.
Why Measure Code Flow?
Flow is when we harness our ability to focus, when we make the best, most effective use of our time to work. By measuring code flow, we can identify our natural focus times during the day.
And by identifying repeated flow bands during the day, we can begin to harness the power of flow. We can purposefully protect time on our calendars and be more mindful of using our flow bands for our most important work.
Humans are cyclical in nature. We have circadian rhythms that affect our sleep times, stages, and quality. And we have natural times of the day when we focus best.
That's why we find advocates that recommend devoting our earliest time in the morning to our most important work. But for developers, who are often night owls, there may be powerful flow bands late in the evening as well.
Flow is the union of happiness, productivity, and work.
Find your flow to become the best developer you can be, and who knows what industry you might disrupt.