Posted by Jillian Kurvers on Friday, May 2, 2014 - 06:27
No coder should have to reinvent the wheel. But improving it is a whole other story. With a technique like pair programming, you can revolutionize how you collaborate and innovate while reducing errors. Here are five reasons pair programming makes sense – and why it could change how you code forever.
Some things are best done alone, like changing a light bulb and taking selfies. Other activities, however, lend themselves to a group dynamic. Programming, for example, may seem like a solitary operation, but more and more organizations are seeing the benefits of pair programming.
Collaborative Coders: Two Minds Are Better than One
Collaboration is nothing new for developers. Agile development teams by nature are cross-functional, meaning Scrum masters, developers and testers must work together to realize the benefits of the methodology. It's written into the very Agile Manifesto: individuals and interactions over processes and tools; customer collaboration over contract negotiation. Pair programming takes collaboration to the next level for developers. Two individuals – one driver and one navigator – work side-by-side at one computer to maximize the output of coding. While it may take longer, line for line, the end result is superior, near-errorless code that has been written from the perspective and experience of two programmers, effectively doubling your potential to innovate and solve problems creatively. As James Shore says of pair programming in his eponymous blog, "It's more fun than it sounds: two programmers at one computer. One drives; the other navigates. Switching roles fluidly, they constantly communicate. Together, they accomplish better work more quickly than either could alone." Teamwork never sounded so poetic.
5 Pros of Pair Programming
- Economies of scale. According to some reports, pair programming takes 15 percent longer than solo coding, yet results in 15 percent fewer errors. The report also states that the technique allows some pairs to work "more than twice as fast." Now take into consideration reduced quality assurance costs as well as fewer retroactive fixes, and you could be looking at massive time and money savings.
- Quality. Great minds may think alike, but two minds think differently. With two people at the helm, a natural system of checks and balances emerges, leading to better code and greater innovation. Also keep in mind the power of problem solving; two programmers must be quick to mitigate differences in real time and come to the best solution, with all egos aside.
- Knowledge sharing. Skills transfer is a natural side effect and benefit of pair programming. Some even use a technique called "promiscuous pairing" wherein pairs are constantly switched up to encourage such knowledge sharing.
- Collaboration. Communication doesn't always come easy, especially for those who typically work independently. But teaming up – even while programming – can help build this necessary work skill. As two programmers work together, each will be able to provide feedback to the other, resulting in more open communication, greater trust and the opportunity to produce something collectively better.
- Satisfaction. Working together often means increased confidence, and pair programming is no exception. One report states that pair programmers remain satisfied because each keeps the other on track, upping efficiency. However, the same report also states that disagreeable partnering may drive the benefits of pair programming to zero. So, pairs beware.
One Thing to Avoid with Pair Programming
Pair programming provides many opportunities to innovate through collaboration and skills transfer. But be careful to avoid using the technique in a mentor-apprentice sort of way. Pair programming is not as effective when one coder is more skilled than the other and, in fact, can hinder pairs if one has to guide a more junior programmer. Pair programming is a cooperative relationship that takes time to hone but ultimately pays off. As one blogger puts it, it's a social skill that takes some getting used to. But like all acquired skills, once you've developed a taste, there's no turning back.