Asynchronous remote work

This page contains some of my personal processes, tips, guidance, advice, etc, regarding working and collaborating remotely and asynchronously.

Working asynchronously means collaborating with a team while not necessarily being online or performing work at the same time of day. The goal is to ensure team members have everything they need to complete their work without requiring other team members' immediate availability.

Async work happens in a way that allows flexibility for when and how people contribute their piece of the team's work. It's benefits are many, both in terms of productivity and personal life benefits that flexibility provides.

At the core of all if this is a strong belief that the best work is done by people who are happy and healthy. People are more important than work, and keeping individual needs (both your own and your teammates') at the top the priority list is step 1. Async work, when executed well, allows people the flexibility to establish routines that maximize their wellness, and as result, their productivity as well.

Remote vs Async

Working remotely means you are able to complete your work regardless of your physical location. Working asynchronously means you are able to complete your work regardless of what time of day you get it done.

While remote work and async work generally go hand in hand, the two represent different ideas. It's my belief that successful remote work relies heavily on your team's ability to get work done in an async-friendly manner as well.

Prerequisites

There are a couple things that have to be in place to enable async and remote work for a team. The primary concern is proper tooling.

Remote access to systems and shared tooling.

If a person is going to be able to work remotely or asynchronously, they need to be able to access the systems required to do that work outside of the office. For certain companies this means having VPNs established for access outside of their internal network, and ensuring all tools are web accessible.

Communication beyond email and phone calls.

Email and phone calls can go a long way for remote work, but to really get the async part of this handled well, a wider variety of communication channels must be embraced by your team. Email, video chat, Slack, and Google Docs are the baseline here.

Challenges

Knowing the status of shared work.

If you're going to get work done without guarantee that any colleagues will be available to answer questions or provide guidance means you must know what your immediate responsibilities are, and what work is in progress by your team mates.

The availability of this information, and information in general, without reliance on a person being available to deliver it, is a central concern for effective asynchronous work.

Making sure your work gets done.

With so much flexibility in the when and how your work gets done, it can be easy to let things fall by the wayside and assume your teammates will hold you accountable. Figuring out how to accomplish the work you are responsible for is a personal challenge that all members of remote and asynchronous teams must establish for themselves.

Knowing when people are or will be available.

As much as we'd like it, not all work can be done asynchronously. If face to face time (in person, or digitally) is required for a real-time discussion, either between two individuals or as a whole team, knowing who is available at any given time window is important for scheduling those conversations.

Even simply knowing whether someone is online right now for a quick chat is helpful. This is another piece of information availability to establish.

Ensuring engaged and productive discussions.

Strong teams are able to collaborate effectively, and this means having productive discussions about team efforts. These conversations are almost always best had during a meeting with everyone engaged, but can also happen using the right combination of creative communication/collaboration practices and tooling.

Establishing and maintaining team cohesiveness.

Remote teams already struggle with social connection and cohesiveness due to a lack of face to face interactions. Making more of your work async means you're lowering the amount of digital (real-time) social connection even more. Strong teams need a high level of cohesiveness to maximize their potential. Being intentional about this is required.

Principles

These are the foundational principles that should underlie the decisions you make when determining your team-wide and personal async work patterns, and while performing async work.

Communication permeates everything.

In order for teams to operate well, they must be able to share and discuss relevant and timely information to one another. It's worth spending time thinking about how to improve the quality and effectiveness of your team's communication practices. This includes tooling, processes, and culture.

Maximize the availability of information.

In order for a team to operate asynchronously, information must be available to any team member regardless of the immediate availability of other team members. Ensuring information is high quality and easily discoverable prevents blockers and can be a major force multiplier.

Clearly defined goals at every step.

Shared understanding is an important element of effective async work. A team is a group of people working towards a common goal. If those common goals (whether at the product level, or task level) aren't clearly understood and agreed upon, friction and churn can occur.

Make sure desired outcomes are documented and referred to often. Meeting agendas, task descriptions (JIRA tickets, GitHub issues, etc), broad work streams, etc, should all have desired outcomes included.

Intentional collaboration in a variety of forms.

Traditionally, when people think of collaboration, it's two people working together in real time, likely in person. The underlying goal of async work is creating collaboration without requiring real-time interaction. Spend time thinking about these non-standard collaboration models, including when and where they are best employed.

Timeline awareness.

Working asynchronously allows you to detach yourself from the typical work day schedule, but some tasks are still very time sensitive. When operating asynchronously, if a task has any sort of time sensitivity attached to it, making that clear is important.

Empowered team members.

Trust and compassion.

This one cannot be overstated. We are all human, and working well together requires that we have trust and compassion for one another. Trust that your team mates are going to hold true to their responsibilities. Have compassion when life hits hard, or when someone is simply having a rough day. These things have a way of resolving themselves, and if they don't, there are better ways to address them than throwing around blame and mistrust.

Team Processes

Teams cannot operate well unless they have practices and tooling that they all agree upon and that works well for them. Copious amounts of thought and intention should go into these processes. Questioning and tuning them frequently is also recommended. If something isn't working well, work with your team to adjust accordingly.

Meetings: maximize value, minimize quantity.

Every meeting that a person must attend takes away from the benefits of flexible asynchronous work. That said, meetings are crucial, and face to face time (even over video chat) is important for a number of reasons. Think carefully about what real value your team gets from these meetings.

Visible and informative work streams.

As work is agreed upon and prioritized, it should live in a single place that efficiently communicates the breakdown of tasks and their current status. Typically a work tracking system like JIRA is where this takes place, but it can take other forms as well (GitHub issues, Asana, and many other collaborative GTD tools out there).

The goal is to ensure that every team member (and possibly even stakeholders) have a single place they can look to see the current status of work, and what work tasks are available next so individuals can stay productive without needing someone to tell them what to do.

Keep calendars up to date and detailed.

Without the guarantee that your team mates will be on at a given time of day it's hard to know when someone would be available for a quick chat, or for a meeting you're trying to schedule across the team. With properly maintained calendars, messy and long-lived scheduling emails and slack messages can be avoided.

If each member of the team keeps their calendars up to date with explicit blocks for when they are and are not available, scheduling becomes a matter of looking at each person's calendar and choosing the right time block. Disputes can be worked out after the fact, instead of blocking the meeting initial creation of the meeting.

Stay aware of time zones.

It's possible that a remote team is spread across several time zones, sometimes so much so that simultaneous work hours rarely line up. This is a big challenge, but can be managed.

Awareness is the key here. Being able to quickly know a person's timezone or current time allows other team members to make the right communication and scheduling decisions. Features that actively broadcast availability such as Slack statuses, Do Not Disturb features, and having working hours set in your calendar are also helpful.

Proactively identify and eliminate blockers.

Blockers are the absolute killer of asynchronous work. During a normal work schedule, if you encounter a blocker on your task, chances are you can just go talk to the person responsible for that blocker and figure out a way forward. If you're working remotely and asynchronously, that may not be an option. Spending time to identify potential blockers early can pay dividends.

Document everything.

This goes back to the principle of information availability. Without the guarantee of available team members to ask questions of, documentation can be the saving grace when someone encounters an unknown in their task. If they have questions they need an answer to before proceeding in their work, that becomes a blocker.

If the person with the needed information takes time to document that information, the blocker is avoided, and the additional time required of the person with the information for answering questions is eliminated.

High quality documentation is difficult to achieve, and a topic all on it's own! But it's an important area to invest in as an async remote team.

Have processes for "capturing".

If you're anything like me, thoughts and ideas will invade your mental space at any time of the day with no regard for what you were in the middle of. Sometimes the ideas aren't that important, but when they are, it helps to have a way to quickly capture that thought so you can move back to what you were doing with minimal friction.

Agree upon ways your team will capture things -- work tasks, ideas for discussion, etc. Each of these should have a bucket they can be quickly dropped into as they arise. Google docs are great for this, or even Slackbot reminders aimed a team channel.

Rotate on-call or "available" team members.

Making as much of our work async friendly as possible is the goal. However, some work will have to be done during business hours. Things come up such as urgent questions, investigations and triaging situations, production issues, which all require immediate engagement, which flies in the face of async work.

Consolidate "be available" responsibilities like investigator and on-call, and establish a regular rotation. This sets the expectation that a person will be doing more synchronous work for their time in the rotation, and let's the team (and possibly other stakeholders) know who that available person is.