In Part 1 we talked about the benefits of remote work, and ways to successfully roll it out in an organization that is not yet accustomed to having remote workers. In Part 2, we will talk about the tools we use to make remote work *work*.
Asynchronous Communication Tools
Most companies already have a few different ways to communicate asynchronously (does not provide an immediate response). Email and chat (we use Slack) are two prime examples. These tools are fantastic for communications that do not require an immediate response. Chat tools are optimal for short communications, and email is generally a better tool for longer, more detailed communications. Asynchronous communication is ideal when you don’t want to interrupt somebody, and instead would rather hear back from them when they take a break from what they’re working on at the moment.
When working with a remote team, diligent use of these tools becomes even more important. Remote employees miss out on chats around the water cooler, and don’t have the ability to overhear discussions at the next desk. So if a topic can benefit from the entire team’s input, it is important to communicate it in a way that entire team can see it, and respond accordingly.
Moving these communications into email and chat has the added benefit of making them searchable at a later point in time. This can benefit employees that regularly come into the office as well as remote employees. If you take a week off, it is possible to catch up on the discussions that took place and the decisions that were made while you were out by reviewing the written history.
Note that not all chat solutions are created equal. Some organizations rely on chat solutions that only offer one to one communication or ad-hoc group chats. What we find essential is that the chat tool allows for dedicated rooms. These dedicated rooms form a collective conscious that allow team members to be plugged into topics of interest. When chat software only allows for ad-hoc groups, two problems arise. The overhead of setting up the group often prohibits their use and others who are accidentally not invited miss out and can’t contribute. Also, dedicated rooms are very useful for getting information out to a distributed team as they substitute for the in-person equivalent of someone standing up and making an announcement. To put a finer point on it, we find that AOL Instant Messenger type products, supposed “enterprise chat products” like Microsoft Lync, and even Gmail Chat are insufficient because they don’t support dedicated channels. Go with something like Slack, HipChat or even IRC.
The main challenge with asynchronous communication is to recognize when it is a poor fit, and when the conversation needs shift to something more synchronous. Conversations with a lot of back and forth are usually a poor fit for email or chat. They generally move along much quicker, and with less confusion, via a synchronous tool like video chat. Many conversations start out with only a question or two, and quickly evolve into a much larger conversation. When this happens, ditch the chat, and fire up a Google Hangout.
Synchronous Communication Tools
If the communication requires the undivided attention of two or more parties, then a more synchronous (provides an immediate response) form of communication is the way to go. This is the best way to keep the conversation moving along, and save everybody a lot of time in waiting for responses, and minimizing miscommunications.
We use Google Hangouts extensively for video chat. It is a fantastic tool, and free! The video and voice quality is pretty darn good if participants have a decent internet connection. And, if you happen to be using the coffee shop’s crappy WiFi, you have the ability to adjust your quality settings to degrade the video, so the audio continues to come through just fine. It is also trivial for users on the Hangout to share their screens. If you are a Google Apps user, you are able to create persistent hangout links for recurring meetings, like you daily stand-up, and you’re given the ability to prevent people not associated with your organization from joining the Hangout.
Google Hangouts isn’t perfect. Hangouts are limited to 15 connections, which could be a problem for larger teams/meetings. There are also a few bugs, like the one that boots you out of a meeting if Google expires your session. But, for the most part, Hangouts is an excellent, free, tool for video chat and screen sharing.
For remote pairing, we use ScreenHero. ScreenHero (recently acquired by Slack) is by far the best remote pairing tool I have ever used. With ScreenHero, each person in the pair gets their own mouse. This makes a huge difference, as it gives both participants the ability to say “this code, over here”, moving the mouse to the part of the code they want to draw attention to. You can also use your mouse to interact with the host’s screen, as you would if you were pairing side by side with somebody. You don’t have to “pass the ball” or perform some additional step in order to interact with the host’s machine. The audio and video quality is fantastic as well.
Tips for Improving Video Conferencing
Good hardware is important in any video conferencing setup. You want to do your best to make the remote employees feel like they are there in the same room with everybody else, and visa versa.
For remote employees, a good headset with a uni-directional microphone is key. This lets you hear the others well, and the uni-directional microphone limits background noise so the others can hear you well also. Many of our developers use gaming headsets, which work out really well (we use this one or this one).
Conference rooms should be equipped specifically for hosting remote calls. This means a TV, a separate conference camera (we use this one), and, a good multi-directional microphone (we use this one). It helps tremendously for remote employees to see everybody in the room and hear everyone clearly, as they would if there were sitting in the room themselves.
For longer meetings, or meetings that are highly collaborative, multiple camera angles really help. This is accomplished easily in Google Hangouts by having a few people in the room join the hangout and position their laptop camera from a different angle. When there are notes on the wall, or other items in the room that participants need to walk around and interact with, we have a person in the room join the hangout on their mobile phone, and act as a surrogate for the remote employees. This works really well.
Remote Collaboration Tools
Google Docs / Google Drive
Google Drive (Google Docs, Google Sheets, Google Slides, etc) provides an impressive suite of office tools. The apps themselves are responsive, reliable, and full featured. But the true strength of these tools are the collaboration features. It is very easy to invite others to collaborate, either in edit or read only modes. When a collabor joins in editing a document, you are able to see the fact they they have joined, as well as any updates they make, in real time. These capabilities make it really easy to co-author documents, while potentially sitting a world away.
We use Pivotal Tracker for project management. It’s a powerful tool, and is a great fit for our development process. So, why is Pivotal Tracker being mentioned on a blog about working remotely? Because some companies still manage their projects with notecards on a wall. This can be a fantastic way to manage things for co-located teams, but simply does not work for anybody who works outside of the office. The information contained on these cards is important, and it is equally important that everybody on the team have access to that information.
GitHub Pull Requests for Code Reviews
Our source code lives in GitHub. GitHub was built with remote collaboration in mind. There are many features that exhibit this fact. But I just want to talk about pull requests for a moment.
We do code reviews for all of our work. Not only does it give the developer a chance to collect feedback from their peers, it also is an excellent tool for sharing knowledge within the team. We drive our code review process with a pull request. When the developer finishes work on a story, they open up a pull request, and find somebody to review it. The pull request provides a superb visual diff of the changes, and allows the author and the reviewer to go back and forth via comments in the pull request itself. When a section of code that has been commented on has been updated, then GitHub will automatically hide that comment, assuming it has been addressed. This makes it easy for the review to see if all of their comments have been addressed. It is also easy to mention other team members (via @username) not currently involved in the review to call their attention to a certain piece of code. This back and forth continues until the reviewer signs off, and sends the pull request to one of our QA engineers for testing.
While good tools alone cannot make a distributed team succeed, bad tools will certainly make a distributed team fail. It is very important that you find a great set of tools. New, better tools are always coming along. So, always keep an eye out and an ear open for new tools to make remote work even easier. The best is yet to come, I’m sure of it.