It may seem impossible to do pair programming remotely—how can you implement these techniques with just one person? The whole point of pair programming is for two or more software developers to sit at the same computer and program together. When there are more software developers involved that process is called mob programming, or mobbing. Just getting started with remote pair programming? We got you covered, here is the full guide.
Developers usually think of pair programming as an in-person development technique, but it turns out that pair programming can be well done remotely with some good vital practices.
“Interestingly, in a remote environment, pair programming is one of the best things you can do for two programmers!” - Jason Warner, CTO @ GitHub
Why developers should try pair programming remotely
With a remote team, you might be thinking that pair programming is difficult, but collaborative software design can be productive.
If pairing remotely, one could argue that having the right tools (i.e. CoScreen) pair programming remotely is easier than even in a co-located office.
In an in-office environment, everyone needs to be present and available. One needs to find the right place (doing pair programming in an open office might be a significant annoyance for your desk neighbors - ask me how I know this ;) ), multiple input devices might be complicated to set up (people often prefer their own keyboard setups).
The goal is to do an in-depth deep collaboration. Collaborative software can increase transparency and teach new skills because of the shared knowledge. Here are some other tangible benefits.
Higher-quality code and faster delivery
Pair programming decreases the likelihood of writing sloppy code. With two people working together as one, the output is usually more well-thought-out and organized. That means the code is easier to understand and easier to update in the future, which makes it easier to find potential bugs in the code.
This kind of real-time review also produces cleaner code that already had to go past two developers. According to The Costs and Benefits of Pair Programming by Laurie Williams at the University of Utah, “Seasoned pair programmers describe working in pairs as ‘more than twice as fast"’.
With two brains working on a problem, solutions are found much more efficiently. This can translate to faster delivery times.
Your team will have a more significant idea of how the code works since they developed it simultaneously and its shared knowledge.
Teaching and knowledge transfer by an expert or senior engineer on a particular project or area of work can help participant(s) get a more in-depth introduction on the matter through pair programming. Additionally, helping a fellow teammate is more manageable when done in a practical situation.
Another important point to take into consideration, while programming, a teammate usually needs to research a topic, framework, or anything that might help. Having multiple computers available & connected in a remote pairing scenario makes going from two people focusing on one task on one computer to two people researching separately or splitting the task up at hand to make it effortless.
A Happier Team
Employees who enjoy coming to work are more likely to stick around. Remote work is a proven way to make employees more content, and pair programming remotely might lead to happier employees. It’s a full circle. Even the best engineers work better in a team which is another reason to try pair programming.
“...full-time remote workers said they're happy in their job 22 percent more than people who never work remotely. The reasons respondents said they decided to work remotely were better work-life balance (91 percent), increased productivity/better focus (79 percent), less stress (78 percent), and to avoid a commute (78 percent).” - Inc.com
There are also social benefits to working together on a project that can make remote developers feel more connected to their co-workers and to their work. CareerAddict stated that teamwork could boost productivity, provide a support network, encourage innovation, improve morale, and establish strong relationships.
Pair Programming brings the opportunity for coders with different coding styles and perhaps different personalities to connect and learn from each other, making communication a key element here.
Pairing improves programming skills and can also help programmers develop their interpersonal techniques and have psychological benefits.
Remote work can be an isolating situation for many, and it is not a secret that isolation can also lead to stress and loneliness. Adding the option for remote pairing can be a helpful decrease that feeling among developers.
Best practices for Pair Programming Remotely
- Set your whole team up for success by scheduling a time when you can all sync up and do pair programming together. That way everyone is zoned in and there are no distractions at that time.
- Figure out how long you want each person to be the driver and navigator for. Each person should get multiple turns, so everyone is contributing.
- Make sure you’re saving your code as frequently as possible.
- Ask a lot of questions. This turns the experience into one where a lot of people are contributing and everyone is learning.
For more details on how pair programming works and some more best practices there are some great resources listed below:
How Pair Programming Really Works
10 Pair Programming Best Practices Questions & Answers
The Definition of Pair Programming
Get the right equipment to set yourself up for success
As a recent Airtasker survey revealed, employees who work from home are more productive (thanks to no commute, no unexpected desk check-ins, and fewer in-office distractions). Since that translates to more time behind a screen, it makes sense for developers to set themselves up for success with good equipment.
Your home office will be your workplace for eight hours a day (hopefully), so it only makes sense to ensure you have equipment that will make your life easier.
A good headset
Sure, those earbuds that came with your old phone will work in a pinch, but spend a little extra money on a decent headset with a mic if you can.
Headsets help improve communication with co-workers, because they cancel out any exterior sounds distracting you from your work and cancel out any exterior noises from your phone calls or and background noise and annoyances, further helping you focus on doing your work. They are a superior tool to the typical earbuds because they support clearer audio communication with fewer interruptions and they don't hurt the insides of your ears. Just... try not to get ones that are too heavy, because they’ll hurt your neck over long periods of time.
A whiteboarding substitute
Sometimes you just need a shared space to scribble ideas. Get all those ideas in your head out on some white paper. Whiteboards are invaluable for in-person work, particularly when trying to brainstorm ideas and communicate your own ideas to your teammate. Fortunately, there are many online substitutes that can perform the same functions.
You might be tempted to use your real whiteboard and point your camera at it, which is a bad idea because the shine from the whiteboard makes it really hard for it to be seen on camera. Instead of using an actual whiteboard, a great substitute is Jamboard or Miro, which are software that can help you out. While using this software, you can pair up with CoScreen in a separate window, another great way to interact with your team.
Collaborative development tools
In addition to a great workstation, integrating the deep collaboration method when working remotely can ensure collaboration stays high even when working remotely in a sea of meetings and notifications. Tools that can help you with collaborative development are tools like VS Code Liveshare and CoScreen.
Improve communication with your programming partner
It’s hard to start working with someone you barely know. To work as a team, you need to get to know each other, and you need to put in a little extra work to figure each other out and how best to work together.
Connect over Slack
It's always easier to get to know someone if you've met them in person before, but that might not be an option these days, especially if you work entirely from home. A steady water cooler chat for non-work discussions can help you build rapport and learn how best to communicate with each other.
Pair programming remotely requires a closer connection between co-workers. By learning your co-worker's quirks and styles, you can improve your communication and workflow.
“(my teammate) just leaves his CoScreen on and says "just hop in my room, whenever you are ready - I am here" and basically he’s just sitting at his desk saying stop by whenever you want. This doesn't really work in any other system.” - Sherif Abushadi at Near.org
Take regular breaks
It can be draining to be on camera all the time. It may sound like it works against the process, but you need to schedule time for yourself the same way you would after a long co-located pairing session or long meeting.
Pair programming works well for many software development teams, but it can still take a lot out of you, even for the most extroverted or seasoned developers.
Schedule breaks to allow your batteries to recharge and communicate to your partner when you need some time to yourself. As we mentioned before, pairing is a great way to sharpen your interpersonal skills.
A lot of people think that taking breaks means you’re lazy, but some experts of work environments, such as Social Triggers, suggest that by taking breaks you can be more productive. According to inc, we should be taking a break once every 60 to 90 minutes. A great habit to build is to set a timer on our phones to remind us when to take those breaks.
“A new and growing body of multidisciplinary research shows that strategic renewal — including daytime workouts, short afternoon naps, longer sleep hours, more time away from the office and longer, more frequent vacations — boosts productivity, job performance and, of course, health.” - The New York Times
Continue to build momentum
When pair programming, it can be hard to get started and easy to lose momentum when dealing with complex problems. There are a number of habits like those listed below that can make approaching difficult tasks more tractable. For more details see when and why pair programming works.
Start with something easy
Don’t try to finish a massive project out of the gate. It would help if you took the time to understand and digest your project. Starting with a simple task can give you the boost you need to succeed.
A simple, self-contained task can help you feel fulfilled when it’s done.
It will show you if this will work going forward because you’re more likely to catch your mistakes if you take the time to look at them.
Keep a simple schedule, avoid strict work times, and be a little more flexible.
Switch roles regularly
A common misconception about pair programming is that one person will always be the navigator, and one will always be the driver. That’s not the case. It’s very important that one person isn’t always doing the typing and the other person isn’t always doing all the talking. By working together and alternating roles, the code will come out more organized, and two sets of eyes are more likely to catch bugs.
It won’t work for one person to do all the driving; for instance, it makes sense to play to your strengths and knowledge.
It’s bad enough to get distracted when you’re working on your own, but if you’re checking social media or emails while pair programming, you’re dooming your project. Your concentration is never at 100%. A great way to minimize distractions while programming or while working is by turning off your phone or simply not looking at it. Another good tool is to put a Do Not Disturb sign on your status at work, so people know that you can’t be trusted not to talk to them.
Interruptions not only cause one person to go off-track but both. How many of us have wasted time at work by showing a co-worker a video link?
Use CoScreen for pair programming remotely
All of the struggles of pairing gets solved by having better tooling available and being able to do this remotely. Even in an in-office environment, a tool such as CoScreen might be preferable for this scenario.
CoScreen is the ultimate solution for pair programming remotely. It combines everything you need in one place with low latency compared to Zoom or Microsoft Teams. You can communicate in real-time via audio and video chats that don’t wear you out, with CoScreen, you can share any (individual or multiple) windows on your screen, and work simultaneously as if you were working on the same machine.
“ CoScreen is probably the easiest way to do pair programming and dev collaboration that there is. ” - Luis Capelo, Co-founder & CTO
Other developers from Salesforce, Ripple, SAP and many more are using CoScreen for remote pair programming already and have had great success.
Try CoScreen for free