Jan 14, 2021
Extreme Programming (XP) is a methodology used in Agile software development that has two exceedingly worthwhile aims: enabling the production of higher-quality software and fostering a better quality of work life for the development teams. Remote pair programming is an example of XP, which unsurprisingly continues to gain a lot of traction during the ongoing lock-downs and social distancing of the global COVID-19 pandemic.
But remote pair programming is not without its quirks and uncertainties. For one thing, it’s not easy to sync with a development partner when not in the same physical space. In this article we’ll go through some of the benefits of pair programming, and then we’ll offer some tips on how to achieve this form of programming in the best way possible.
The Benefits of Remote Pair Programming
As you can imagine, remote pair programming delivers the same benefits as that of in-person pair programming, including:
Better code:
Collaboration means simultaneous code-testing, more timely fixes and improved code
Knowledge sharing
The is the real essence of any collaborative process
Focus
Being in constant contact with a peer ensures more focused and less distracted developers
Additionally, remote pair programming also has its own distinct benefits:
Enabling technology
5G and other developments will make collaborative technology more reliable and sophisticated in the near future
Inevitability
Remote work won’t simply disappear after COVID-19. The “new normal” is a global zeitgeist with remote work at its center
Common Attributes of Remote Pair Programming
Remote pair programming does have certain fundamentals which must be followed, and the four most important of those fundamentals are:
Collaborative code editing
Common sprints and sprint planning
Terminal sharing
Screen sharing
In addition, the approach is also key. For example, a pair may decide that a free-form collaboration works best for them. Or a more structured process may be needed. A programming pair may opt for a Driver/Navigator set-up, whereby the driver works with the code and implementation thereof, while the navigator brainstorms and reviews the code. A ping-pong approach can also be used to test-drive code and update it to the required standard.
Either way, a good idea is to swap roles during any sprint. It keeps the collaboration flexible, even-handed, and more experimental.
Basic Real-Time Collaboration Tools
Screen sharing tools are essential for any remotely-paired work, and some of the more generalist examples offering remote pairs some functionality:
Zoom
The remote collaboration ‘darling’ of the COVID-19 pandemic has decent screen-sharing attributes, including viewing multiple screens simultaneously and its whiteboard annotation tool
TeamViewer
A cross-platform and encrypted screen-sharing tool that doesn’t require a VPN. It also has a built-in interactive whiteboard for real-time annotations
USE Together
The most exciting feature may be the ability to use multiple mouse cursors on a shared screen
Other examples of popular, more generic-use platforms include:
Screenleap
Slack
Surfly
join.me
Apache OpenMeetings
Cloud-Based IDE’s
Intense software development work may necessitate advanced screen-sharing capabilities. A cloud-based integrated development environment (IDE) offers a fully functional development platform embedded in a browser that saves on development environment set-up, maintenance, and updating.
Two popular examples:
Amazon Cloud9
This option provides a code editor, terminal and debugger directly from a user’s browser, allowing for coding with the same editor using two separate cursors. It also has pre-packaged tools for over 40 programming languages, including C++, JavaScript, PHP, Python and Ruby.
Codenvy
For greater security, Codenvy offers a self-hosted option. It also offers workspace permission management, automated workspace creation and integrated version control
Other notable examples include:
CodePen
Microsoft Azure Notebooks
Observable
Google Cloud Shell
Codeanywhere
Live Share Extensions For Code Editors
For even greater security, some developers still prefer working with their own code editor, for example live share extensions.
Two examples include:
Teletype for Atom
created by GitHub’s core team. It is very secure for remote sessions since there is no centralized server; furthermore, Teletype encrypts all communication.
Microsoft’s Visual Studio Live Share
Files can be edited synchronously, with changes appearing immediately in the editor window. Real-time debugging sessions are also possible as breakpoints can be set up and the code worked on simultaneously in real-time
Measuring Remote Pair Programming
Agile is about consistently measuring performance. Pre-determined metrics during sprints help assess whether the remote paired collaboration is working optimally.
Metrics can include:
Development time
How efficient is the development process as measured in time?
Resolution time
How long does it take for software issues to be resolved?
Resource usage
How efficient is the development with regard to the programming pair?
Employee satisfaction
Are the developers enjoying their work and being paired?
Error counts
These can determine software quality, so are all software errors being captured at all times?
Making It Work
Remote pair programming has its challenges, primarily because of the remote aspect. Mechanisms that can improve this type of collaboration include:
Deciding on a collaboration approach from the outset
Setting boundaries and expectation from the beginning
Respecting each other’s work schedules and “peak” times
Setting aside “alone” time for research and singular work
Being flexible, including with the collaboration tools used
Having continuous software design as the key ethos
Remaining open to learning from and teaching others
Communicating clearly at all times
Pair Programming Is Essential
Ultimately, a developer should remember that the most fundamental benefits of remote pair programming are those of pair programming itself. Pair programming means continuous code reviews, simultaneously by two pairs of critical eyes.
This should equate to more stringent-quality code and fewer bugs. After all, remote pair programming should still be the epitome of real-time synchronous collaboration. This is as relevant to pair programming done remotely as it is to pair programming done in person. The technology is available to enable it - the rest is up to the given remote pair.
The words of Joseph Moore are worth noting here: “Some of the greatest achievements in history were produced by pairs of great minds working side by side on the same task. Software is no exception.”
Furthermore, developers that embrace remote pair programming will be better prepared for the future.