I recently I had the opportunity to share a passion of mine at Twin Cities Code Camp 12. I gave a presentation, “Pair Programming Techniques”, where I shared my experiences of pair programing including things I found to great and things that are not so grate. This presentation was one of my favorites as it had a great amount of audience participation. I will attempt to share this information in a series of blog posts.
Pair programming is the act of working on a focused task with someone. I’ve seen it be a productivity booster, we’ve all had times where we just hit the preverbal wall while working on something. I always found that explaining my situation to someone else would help me get over this block and get back to work. Imagine having that person right there working on the task with you. Sure I’ve been in situations where both of us in a pair got stuck but that is a rarity.
While pairing I tend to notice that I am getting a real time review of the code I am writing. I like being able to discuss code while it is written, giving me a chance to learn and teach all while getting things done.
Pair programming is not the silver bullet, it’s not going to solve all your problems or make your team’s velocity jump a hundred and twenty percent. It’s not just for twenty something hot shot developers, working at the latest startup. Even though you have two eyes working on the codebase doesn’t mean bugs are going to get through. Pair programming is like the old saying “measure twice and cut once”, which doesn’t mean you are going to cut every board perfect but it it limits your possibility of a defect.
In todays work place it is common to have people in the office along with remote employees. Just because someone works remotely doesn’t mean that they can’t pair and have to work alone. There are advantages and disadvantages to both situations.
Pairing locally has many advantages, most of which have to do with being in a physical environment. When you are working locally you have the ability to better read your pairs body language, you can grab some paper and sketch out some ideas.
Sometimes pairing locally can have some distinct disadvantages too. There are big things like sickness, working in a very close environment makes it easy to pass things to each other.
Working remotely solves the sickness issue and allows both people to pair and not worry when they have a simple cold. I have found myself enjoying remote pairing in this situation. While you don’t have some of the physical amenities that you would in a normal office setting, video chat and screen sharing comes pretty close. I have spent time working remotely at previous jobs and have found that human interaction is something that I need. Pairing remotely gives you someone to talk with, share your ideas and get feedback from.
While pairing remotely is great during the height of flu season, and with video chat and screen sharing you can almost see everything there is still a great deal of communication that needs to take place for the pair to be effective. Bandwidth is a major downfall of remote pairing, I live in a location with a slower DSL connection and I have to prioritize the tools I use when remote pairing.
Look for follow up blog posts about different styles and tools for paring locally and remotely. I’ll cover some of the techniques I have learned and developed since I started pairing.