Here are some of the things I've observed that seem to make distributed teams effective and successful.
For distributed teams to really thrive, communication needs to always account for if someone is not immediately able to consume or respond to it. Tools like Slack help with keeping a log of conversation, and tools like GitHub Issues are great for project discussion because every discussion has a URL that can also be referred to later or linked to in other discussions.
This doesn't mean that communication should never happen synchronously. Of course there are lots of times when a synchronous conversation is the simplest and clearest way to talk through something.
The key is being able to distill that conversation into outcomes and a summary, and then post it somewhere for others to refer to who may not have been present for the discussion. This applies both for project type meetings and regular design team syncs or design reviews.
This type of async by default practice can really help keep remote team members feeling aware of context at all times.
It's important to truly give people permission to feel free to miss out on synchronous meetings and communication.
One of the biggest benefits of being a distributed team member is the potential freedom to maintain a level of focus that is often not possible in co-located environments. However, that focus is only acheived if the distributed team members have the freedom to go "headsdown" and ignore synchronous signals or meetings whenever needed.
The benefits of being remote also go with the burdens of being remote, and one of those burdens is often feeling the need to be on top of all the communication – which is often an impossible standard to aim for. For team members to really feel successful and effective, they need a real freedom to skip synchronous meetings as much as necessary to maintain their focus.
Sort of building on the asynchronous by default theme, tooling that really facilitates remote collaboration is critical. As mentioned above, keeping team chat on a platform like Slack helps to ensure conversations can be revisited after they've happened. Driving project conversations to a centralized place like GitHub issues helps to make key context easily referencable later. And there are even tools like Jell that allow teams to practice asynchronous daily stand-ups and maintain a high level of visibility into what each other is doing.
The key is to maintain a consistency with the tooling, and ensure that everyone – whether co-located or remote – is using the tooling in the same way.
Something that can easily happen with remote teams when there is also a strong co-located team presence, is that remote teams might not feel as included in the team culture as remote team members. This is normal to a degree, especially as co-located team members have the opportunity to talk and build personal connections in the space and time around work.
But there are some things that can be done to help cultivate the inclusivity for remote team members, such as:
- a regular (weekly or bi-weekly) team sync which includes everyone on a video call
- frequent team events where remote members can join in the same physical space (like a team summit a couple times a year)
- an HQ travel policy that allows remote team members to travel to HQ to work with co-located team members regularly (at GitHub I did this about quarterly)
- Special stipends or perks for remote team members that help them feel included in the fun of office life, like a snacks perk or co-working space budget