How to remote pair program

In order to make maximal forward progress on this project, we need to develop the ability to work synchronously. Normally, that happens more easily in an office setting where physical proximity allows team members to informally work together or schedule face-to-face meetings.

In our current situation, it is easy to avoid working synchronously for (at least) two reasons:

  1. It's harder and involves more overhead to set up, since we have to work together online. In addition, it's more awkward than simply sitting in a room together talking, or else just leaning over someone else's laptop.

  2. We don't know each other very well. It's harder to ask someone for help when you don't really know them.

Both of these issues are addressable: if we practice, we can get more efficient at synchronous online work, and we can also get to know each other better, reducing the social inhibition on asking to work together in future.

Here are some possible technologies you can evaluate:

  • Zoom. This is the easiest: just share your screen with your colleague.
  • CodeTogether. Provides a plugin for IntelliJ IDEA that synchronizes editor buffers. Note all plans are free during COVID.
  • FlooBits. Provides a plugin for IntelliJ IDEA, but also supports terminal sharing. Their free plan allows "five public workspaces" which seems OK for us.

Once we gain experience with these technologies and procedures, we will hopefully revise this document our best practices.