Pair Programming Configurations

At the Clearly Agile offices we write code in pairs of Team members. This method is aptly named Pair Programming; I'd dare to say, our Team is pretty good at it. The concept of Pair Programming is this: production code is of better quality when written in pairs of team members. An example of a Pair Programming environment is one machine, one monitor, two keyboards, and two mice, and of course, two Developers. 

Below, I've linked some information for those that are interested in learning more about the ethos of Pair Programming. For this post we are assuming you, the reader, are either familiar or already use this technique. This post will introduce some ideas to improve your Pair Programming environment.


What is the best setup for Pair Programming?

There are several published resources that talk about Pair Programming setups in detail. I like this one from "Absolutely No Machete Juggling" and this one from Mat Schaffer.

Below is a consolidation of different pairing setups from various resources.

Configuration Layouts

What Not to Do - Setup 1

As "Absolutely No Machete Juggling" points out, this is not pairing. People in this setup hate Pair Programming. The Navigator in this setup is a second class citizen and your Developers will hate it.

The Bare Pair - Setup 2

This would be the bare minimum setup for pairing. This allows both Developers to feel like they are pairing, but they still have to share the monitor. Notice the monitor here is positioned between the Partners. As Matt Schaffer points out, the side-by-side setup is not the best for conversation.

Good Pairing - Setup 3

This is a step in the right direction - both Programmers have their own keyboard and mouse connected to the same machine. They have more control over their personal space.

Better Pairing - Setup 4

This is one step closer to best. Each Developer now has their own monitor, keyboard, and mouse connected to the same machine. It's comfortable; each person can position their monitor where they'd like. An apparent downside: side-ways conversations.

Great Pairing - Setup 5

Moving on Up! Each developer now has their own desk and station. Personal space abounds and hygiene might not be "as" important. Though I always suggest good pairing partners should be conscientious of their hygiene :) Sage advice.

Great Pairing v2 - Setup 6

Same as the previous setup except with a shared laptop sitting between both partners. As "Absolutely No Machete Juggling" points out, this allows one of the Partners to do a quick search for a solution or research while helping their Partner to solve an issue.

Great Pairing v3 - Setup 8

Another great setup with emphasis on personal space. Both of the Partners still connected to the same machine.

AwesomeSauce Pairing - Setup 9

Each partner has access to a full desk but the desk are slightly off center of each other. As Matt Schaffer points out this setup provides the best setup for conversations and ergonomics. 

AwesomeSauce-with-a-cherry-on-top Pairing - Setup 10

By adding a shared laptop between the two pairs, now each Partner can break off to do research and/or look up possible solutions. Great communication and shared environments.

DoubleMint Team Pairing - Setup 11

An example of two teams of two (a pair of pairs!) using the corner desk layout.

DoubleMint Team Pairing v2 - Setup 12

Example of a team of four using the split desk layout.

Conclusion

At Clearly Agile we focus a lot on Pair Programming and have tried many of these setups. We're always on the hunt for better ways to do things and being open minded to new ideas if you have them - please comment below if you have ideas for new setups!