After growing our team this year, I was keen to introduce pair programming to help with learning, knowledge sharing and quality.
V2 of our pairing setup
Pairing is a native practice of eXtreme Programming, an agile framework from which we draw a lot. It involves two people working on the same task at the same time, looking at the same code.
In the photo above, four of our team are sharing just two computers. This is my preferred pairing setup — each team member has their own screen, keyboard and mouse and, of course, their own personal space. This makes sitting with another person for hours at the time much more comfortable. So much better than lurking at somebody else’s desk, sitting at a weird angle, trying to reach for their keyboard.
We liked pairing from the start. It has a whole pile of benefits — a lot of our team are new to ruby, so it helps with learning and teaching. Of course, it’s also a way for a new team member to learn our architecture and our practices too. And of course, some tasks are better with two people thinking through them and figuring out the best approach. Having introduced pairing in several teams before, I’m also convinced that it increases quality at no impact to productivity.
We don’t mandate pairing for all tasks — we just create a facility in the pairing stations and give people the autonomy to choose it as a tool for getting their work done. The dedicated pairing stations are crucial to this: one of our team who has paired before even called the dedicated space a “revelation”. By making the good path the same as the easy path, we make it painless to adopt a practice that helps the team in lots of ways.
So much of what people call “agile” could really be described as basic teamwork. Pairing helps with knowledge sharing, collaboration and that feeling of togetherness that many good teams share — next, we may get rid of individual desks altogether!