On Remote Pair-Programming
For the past few months I've been working with a startup building a mobile app using #ReactNative. I last used #React back in 2016, and my most recent mobile development was in the joyful J2ME days of 2007, so I was a bit hesitant to dive into this codebase. Usually, I find my way around new codebases and technologies by #pairprogramming with an experienced colleague, but with COVID-19 and the Israeli lockdown I had to find a remote way to pair-program.
The first solution I went with was Zoom screen share + voice. I share my screen and write a failing test, then I push it to GitHub. My colleague pulls, shares her screen, and passes the test. We refactor together, with me sometimes taking the (mouse) wheel to demonstrate a change I would like to make. Then she writes a failing test, and we switch again.
It works surprisingly well. The medium requires full focus, making it more difficult to follow distractions or take long smoke breaks. In some ways it's even more efficient than a face-to-face session. The major downsides have been the inability to use body language (those who know me will understand :) ) and the relatively high latency using remote control.
When I tweeted about this, a JetBrains employee replied that I should try their CodeWithMe plugin, so I did. It looked like a perfect solution, with no video-based screen share, concurrent typing like in Google Docs and an open voice channel. Sadly, the voice call wasn't functioning properly, and the lack of video screen share can be a drawback - especially when you have a mobile simulator running from #XCode while the rest of your codebase runs in WebStorm, and #detox tests running from a terminal. Another drawback is the homogeneous IDE support - there's always that one team member who insists on using #vscode...
The most recent recommendation I got was for codetogether.com, a service launched in 2020 and is currently free for the duration of the COVID-19 epidemic. It sports heterogeneous IDE support, and supposedly supports sharing other windows such as the terminal. Will it work better than plain simple Zoom? time will tell.