Jan 14, 2021

Getting The Most From Remote Pair Programming

Getting The Most From Remote Pair Programming

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:

  1. Collaborative code editing

  2. Common sprints and sprint planning

  3. Terminal sharing

  4. 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.