Remote Pair Programming
By: Pratik Bidkar
Pair programming is an Extreme Programming (XP) methodology, where two developers share the same machine, and write code together; while one writes, the other reviews. This leads to high-quality code, fewer bugs, and allows for constant knowledge exchange as ideas are bounced between the two developers. Pair programming helps developers best complete a task at hand.
At TribalScale, we offer Agile transformation services to our clients. We enable them on each and every aspect of building modern cloud-native software products using XP and Lean principles by pairing with them across the product management, design (UI/UX), and engineering disciplines.
In this spirit, in last engagement with the client distributed across multiple global offices, I was presented with the unique opportunity to remote pair program with our client’s engineers. At first, I was new to the idea of remote pairing. The very thought of pairing with someone over-the-wire (as I like to call it) was very new — hence, I got the idea to write a blog. Here I share my learnings and experiences, and hope to learn from the responses of my readers.
What is Remote Pair Programming?
Let me explain, in traditional pair programming, both developers would be sharing the same computer, but with an extended display monitor. However, with remote pairing, there are actually 2 computers to work with and of course, they aren’t side-by-side.
Having shed some light on the context of remote pairing, below I share the tools that I found to be super useful while coding, communicating, and sharing our workstations.
Tools and PracticesThe technology stack we used was ReactJS for frontend development and Nodejs-Express for backend API development.To live-share workstations we used Zoom. Zoom is a communication software tool that combines video conferencing, chat, and allows users to share remote sessions for mobile collaboration. Zoom was very convenient and helped us code together. We could share screens and pass control of the workstation to the other developer. Zoom also proved to be of great help for our daily Agile standups and iteration planning meetings. It never felt as if the person I was pairing with was not present in the same space as me.Also, in line with XP methodology, we used Test Driven Development (TDD) in developing our software. TDD is a software development approach where tests related to the feature being worked on are written first, and are then followed by writing the code to ensure it meets those requirements — as defined by the tests.High-quality headphones will ensure sound comes through crystal clear. I would suggest using over-the-head headphones with noise-cancellation if you are sitting in an office where there are many colleagues around. Since we pair program at TribalScale, there is often a lot of noise as people are speaking and sharing ideas of how to build good code every single minute.Screen Resolutions: While remote pairing, it can be challenging to share screens when there are large differences in resolution. I was glad to learn that our display screens were the same as those of our client’s engineers. This helped us avoid getting into any awkward situations with displays being of varying resolutions on either side.Turn on your video while remote pairing. I cannot stress this point enough since it is imperative that your presence is felt by your remote pair and vice versa. It simply helps in breaking any awkwardness or barriers to communicating effectively, and helps with getting to know each other. There are times in the day when you are not at your best and cannot be productive each minute and that is just human nature. When you actually see your pair not being able to contribute at a 100%-level, you can suggest taking a quick break and continuing to work afterward. Without the video being turned on, identifying these moments becomes a challenge.Integrated Development Environment (IDE): Visual Studio was our code editor. We found the code editor to be easy to use and it was especially helpful as it has a live-terminal sharing feature along with other powerful IDE-features.
Tips & Tricks to Make Your Sessions Productive & Fun!Communicate, communicate and communicate. The person you are pairing with will always want to know what’s going on in your mind, in relation to work. They will want to know what you are thinking and if you have any possible solutions to a problem at hand. Maybe they are new to remote pair programming, and if that is the case, it becomes utterly important for you to make sessions go as smoothly as possible and to ensure your pair feels at ease. Keep asking questions and prompt them to be active during the sessions, this will also encourage and motivate your pair in their work.Be yourself and get comfortable. Don’t worry so much about how you sound over the call and please do not try to change your voice to sound more professional. Always remember to be at ease and make yourself comfortable, that way, your pair will be more likely to be comfortable too.If you are ready to start sharing your session, communicate your readiness over any tool you are using, and always send the correct zoom meeting details. For added convenience, make a calendar event stating the agenda, time, and zoom meeting details. You cannot go wrong with this.Don’t feel too shy to have a coffee (or any permitted drinks) during the session. I would suggest not to have food in front of someone over the call as it may be a little unprofessional and distracting. If you are hungry, this is a great time to suggest a break.Also, remember you are always sharing your pair’s machine. Before accessing any folders on their machine, politely ask for permission and then proceed. Don’t rule their machine as if it is yours. Respect their privacy. This will greatly increase your pairing confidence with the person on the other side, and it fosters a good working culture across teams.Be patient while trying to take control of the mouse or keyboard. Let your pair finish what they are trying to do as it may otherwise lead to annoying typos and even uncomfortable or awkward situations.
There are few other resources/tools available to help collaborate remotely other than those mentioned in this blog. Teletype for Atom is another powerful and user-friendly IDE. Also, Google Hangouts has a screen-sharing option which could come in handy for remote sharing sessions. If you have any further experience or opinions feel free to share them in the comments section!
Pratik is an Agile Software Engineer at TribalScale based out of our Toronto office. Pratik develops web-apps focused on micro-service-first architecture design. On the side, he likes sky-diving, bungee jumping, and scuba-diving.
Join our fast growing team and connect with us on Twitter, LinkedIn, Instagram& Facebook! Learn more about us on our website.