Since starting at Atomic, I’ve had to use remote pairing on several occasions to work with developers who were not co-located with me. I wanted to give an overview of some of the different tools I’ve used for remote pairing and what I like/don’t like about them.
Skype is hardly a sophisticated remote pairing tool. It offers nothing more than voice/video chatting and simple screen sharing. Despite its limitations, however, I’ve found it invaluable for remote pairing. Most other tools don’t attempt to solve the problem of voice chatting while sharing an editor, a necessary component of pairing. This means that almost all of the other solutions involve using skype or some similar software in some capacity. Skype screen sharing can also be sufficient for debugging simple code issues with a remote pair, where seeing the code (but not necessarily interacting with it) may be sufficient.
Wemux is a tool that simplifies using multi-user tmux to share a terminal session over SSH. Wemux is a really great baseline tool for remote pairing because it allows simple sharing of a terminal (including an editor like emacs or vim). Oftentimes, this is the only thing you need for a remote pairing session. Wemux deals well with slower or higher latency connections, and it’s simple to set up and get running with.
Nevertheless, there are a number of disadvantages to using Wemux. For one, Wemux works via SSH, meaning that:
- Your remote pair needs to have a VPN that you can access set up, or be working on a public IP address.
- Your remote pair needs to trust you with SSH access to their machine.
Wemux is also unable to share non-terminal applications. This means that if you are, for example, working on a web application, you may need to have Wemux open to share an editor, while simultaneously having a Skype screen sharing session to voice chat and see things like your remote pair’s web browser.
Mike English has a blog post with more info about using Wemux for remote pairing
Chrome Remote Desktop
Lately, my tool of choice for remote pairing is using Google’s Chrome Remote Desktop browser extension. This extension offers full cross-platform screen sharing using simple tokens — no VPN or SSH required. The only requirement is having Chrome and the extension installed on each machine.
The extension is very robust and also works well in high-latency or bad connection environments. I’ve had issues where a Skype chat was lagging due to latency, but the Chrome Remote Desktop was still working fine.
There are still some minor issues with Chrome Remote Desktop. It has nothing for integrated voice chatting, so having a simultaneous Skype or google voice chat is still necessary. There’s also a known issue with screen sharing a Macbook with a retina display to another computer, where only a small portion of the screen will be shown.
Chrome Remote Desktop is the best tool I’ve found yet for almost all remote pairing situations, but I always have my eyes open for better tools.
What have you been using to remote pair successfully?