Pair Programming - Part II

Last week I wrote a post about advantages and disadvantages of pair programming. I received some feedback so I decided to do more research, consult the scientific literature and write a follow-up.

In my last blog post I wrote:

Nevertheless, pair programming also has a few drawbacks (compared to individual programming) like increasing the overall project cost and the total number of man-hours (amount of work done by an average programmer in one hour) needed to deliver a finished product .

I was looking for evidence related to this argument. Most of the results presented here are taken from papers “Strengthening the Case for Pair Programming”, by L. Williams et al. and “The Costs and Benefits of Pair Programming” by A. Cockburn and L. Williams.

What I wrote was one of the biggest misconceptions about pair programming, that this approach will significantly increase the code development expanses. This week I learned that the overall increase in cost is only about 15% (and not a 100% as one might think - i.e. two programmers do a job that just one can do), which is easily repaid in higher quality code, fewer errors and a significant reduction in refactoring, bug fixes and testing needed.

Pair programming can also be more enjoyable then working alone and allows for a quicker dissemination of knowledge, good practices and design principles, which is of vital importance for large systems. One way to ensure that knowledge is communicated between coders is to have regular pairings between different team members.

Benefits of Pair Programming

In my previous post I only listed some of the advantages of pair programming over individual programming. I would like to give an extended list with more detailed explanations of how pair programming can bring value to the project.

Conclusion

What I love about Pharo community is that it’s learning oriented and is eager to provide feedback and resources to learn from. I learned that pair programming doesn’t actually increase the overall project cost in the long run and brings other benefits with it. I had great experience with pair programming the past two weeks and find it very fun and useful. I’d definitely recommend pair programming as a learning method for novices to quickly tackle new problems, it helped me a lot.