A couple of retros back our PM remarked that he had only seen ‘remote pairing’ as an entry in the sad column, but on our team it featured on the happy column three weeks in a row. Our team is distributed across 3 locations and we have atleast 2 pairs remoting everyday. On typical Labs engagements this would be a pain point or a risk factor but we’ve been managing it very well and don’t really feel the pain of remoting. Here are some things that helped us:
You are going to spend a lot of time with those headphones on, so make sure you get your favourite pair. A lot of frustrations surrounding remote pairing stem from use of bad tooling or bad network connection. We’ve been using Google hangout for audio and video and Mac screen sharing using VNC. We also use HipChat for the team chat rooms.
Speak before doing
Its important to always be on the same page as your pair. This is easier when pairing in person because you can constantly read your pair’s body language and react to various visual cues. Extracting the same information from just listening to your pair can be hard. Lack of visual signs result in both of you trying to move the mouse at the same time or typing together or being unaware that your pair is uncomfortable. Some ways of getting around this:Reserve one corner of your screen for your pair’s video. Even though you won’t look at the video a lot, your eyes will get drawn in its direction once in a while. Maybe when running a test or waiting for a VM to start up. Brief glances at your pair helps you check in on how they’re doing.Say what you’re going to do. For example, your pair can see you as your reach for your keyboard, but its important that you tell your remote pair “I am going to cd into abc.” Similarly, your pair knows that when you lean back you want him/her to drive, but telling your remote pair “Do you want to write the test? And then I can make it pass” is the only way he/she knows you want to let go of the keyboard.Talk briefly about what you’re implementing before jumping into code. Its easy to physically see your pair back off or hesitate when they are not entirely on-board with what’s happening. However, detecting hesitation in someone’s voice is harder. “We should write a separate class that takes these 2 yaml files and merges them into one. It can have a merge method and a validate method that checks if the generated yaml is valid. What do you think?” – makes your intent clear and gives your pair a chance to express their concerns.
Involve your pair
Always remember that remoting is difficult for you and your pair. Your pair is removed from the team and misses out on a lot of context and conversations. You can be a proxy between your team and your remote by:Be on the lookout for opportunities for your remote pair to interact with the rest of the team. If you overhear conversations about stories your remote pair has worked on, volunteer to have them be involved in it.At standup, if you use any visual aids (tracker or pair matrix on a whiteboard) share it with them. Err on the side of being repetitive and end pairing discussions by clarifying ‘I am pairing with and will call you soon.’At IPMs, include them in pointing stories. We’ve done this by having them point on google hangout video and by having them enter points into a chat window.At retros, type out items from separate columns into a chat window and have them shout out/type in their items and votes.Engage your pair in adhoc conversations with other pairs. Before you go to seek help from other pairs talk to your remote pair about what you should ask. Try to have discussions fairly close to your workstation so that your remote pair can atleast listen in on your conversations. Sometimes it may be disruptive to pull a pair away from their workstations, in such cases, relay the conversation to your pair and ask them if they have any further questions.
Remote pairing is exhausting and even though your pair doesn’t have the opportunity to challenge you to ping pong, don’t forget to take breaks!
Occasional On-site pairing
This might not always be an option but if possible, try to create situations where your pair can meet the team in person. Even if this is very infrequent, the benefits are tremendous.