In 2002, I graduated a distance-learning masters in applied mathematics. Every month, the university mailed me an A4 enveloppe containing the course support. I was supposed to learn from the course material and returned the completed assignments within a month. A month later, I would receive an answer key. Should I have a question, I could mail it to the professor and wait for his reply. The whole process was cumbersome. I was often behind schedule. Interactivity was near to zero.
Later on, I participated in the MOOC endeavour. The video of the instructor gave a feeling of a one-to-one training session. Discussion forums, deadlines, follow-up mails, peer-reviews grounded the learning process. There were meetups too. And a MOOC about Agile Development using Ruby On Rails offered remote pair-programming sessions between participants.
Pair-programmming reuses the rather old organizational pattern of pilot+copilot : double-check, higher focusing, external view, and stronger engagement. You may object that programming is very different from flying. Yes, it is!
But programming requires a strong level of accuracy too. Your pairing fellow is both a watch dog that tells you not to call a library without checking how it works, not to cut and paste code across your work, and an inspiration to experiment with new ways of coding. As some aerobatic aircrafts don’t include a copilot seat, some programs are implemented by lone wolves in the wild.
Tools like teamviewer, logmein, skype, hangout or joinme have been instrumental to the success of remote pair working. There is still room for improvement:
1) In a face-to-face meeting, there is a desk between the two interlocutors. Webcams should recreate this confortable spacing. I’m neither a barber nor a dental professional! 2) Remote working platforms lack of interoperability. Some only run on Windows, some require to install a software, others are more suitable for mobile use… and don’t try to connect to hangout with skype 3) Security is a weak point for all of these platforms. Choosing which window you share, which you don’t, masking your passwords or your personal information are not intuitive. In my earlier days, I remembered displaying my passwords on a recorded session. Not so good a security practice! 4) Optimizing the screen definition so that everybody can watch comfortably is not supported either.
Every desktop application from IDE to word processors will probably include some kind of remote pair working feature sooner or later. C9 already includes some simple pair-programming features, for instance.
Bugs in the code? Don’t blame me, it’s my pair programming partner who fooled around!