Developer’s job is one of the most mentally demanding jobs. Developers work with complex algorithms, juggle multiple things in their short-term memory and do many other mental operations to write code, and any interruption can cause these details to come crashing down. To operate effectively, they need to be focused and concentrated every second or, if lucky enough, work in the state of flow.
Also known as “the zone,” flow is a mental state in which a person is fully immersed into the activity at hand while experiencing a feeling of energized focus and enjoyment. It’s a magical feeling when your knowledge, motivation and concentration align to produce maximum performance. If your developer team hardly if ever works in the state of flow, it means that you need to review your workplace policies and management approaches.
In this article, we’ll dwell on the flow state phenomenon, review workplace trends that prevent your team members from working in the flow and provide a list of advice on how to help developers deliver maximum results.
The flow state was introduced and popularized by Mihaly Csikszentmihalyi – a positive psychologist and author of the landmark Flow: The Psychology of Optimal Experience. He defines flow as an “optimal state of consciousness where we feel our best and perform our best.” It is characterized by the state of deep focus where you lose track of time and make the best of your skills with little to no effort. People who have experienced flow describe the following feelings:
- Focused and concentrated involvement in the activity
- Ecstatic feeling of being outside everyday reality
- Clarity about what to do and how to do it
- Confidence in your skills
- A sense of serenity
- Time flies by very quickly
- Inner motivation to deliver results.
Thanks to modern neuroscience, we know that during the flow state, the human brain produces pleasure-inducing and performance-enhancing chemicals that enable us to better process information and enjoy the activity. According to Steven Kotler, executive director of Flow Research Collective, a study done by the Flow Genome Project revealed that flow state increases creativity by 500–700%.
Benefits of the flow state can be summarized as follows:
- Improved learning and skill development. The flow state is attainable only if activity requires better skills, posing positive challenges and providing opportunities for growth.
- Enhanced performance. A 10-year study showed that people in the flow state were 500% more productive.
- More creativity. According to a study conducted at the University of Sydney, the state of flow increases creative problem solving.
- Increased engagement because people in the flow state are more immersed into their activities.
- Greater enjoyment and fulfillment. Working in the flow state feels effortless and rewarding, which increases satisfaction.
- Enhanced intrinsic motivation. Enjoyment brings intrinsic motivation to do things for internal rewards.
Now imagine if you could achieve all these benefits with your team: it would improve employee satisfaction and increase productivity several times! But in reality, modern workplaces and management approaches pose multiple obstacles preventing teams from working in the flow.
Workplace is the biggest flow killer. Studies show that an average employee experiences about 87 interruptions per day or spends only 3 minutes on a task before being interrupted. Another study conducted at the Georgia Institute of Technology revealed that it takes an average of about 25 minutes to return to the original task after an interruption. If we put this data together, we’ll get the following graph illustrating concentration trends of an average worker.
If you ask developers, one of the most annoying things for them is getting interrupted in the middle of a difficult task. A famous cartoon strip by Jason Heeris illustrates what happens inside the mind of a developer who has been distracted.
Joel Spolsky, a co-founder of Stack Overflow, once said: “Productivity depends on being able to juggle a lot of little details in short-term memory all at once. Any interruption can cause these details to come crashing down. When you resume work, you can’t remember any of the details (like local variable names you were using, or where you were up to in implementing that search algorithm) and you have to keep looking these things up, which slows you down a lot until you get back up to speed.”
The number two reason why developers don’t achieve the flow state is that they interrupt themselves. Some studies suggest that self-interruptions like task-switching are more disruptive than external interruptions. Some sources, along with Joel Spolsky, claim that programmers get just one uninterrupted 2-hour session in a day.
I feel a little bit guilty when I see how hard everybody else seems to be working, and I get about two or three quality hours in a day, and still I’ve always been one of the most productive members of the team. – Joel Spolsky, co-founder of Stack Overflow
And number three reason that gets in the developers’ way of achieving the flow state are managers and their management approaches. But before we dwell on practical advice for managers, let’s see what things prevent people from getting into the flow state.
Flow is a state of consciousness on the verge of mental arousal and control. It takes about 15-25 minutes of undivided attention to reach it, but it doesn’t happen every time and if it does, distractions break it in seconds. Many developers hardly ever reach the state of flow if they are distracted by the following anti-flow emotions: anxiety, worry, anger, apathy, boredom, relaxation. Let’s see some examples of events and circumstances that cause these emotions:
- Worry and anxiety caused by unrealistic task estimates and deadlines.
- Being upset by personal or professional issues. For example, working in a company that doesn’t provide fair rewards and doesn’t understand the needs of the employee.
- Not being interested in a task or a project because it’s not challenging enough.
These unbalanced circumstances can take away energy (This work is so repetitive, I don’t feel like learning anything new at all. I don’t know how to do it.), focus (I can’t concentrate with that chit-chat in the background. I can’t stop thinking about that nasty comment of my colleague’s) or clarity (What do I want this to look like? It’s more complicated than it looks, can I actually get it done?). So, they can be summarized as follows:
- Clarity killers: fuzzy goals, unclear expectations, sketchy plans, feeble time planning.
- Focus killers: overwhelm, inner and environmental distractions, interruptions.
- Energy killers: boredom, anxiety, impatience, exhaustion.
To identify issues preventing your team from working in the flow, you can refer to the following flow model. According to Mihaly Csikszentmihalyi, if the challenge of a task is roughly equal to the skill level of the person executing it, it creates the best circumstance to achieve maximum productivity and get the most enjoyment and satisfaction from the job.
Ask your team of developers to identify the point on the graph that most resonates with how they feel about their work. If they put their point in the top left corner, it means that they are anxious or stressed, so they need to improve their skills to get back to the Flow Channel. If their point is in the bottom-right corner, you need to assign them more difficult and responsible tasks so that they could work to their potential and grow.
“Usually people will fall into boredom because their skillset has increased. They’ve taken a leap forward, they’ve learned a lot. Maybe they just shipped something or conquered an obstacle, and now they don’t feel like they’re being challenged,” – Dr. Cynthia Maxwell, Engineer at Netflix.
Hold one-on-one meetings with each team member to discuss their flow chart results and work out individual and major improvements in workload distribution, workplace policies, time and project management of your team. Hold these interviews regularly, let’s say every three months, to review the trends and review the performance of introduced improvements.
Let’s see what you can do as a manager to help developers work in the flow state more often.
Many managers make the same mistake: they push their team to perform better instead of creating conditions and environments necessary for employees to perform at their best. Instead of putting figures and performance metrics first, you need to prioritize employees’ needs and quality performance will follow. High productivity is not a goal but a consequence of a wise management strategy that meets the interests of both parties.
“The question is: how to get your team more into their work, not get more work out of them” – Dr. Cynthia Maxwell, Engineer at Netflix
Since we put all the flow killers into three groups, it means that we’ve identified the three essential components of the flow state. Let’s see what managers can do to prevent flow state killers and provide developer teams with maximum energy, focus and clarity.
Clarify priorities. Update your team on the project progress and priorities regularly. Emphasize how individual developers contribute to the project development and what their priorities are inside their work scopes.
Set realistic goals. Managers are not business speakers: your task is not to give inspiring speeches but to set realistic expectations for your team. Use previous performance data to plan their workload more accurately.
“People want to work for a cause not for a living.” – Cal Newport
Ensure visibility and transparency. Foster close collaboration and boundless knowledge-sharing to avoid silos, roadblocks and project delays. Implement time and project management systems where each member of your team can review project progress and collaborate.
Match challenges with adequate personal skills. According to the Flow theory, if the gap between the challenge and ability is too broad, people get anxious and stressed. If stressed for an extended period of time, employees tend to burn out. So, assign challenging tasks to those developers whose skills match the complexity of the challenge or a little bit lower than required.
Create knowledge-sharing repositories. Start a community-based repository where developers can share their knowledge and answer FAQs. This will reduce the number of workplace distractions and provide a means to get information without interrupting the flow.
Break work into smaller chunks. Too big tasks that last week after week may feel overwhelming to your team members as they don’t feel like they make any progress. Instead, break them into manageable sub-tasks.
Consider Scrum methodology. Scrum has several advantages over Agile development in terms of achieving the flow state. It fosters self-organizing teams and immediate feedback through daily stand-up meetings.
Hold daily stand-up meetings. Stand-up meetings provide transparency and involve social risk, which is a positive stressor pushing the performance limits of individual developers.
Build collaboration. Allow developers to share problems that are upsetting or causing anxiety. Encourage collaboration and knowledge sharing to eliminate knowledge gaps and foster communication.
Introduce positive stress – situations that feel stressful in a positive manner: developers feel like they can handle it, despite feeling challenged. These stressors should be short-term, energizing and lie within our coping ability. For example, social stress at daily stand-up meetings: providing no task updates a few meetings in a row feels bad but motivates to achieve results.
The Yerkes-Dodson law graph illustrating the relationship between the optimal state of arousal and optimal performance
Don’t use KPIs. KPIs are one of the most annoying things for developers. And it’s not surprising because KPIs cause long-term stress that causes negative stress and negatively affects performance.
Have no meeting days. Set a day a week without meetings to guarantee developers uninterrupted time to focus.
Support group diversity. Different-minded teams pose positive challenges generating a wider variety of approaches to problem-solving and fostering innovative thinking.
Design a better working environment. Establish guidelines that regulate distractions and distraction-proof time in the office.
Encourage developers to record their trains of thought or document their code after they get interrupted.
Take care of developers who feel unsafe or judged. Members of minority groups who feel unwelcome or unappreciated will struggle to concentrate and won’t be able to reach a state of flow.
Offer flexibility but set boundaries. Respect the individual rhythms of your employees by encouraging them to control their time and manage their energy. Offer flexible working hours, personalized working spaces and more but set boundaries.
Reduce micromanagement. Micromanagement breaks the morale, introduces unnecessary interruptions and kills proactive attitude. Instead, give developers space to manage their resources and show their skills.
Encourage self-leadership. Create an environment where everyone is allowed to contribute their expertise at any given time to encourage group flow.
The greater the decision-making power of an employee is, the greater his commitment to his role will be. This will translate into increased levels of performance and job satisfaction
Incorporate immediate feedback. Constant feedback assures that developers are on the right track and gives them specific ways to stretch their limits — just the kind of balance that can produce a flow state.
Provide meaningful and personalized recognition. Write personal notes, express verbal recognition, motivate developers with financial incentives.
Allow employees to innovate and to explore without fear of making mistakes. Mistakes are not failures but opportunities to learn and innovate. Allow this kind of risk where possible.
Encourage equal participation. Group flow is more likely to occur when team members play an equal role and have comparable skill levels. If one of the team members shows dominance or arrogance, group flow is blocked.
To summarize, effective project management that encourages individual and team flow involves trust and encourages developers to be proactive, take the initiative and offer solutions. It includes knowledge sharing, feedback, collaboration and rules out ego, dominance, arrogance, micromanagement and KPI. Effective project manager creates an environment where goals and needs of developers and stakeholders are met in a balanced manner and uses tools to keep track of what’s going on in their team.
If you are looking for a flow-friendly time management solution, consider actiTIME – software that makes productivity tracking effortless and stress-free. actiTIME won’t bother you with pop-ups or annoying notifications and provide you with three different modes of recording working hours: web interface, browser extension and mobile app. In actiTIME, managers can build custom workflows and complex projects, calculate payrolls and project costs, manage remote worker and employee absences. Explore the whole set of features with a free 30-day trial or request a product demo to get a product tour and find out if it’s a good fit for your needs.