1 Comment

Tools & Practices for Remote Teams, Part 1 – Be Prepared

Two developers standing in front of a large monitor, having a remote video call with two other developers.

In this two-part series, I’ll be writing about the day-to-day realities of working as part of a remote team, and some tools and practices you can use to help keep your team healthy and effective. Even if you’re not involved in a remote team, you’ll find much of this advice to be beneficial for co-located teams as well.

For a higher-level perspective on remote teams, be sure to check out Shawn Crowley’s advice for organizing and managing remote software projects.

If anyone is remote, you’re all remote.

When you imagine a “remote team,” you might picture team members scattered across the country, or even around the world: one in Chicago, one in Denver, one in Rio de Janeiro, one in Mumbai, one in Berlin, etc. But your team doesn’t have to be that distant from each other to be “remote,” nor to benefit from this advice. For example, Atomic Object’s Detroit and Ann Arbor offices are a mere 45 miles apart, yet we’ve found these tools and practices hugely beneficial for inter-office collaboration.

A “remote team” also doesn’t have to be completely spread out, one person per location. Do you have 9 team members working from one location and just 1 working from another location? Congratulations, you are a remote team! Regardless of whether your team is spread evenly across multiple locations, or mostly concentrated in one place, every team member is remote from at least one other team member. So, you had better act like a remote team — otherwise, you’re inviting communication failures, low team cohesion and morale, and other disasters.

In fact, even if everyone in your team works in one location now, it might make sense to act like a remote team anyway. Perhaps one of your team members is a new parent and will be working from home two days a week. Or maybe a team member is married to an active-duty service member, and might need to suddenly relocate before the end of the project. These sorts of situations could be major logistical challenges if your process relies on being totally co-located, but they’re no sweat if you’ve been acting like a remote team anyway.

Get the project infrastructure right.

Every team, whether co-located or remote, is more effective and productive if they have useful and reliable infrastructure. For a software project, infrastructure typically includes things like a story tracker, source code repository, continuous integration or build servers, deployment scripts, and so on. And don’t overlook one of the most important pieces of infrastructure: a solid connection to the internet!

While co-located teams benefit from it, good infrastructure is vital to remote teams. If a co-located team’s infrastructure is unreliable, they might still be able to get things done through face-to-face conversation, sticky notes, and other low-tech means. But if a remote team’s infrastructure is unreliable, you’re in a lot of trouble. Suddenly team members can’t communicate. They can’t check in their code. They can’t find out what needs to be done next. Calamity ensues.

Don’t let this happen to you! Invest the time and resources to establish project infrastructure that is reliable, redundant, useful, and usable.

Get the right project infrastructure.

It’s also important to realize that remote teams need different kinds of infrastructure than co-located teams. A set of tried-and-true tools and practices that work well for a co-located team, won’t necessarily be effective for a remote team. For example, a typical remote team might need:

  • Distributed version control, so that team members can work effectively entirely on their own computers without being completely dependent on a potentially slow and unreliable connection to a central server.
  • File sharing to quickly and easily pass around screenshots, log files, work-in-progress code, and other files that are only needed temporarily, or that don’t really belong in the source code repository.
  • Audio and video chat for having “face to face” conversations when desired. Communicating only through text can feel depersonalizing or isolating after a while. Video chats are a good way to remind our social brain about the real live human being at the other end. A quick video standup meeting with the whole team each day does a lot to help the team feel connected with one another.
  • Screen sharing and/or a shared terminal for remote pairing. If you regularly pair program (or pair design, or pair whatever-it-is-you-do), then it’s vital to get this right. A sub-par solution can make collaboration unbearable. Experiment with many different tools, then choose whatever works best for your way of working.
  • Persistent chat rooms as shared spaces for collaboration, as well as “water cooler” chit-chat. Persistent chat means the transcripts are preserved online, so you can catch up on anything you missed while you were logged out, or look back and remind yourself about the outcome of a discussion last week.
  • Online whiteboards for collaboratively sketching diagrams, flow charts, mind maps, wireframes, and other things of a visual nature. If your team does this often, it may be worthwhile investing in a graphics tablet or touchscreen device for each team member. Sketching with a mouse or trackpad is quite awkward, believe me!

Of course, different teams and projects will have different needs, so it’s important to tailor the infrastructure to suit your specific team and project.

Next time: Day-to-day Practices

In part two of this series, I’ll be writing about day-to-day practices for healthy and effective remote teams.

In the meantime, leave a comment below to let me know your favorite (and least favorite!) software tools, sites, and services for remote collaboration!