The Pairing Session
When starting a pairing session, it is often helpful to review the current story and make, or maintain, a task list for the pairing session.
Communication is one of the crucial skills for pairing remotely. Talk through the strategy you will be taking and talk about the how and why of the code that you're writing while you're writing it. If you're doing research, talk about your findings. Also, don't be afraid to break out a digital whiteboard to hash out ideas.
And of course, if you need to step away from your desk for a while, let your pair know how long you'll be away.
There are several ways to approaching the actual pairing itself. Each one lends itself to different levels of skill in the project's tech stack, the current situation at hand and personal preference. It is probably a good idea to change up who is filling each role in the strategies to keep both attention and minds fresh.
One person is focused on writing the code, while the other researches, plots a course, and keeps an eye on Slack for outside questions or notifications from project services.
Test Code/Production Code
One person writes the test code, and the other writes production code. This allows both developers to be engaged in the code and allows a little separation between tests and production code.
Jedi Master/Jedi Apprentice
Best used when there is a wide gap in experience between the pair and allows the less experienced of the two to gain knowledge rapidly. The apprentice writes the code while the master explains how the platform works, how to approach a problem and fields questions from the apprentice.
We at Very have found that with some thought and preparation pairing between programmers at opposite ends of the country can be just as effective as pair programming in person. The tools are continuously evolving, as are our methods and practices. As such, we expect our pair programming guide to continue to evolve.