Hi! We've renamed ScraperWiki.
The product is now QuickCode and the company is The Sensible Code Company.


Book review: Remote Pairing by Joe Kutner

jkrp_xlargecoverPair programming is an important part of the Agile process but sometimes the programmers are not physically co-located. At ScraperWiki we have staff who do both scheduled and ad hoc remote working therefore methods for working together remotely are important to us. A result of a casual comment on Twitter, I picked up “Remote Pairing” by Joe Kutner which covers just this subject.

Remote Pairing is a short volume, less than 100 pages. It starts for a motivation for pair programming with some presentation of the evidence for its effectiveness. It then goes on to cover some of the more social aspects of pairing – how do you tell your partner you need a “comfort break”? This theme makes a slight reprise in the final chapter with some case studies of remote pairing. And then into technical aspects.

The first systems mentioned are straightforward audio/visual packages including Skype and Google Hangouts. I’d not seen ScreenHero previously but it looks like it wouldn’t be an option for ScraperWiki since our developers work primarily in Ubuntu; ScreenHero only supports Windows and OS X currently. We use Skype regularly for customer calls, and Google Hangouts for our daily standup. For pairing we typically use appear.in which provides audio/visual connections and screensharing without the complexities of wrangling Google’s social ecosystem which come into play when we try to use Google Hangouts.

But these packages are not about shared interaction, for this Kutner starts with the vim/tmux combination. This is venerable technology built into Linux systems, or at least easily installable. Vim is the well-known editor, tmux allows a user to access multiple terminal sessions inside one terminal window. The combination allows programmers to work fully collaboratively on code, both partners can type into the same workspace. You might even want to use vim and tmux when you are standing next to one another. The next chapter covers proxy servers and tmate (a fork of tmux) which make the process of sharing a session easier by providing tunnels through the Cloud.

Remote Pairing then goes on to cover interactive screensharing using vnc and NoMachine, these look like pretty portable systems. Along with the chapter on collaborating using plugins for IDEs this is something we have not used at ScraperWiki. Around the office none of us currently make use of full blown IDEs despite having used them in the past. Several of us use Sublime Text for which there is a commercial sharing product (floobits) but we don’t feel sufficiently motivated to try this out.

The chapter on “building a pairing server” seems a bit out of place to me, the content is quite generic. Perhaps because at ScraperWiki we have always written code in the Cloud we take it for granted. The scheme Kutner follows uses vagrant and Puppet to configure servers in the Cloud. This is a fairly effective scheme. We have been using Docker extensively which is a slightly different thing, since a Docker container is not a virtual machine.

Are we doing anything different in the office as a result of this book? Yes – we’ve got a good quality external microphone (a Blue Snowball), and it’s so good I’ve got one for myself. Managing audio is still something that seems a challenge for modern operating systems. To a human it seems obvious that if we’ve plugged in a headset and opened up Google Hangouts then we might want to talk to someone and that we might want to hear their voice too. To a computer this seems unimaginable. I’m looking to try out NoMachine when a suitable occasion arises.

Remote Pairing is a handy guide for those getting started with remote working, and it’s a useful summary for those wanting to see if they are missing any tricks.


2 Responses to “Book review: Remote Pairing by Joe Kutner”

  1. Felix February 27, 2015 at 4:03 pm #

    Thank you very much for writing this review, Ian. It’s good to hear that remote pairing is a important part of your business.

    I have started a business myself and our developers are located around the world. I think it is a key strength if your lead developer or CTO (I am the CMO), can manage and work in remote teams. I have seen startups which could reduce their burn rate by factor 5, just by making use of outsourcing and working remotely. I understand that this does not always work in every scenario, but I think it is something that more teams should pursue.

    I have written myself a list with tools that are useful for distributed teams. I would be very interested in your feedback! https://myhelpster.com/tools-for-distributed-teams/

    Thanks again!

    • Ian Hopkinson February 27, 2015 at 7:15 pm #

      We use Trello extensively for our project management (rather than Asana), and we use grove.io as our internal chat system, definitely an essential adjunct. ScraperWiki is pretty small so we don’t need a huge amount of functionality from chat, that said we have considered Slack.

      We’ve not had a need to use something like Webex internally, we aren’t *that* distributed a team – we have a couple of people work a couple of days a week from home. And are happy for ad hoc homeworking.

      We’re actually looking for timesheets services at the moment, so TrackingTime looks interesting. It doesn’t feel in the spirit of a startup though!

      When I last used Yammer it struck me as being corporate facebook, uptake in the large traditional company I worked in was low (i.e. about 1% workforce, and those concentrated in IT).

We're hiring!