Live Asynchronously: How Developers Can Unlock Their Best Work

In the fast-paced world of software development, it‘s easy to fall into the trap of constant communication and collaboration. We‘ve adopted an "always on" culture where interruptions from chat messages, emails, meetings, and tap-on-the-shoulder requests are the norm. But this synchronous way of working comes at a steep cost, especially for developers who rely on long stretches of deep focus to write quality code.

The good news is that there‘s a better way – asynchronous work. By embracing async communication and collaboration, we can take back control of our time, attention and energy to do our best work. And as more development goes remote and global, async is becoming not just a nice-to-have but an necessity for effective software teams.

The High Price of Constant Interruptions

Research shows that the cost of interruptions for developers is staggeringly high. A study by the University of California, Irvine found that it takes an average of 23 minutes and 15 seconds to get back to the task after an interruption. Another study by RescueTime found that a developer typically gets just 52 minutes of uninterrupted work in a typical 8-hour day.

All those interruptions add up to a huge amount of wasted time and lost productivity. Gerald Weinberg‘s book "Quality Software Management" even quantifies the cost:

Number of simultaneous projects Percent of time available per project Loss to context switching
1 100% 0%
2 40% 20%
3 20% 40%
4 10% 60%
5 5% 75%

As developers take on more concurrent projects, productivity losses to context switching grow exponentially. By the time you‘re juggling five projects, you‘re losing 75% of your potential productive time!

Frequent task switching doesn‘t just make us less efficient – it erodes the quality of our work. As software engineer Jessica Kerr points out, "Interruptions are to programming what drunk driving is to driving." Developers need to load a huge amount of context into our working memory to hold a complex system in our head. When an interruption comes in, that carefully assembled mental model comes crashing down.

Constant interruptions and time fragmentation also take a toll on developers‘ wellbeing. We feel mounting anxiety from making little tangible progress on projects. We‘re stressed by the pressure to always be available. Long hours online blur work-life boundaries. Burnout is rampant in our industry – a recent Haystack survey found that 83% of developers are suffering from burnout.

The Async Advantage for Development Teams

The antidote to this always-on, interrupt-driven mode is asynchronous work. In an async work environment, communication and collaboration happens intermittently, when it‘s convenient for each person, rather than in real-time. People have more control over structuring their work days around their individual productive rhythms, priorities and constraints.

Async is uniquely beneficial for software development work:

  1. More ‘flow time‘ to solve complex problems. Software development often involves grappling with difficult technical and conceptual challenges. Finding elegant solutions to abstract problems requires deep concentration and mentally juggling many interconnected pieces. Async gives developers longer uninterrupted stretches to immerse in this deep problem solving work. Cal Newport, author of "Deep Work", argues that the ability to perform deep work is becoming increasingly rare yet increasingly valuable in our economy. He also notes that software developers can fully engage in deep work "only in the absence of distraction."

  2. Higher code quality. Developers working in an async environment have the time and space to thoroughly think through design decisions, research and test different approaches, and refactor code before sharing it with others. We can achieve what software engineer Kent Beck calls "serenity in motion" – a state of calm, focused, unhurried activity even when things are rapidly changing around us.

  3. More efficient development cycles. Async workflows enable development teams to keep work moving forward continuously, without being bottlenecked by synchronization points. A developer in an earlier timezone can merge new code, passing the baton to team members in later timezones to keep the momentum going. Many effective development teams have adopted fully async workflows on top of GitHub, GitLab and Bitbucket. Code changes are pushed, reviewed and integrated frequently without the need for real-time coordination.

  4. Better documentation and knowledge sharing. In an async environment, documenting and writing down information is essential to enabling autonomous work. Teams are incentivized to document code in-line, keep READMEs up-to-date, and record nuanced details and decisions in long-form posts. This commitment to documentation has powerful compounding effects. As Joel Spolsky wrote, "Even if you are writing code that only you will ever use, the process of writing comments as you code is useful because it forces you to slow down and think about what you‘re doing."

  5. Scalability across time zones. As development teams become increasingly distributed and global, async is critical to integrating teammates across time zones as first-class contributors. If all decisions and discussions happen in real-time, team members in non-overlapping time zones end up left out and second class. Async communication ensures everyone can participate fully regardless of location – which is not only more inclusive but gives teams access to a planetary talent pool.

Making the Shift to Async Development

So how can development teams make the shift to an async-first culture? Here are a few strategies:

  1. Favor ‘pull‘ over ‘push‘ communication. In the ‘push‘ model of communication, the sender interrupts the receiver on their own schedule – think chat messages, emails, and meeting requests. In the ‘pull‘ model, information is transparently published and documented, and the receiver decides when to consume it on their own timeline. Defaulting to pull-based communication respects the maker‘s schedule and agency over their own time.

  2. Write everything down. Treat documentation and clear writing as a first-class skill, not an afterthought. Capturing information and decisions in long-form writing takes more initial effort than discussing it live, but pays massive dividends by enabling async coordination. Tools like Notion, Google Docs, GitHub wikis, and READMEs become the source of truth.

  3. Work in public. By default, aim to make all work and communications public to the entire team (with obvious exceptions for sensitive legal/HR matters). This could be posting regular updates in public Slack channels, pushing work-in-progress code to GitHub, or recording demo videos. Working in public creates ambient awareness and opportunities for async feedback loops.

  4. Leverage async-first tools. Adopt tools like Loom for async video updates, GitHub for async code collaboration, Figma for async design collaboration, and Notion for async documentation. More specialized tools like Testmo enable fully asynchronous end-to-end testing workflows across distributed teams.

  5. Timebox synchronous interactions. Real-time meetings and chat will still have a role, but should be treated as precious resources, reserved for discussions that truly benefit from live interaction (e.g. fostering human connection, rapid decision-making). Many development teams timebox synchronous activities like daily standups, sprint planning, and retrospectives.

  6. Measure results, not hours. Inherent in async culture is trusting people to be productive without constant oversight. Managers should be highly intentional about the outcomes and behaviors they measure and reward. Fixating on ‘butts in seats‘ hours online sends the wrong message. Instead, establish clear, measurable goals and evaluate output.

The Future Is Asynchronous

As software systems grow more complex and development teams more distributed, asynchronous work will only grow in importance. We simply can‘t expect to tame intricate codebases and sprawling systems while being perpetually distracted and online.

Async is also key to building a more sustainable and equitable industry. Our always-on culture has excluded many talented developers struggling to balance coding with caregiving, health needs, and other life priorities outside of traditional 9-5 office hours. Async expands access to those who have traditionally been sidelined.

For individual developers, async work is ultimately about empowerment. It‘s about having the freedom and flexibility to do our most challenging, creative coding when we‘re at our best – not when we‘re exhausted from constant interruptions.

Personally, shifting to an async workstyle transformed my productivity and wellbeing as a developer. I went from being a frazzled feature factory to a serene code crafter. With more flow time, I could implement robust, well-factored solutions instead of just shipping the first thing that worked. I could balance demanding development work with time for exercise, hobbies and friends. Async gave me the space to bring my whole self to my work.

As an industry, we‘re at a crossroads. We can continue with the default always-on mode that‘s leading so many developers to burn out and walk away. Or we can resist interruption culture and redesign development work around how humans actually thrive. It won‘t be an overnight shift, but moving to an async-first mindset is a powerful step. Our code, our teams, and our lives outside work will be better for it.

Similar Posts