Building a team is hard, and building a remote team is even harder, given the limited face-to-face time, cultural differences and varying time zones inherit to a remote and distributed workplace.

In this short article, I’ll share my experience building remote teams and the journey that brought a disjointed group of individuals into a cohesive, high-performing technical team.

Quality daily stand-ups

The stand-up is often the one moment of the day when all team members share a common space, so I’ve always tried to get as much as possible from that meeting: For us, it was a time to socialize, plan the workday ahead and discuss upcoming work.

Stand-ups by the book are notoriously bad. Instead, experiment until you find a format that makes everyone comfortable participating; it’s worth trying different options to maximize true team collaboration.

Pair Programming

One of the many benefits of pair programming is that it allows developers to bond and learn from each other. In fact, I believe that implementing pair programming is the single most important thing you can do as engineering lead to increase engagement and performance, whether a team is working remotely or not.

All-hands Demos

We didn’t work in sprints, but whenever we released new work, team members were encouraged to showcase their contributions in company-wide forums, such as in a #shipped Slack channel and all-hands demos. This brought the team closer to other business stakeholders, creating opportunities for developers to feel the importance of their work.

Public Communication Channels

Everyone in the team was strongly encouraged to use public communication channels like our #engineering channel in Slack, instead of direct messages. Centralizing discussions in one place helps eliminate silos of knowledge, allows searching and create togetherness in the team. For those worried about the noise: We used threads ;)

Incidents as team-building exercises

Whenever a production incident occurred, our first reaction was to start a call to bring together all team members, regardless of their their seniority or expertise. Having the entire team united during such calls helped us resolved issues much faster and quickly trained people on the intricacies of our production systems.

Adversity and a ‘common enemy’ brings people together, and the teamwork during these incidents strengthened our mutual respect. For example, when the insights provided by a junior team member eventually helped us to solve one particularly tricky issue.