Asynchronous communication

Sourcegraph is an all-remote (All remote guidelines) company which means we work from home or office spaces, but do not have a physical office we all go to together. Moreover, we are also a global company, which means we are spread all over the world. So not only do we not share an office, most of the time, we don’t even share time zones. For this reason, we use asynchronous (async) forms of communication as much as possible and conduct synchronous meetings only when it’s really necessary.

Async simply means that work doesn’t happen at the same time for everyone. Asynchronous communication allows us to move forward and make decisions without having to meet to talk with everyone involved. In this page you will read about why we are async, the tools we use at Sourcegraph, and how we use them. We also explain how we communicate, tips on how to work asynchronously, and how we decide to be or not to be async.

Why async?

We are respectful of people’s time and responsibilities. All of us have different working styles and strategies of being productive. We also have our personal responsibilities and timelines. We need to be conscious that our teammate might be a caregiver and scheduling a meeting might mean they have to choose between work and their loved ones.

We are inclusive. We want everyone to feel they are part of the conversation and give room for them to participate. By scheduling a meeting in which people share an idea and end up making a decision when a team member cannot be there, we risk leaving people feeling excluded and uninformed and we lose out on the valuable input they might have contributed.

We value context. When people default to synchronous communication, decisions are made in meetings with little documentation, relying on tribal knowledge to brief people on why things were done a certain way. This is inefficient and unscalable. Asynchronous communication values documentation, and although this might take more time upfront, it pays off in the long run. Documentation removes ambiguity and blank spots in communication.

We encourage thoughtful decision-making. A great benefit of async work is the time people get to reflect instead of responding in the moment. We often have a better response or contribution to a discussion when we take a step back and think about things.

We care about mental health. Working from home with teammates all across different time zones can set the expectation of being responsive most of the day, making it difficult to maintain boundaries, leaving little time for deep, focused work, and becoming a source of stress and burnout for many people. Async work helps everyone understand that team members could be offline at any time meaning instant replies are not expected. One benefit of asynchronous work can be larger amounts of uninterrupted time, enabling teammates to gain more breathing room to do their jobs well without the constant stress of pivoting and being “on” for others, leading to a more balanced workday and mindset.

We value high agency. Teammates have the power and the responsibility to improve Sourcegraph as a company and as a product. We don’t want people to wait for a meeting to have a conversation that would define their work or depend on someone else’s schedule to be productive. Teammates are encouraged to achieve results when it best suits them without waiting for others’ permission to do so.

We need to. We are a growing all remote, global company. Adopting an asynchronous way of working and communicating is the only way for us to be successful. It is hard and it takes time adjusting, but it is worth it.

How we work asynchronously

The basic flow for decisions is that we use an artifact as a temporary place to have a discussion, and then we update our sources of truth with the outcome.

Artifacts

Async is most effective when there’s a place for communication to occur over time. We use Requests for comments (RFCs), Google Docs, Pull Requests, GitHub issues, and Asana tasks as artifacts.

While decisions can be initiated or discussed in synchronous sessions when it makes sense, making the decision in an artifact helps others to understand the context around the decision and provide feedback or ask questions in a self-contained space. It also avoids requiring people to be in the meetings themselves to participate in decision-making. Decisions discussed in synchronous meetings should be consciously shared with all interested parties, giving them the opportunity to share opinions and objections in the relevant artifact.

Single sources of truth

Even though we use artifacts to communicate over time, it is important to note that they are not sources of truth. They are used during the creation and production process and are extremely rich in context, however, the final conclusion and what we share with everyone else must live in one of our sources of truth and nobody should be expected to read everything in Slack or every RFC to know what's going on. The information in these places is expected to be accurate and up-to-date, and not be repeated in multiple sources of truth (when they need to reference each other, they do so through links).

General tips

One of the hardest things about async work is to be sure everyone who’s affected by your work can see it and knows it exists. Socializing decisions and information with other teams is hard. While artifacts like RFCs are wonderful for the directly involved or affected team members, they’re more things that folks have to pay attention to—or choose not to pay attention to, which still takes time and mental energy. Unfortunately, we can’t always predict what information other team members may need. Think about how you might help other teams find the information they need.