Remote Pairing Like a Boss
Pairing remotely can be difficult, especially if you prefer or need to use more than a terminal/tmux. Here's a few tips I picked up while doing some remote pairing on projects in Xcode.
Screensharing
Tmux is the best option for terminal sharing. While it may be possible to screenshare a terminal window, the lag makes the interaction feel unnatural.
Benefits
- Speed
- Easy to install
Screenhero is a screen or window sharing application in which both users have their own mouse cursor onscreen and can use their own keyboards at anytime. It makes easy work of sharing apps which are generally remote-pairing unfriendly, like Xcode.
Benefits
- Easy to switch between drivers
- Windows can be shared in either direction between users at the same time
- Built-in text chat
- Currently free while in beta
- Opportunity to learn another person's keyboard shortcuts and/or change their wallpaper when they aren't looking
Communication
Everyone has their own preferred chat app (I like FaceTime), and not every app stays visible at all times between workspaces and focusing windows. There are a few different configurations to remedy this issue.
Single Monitor Configuration
Afloat allows users to make a particular window float above all other windows, especially useful when using only a single display.
Multi-monitor Configuration
I use old school workspaces often - dedicating a workspace to each "type" of app - and prefer to keep video chat on a dedicated screen so chat doesn't interrupt the flow of work. Assign a window to all workspaces via clicking & holding app Dock icon, selecting Options > Assign To: All Desktops
, or alternately using Afloat's Adjust Effects
option for more granular window control.
Separate Device for Chat
Another option is to use a dedicated device for chat, such as a phone or tablet. A few common apps for this task are Skype, FaceTime, or the recently released (Google) Hangouts. Positioning the device below the primary monitor provides a natural face-to-face view.
Interaction
Trade places often. It keeps both people engaged, which leads to the non-driver being able to catch errors or small fixes more frequently. The multiple mouse setup provided by Screenhero also affords the non-driver the opportunity to indicate questions or possible changes onscreen without needing to switch change configuration or make a major disruption to the flow of work.
Take breaks. Reduce the chances of lazy code.
Always "hand off" when you want the keyboard. Taking control unannounced, combined with a bit of lag, and multiple mouse cursors, can lead to a lot confusion quickly.
Celebrate! When tests pass or products ship, virtual high fives are always appreciated. 👍
Written by Delisa Mason
Related protips
1 Response
Nice post, i would like to share a set of tools that will make your life easier while pair programming https://github.com/livingsocial/ls-pair and it also have some links where you can find more resources on this practice.