On Flow

Somehow, we have neglected to talk about one of the most important ideas in doing satisfying, productive work: flow. Let’s cover the basics of:

  1. what flow is,

  2. how to achieve it,

  3. how to sustain it.

What is flow

Flow is a state of active, energized engagement with an activity. Some people describe the same state as “being in the zone”; time slips by unnoticed as you keep surmounting obstacles and achieving your objectives. Sounds pretty great, right? Imagine cruising through your workday, or your to-do list, with exhilaration instead of trudging monotony. While some people seem to fall into this state habitually while others struggle, it is not just a hereditary superpower; predictable and controllable preconditions enable finding a flow state.

Getting into flow

Owen Schaffer proposed 7 key factors in a 2013 paper:

  1. Knowing what to do

  2. Knowing how to do it

  3. Knowing how well you are doing

  4. Knowing where to go (if navigation is involved)

  5. High perceived challenges

  6. High perceived skills

  7. Freedom from distractions

It is easy to be reductive about that list: “oh, all I have to do is totally understand my goal in every way and then just do what feels right? Thanks.” But really, it can be condensed into a shorter and more tractable version which gives more guidance:

  1. One must be involved in an activity with a clear set of goals and progress. This adds direction and structure to the task.

  2. The task at hand must have clear and immediate feedback. This helps the person negotiate any changing demands and allows them to adjust their performance to maintain the flow state.

  3. One must have a good balance between the perceived challenges of the task at hand and their own perceived skills. One must have confidence in one’s ability to complete the task at hand.

    (Source: Handbook of Competence and Motivation)

If you want to get into a flow state, you should arrange ahead of time to have well-understood:

  1. Goals (how do you know when you are done?)

  2. Feedback Mechanisms (“hotter or colder”, are you moving toward or away from the goal?)

  3. Skills to apply (what are my options here?)

Notably, this pre-planning problem is amenable to it’s own approach.

  1. Its goal is to have an evaluable goal (knowing when you have completed it) and skills to apply against the goal that are exhaustable (you know when you have tried everything and need to find new skills or adjust your goal).

  2. Its feedback mechanism is specificity of predictions (“when X happens or at 5PM tomorrow, I will know this problem is achieveable or not”).

  3. Its relevant skills are time and work estimation.

Let’s work an example. Say you want to make an Android app that does something basic, like logs your progress in reading new books. (For a reason, all existing apps won’t do the job for you.) You need to do the preplanning to build a flow state during the actual work:

  1. Plan out the specifics of what features need to be in your app to be “done”. What does the interface look like? What are expected behaviors? (a goal)

  2. Identify what tools are at your disposal. Are you already familiar with Java and Android development? If so, plan out specific subtasks: getting the right development kit, what version control will you use, how will you distribute your app or measure “progress” reading. This is where you create specificity to enable flow in the work itself.

  3. Estimate: is this practical in the amount of time you have allotted? Is the road from your skills to the goal measurable, so you know when you are getting closer, moving farther away, or spinning your wheels? If the road is not clear, you may not have the skills you need (making flow in the work impossible) and you might be better served in acquiring those skills. (Note: that, too, is a flowable job!)

Objectives, feedback function, and skills in hand, you can dive into the actual app development itself by conquering subtasks: installing all the relevant software, mocking up interfaces, building the data storage, etc. If a particular subtask is too big to be tractable or underdefined, (for example you discover that learning Java is not a single-afternoon activity,) revert to the planning flow to make the task tractable or reevaluate the activity. In this model, there is an approach for everything, and the “next step” is always clear; no getting lost in the labyrinth and hoping to stumble on the path, which is stressful and agonizing.

How to stay in flow

So you’ve stabilized your plan/execute approach, and can work on achieving flow. Wonderful! There are a few known speedbumps that can knock you out of flow: boredom, apathy, and anxiety.

Apathy is linked to low challenge levels matched with low skill levels and a seemingly-unimportant goal; this might be mitigated by contextualizing the goal to demonstrate importance.

Boredom stems from high skill levels applied to a low skill task; even if the goal is desirable, no one likes doing something tedious. Investing in automation tends to be your friend here.

Anxiety is the trickiest: when you are in over your head, and your skills are insufficient for the task, anxiety naturally crops up. Taking a step back, and investing in the skills to get up to the task, is the best way forward.

After dodging these common traps, most of the job is biting off right-size pieces to work on, and maintaining a sense of progress. This is an iterative process; when things are not working well, step back and adjust! Your life will be much more pleasant as a result.