Pair Programming Illuminated

by Laurie Williams and Robert Kessler, Addison-Wesley, Boston, MA, 2003. 288 pp., $34.99(paper). ISBN 0-201-74576-3.

Reviewed by Charles Ashbacher


PDF Version

After reading several books on extreme programming or XP and questioning some of the basic premises, this is the book that I have been waiting for, although it still leaves some gaps in the justification. One of the main tenets of XP is that the programmers work in pairs, with one typing while the other monitors and thinks ahead. While I have never questioned that this is a way to avoid many of the simple logical errors that always arise, I have always had a concern about how the coders are paired. It seemed to me that the wide differences in ability could create as many problems as are solved. The bulk of this book deals with some of the problems that can arise from pairing, with most of the possibilities examined.

There are twelve chapters devoted to the problems of pair programming, with five dealing with a difference in skills:

12) Expert-expert pairing.
13) Expert-average pairing.
14) Expert-novice pairing.
15) Novice-novice pairing.

where each of the chapters is broken up into the subsections:

Characteristics of success
Personal scenarios

While I generally agree with the analysis of these scenarios, I question two points. The first is the lack of an average-novice pairing. Given that most programmers are by definition average and we are all novices at some point, that would be one of the most common possibilities. To leave it out is to me a major omission. The second point is that the advice on novice-novice pairing should be simple. “Avoid if at all possible.” Their arguments are that two novices can learn from each other. While true, in my experience the learning they do is generally wrong. Since you could not rely on them to do anything other than the most basic work and they are most likely infecting each other with their incorrect knowledge and bad habits, this is simply not a feasible option to me.

Additional potential problems of pair programming that are examined are gender issues, differences in culture, one person dominating the typing, an excess of ego in one of the pair, and a lack of ego in one of the pair. I am in complete agreement with the authors regarding their analysis of the gender (non)issue. With the exception of someone who truly has a negative attitude towards the opposite sex, problems due to differences in the gender of programmers are quite rare. The only problems I have ever seen with differences in gender have been when the partner of one of the workers has issues with their partner spending so much time in close proximity with a person of the opposite sex. However, that is a personal relationship issue and has little to do with pair programming itself. Similarly, the excess or deficiency of ego is a problem that crops up in all walks of life and is in no way specific to pair programming.

When people from different social cultures work together, problems occur whether people are pair programming or not. This is a general problem that is not specific to pair programming and is handled in the same way independent of the context. However, problems occur when the members of the pair come from different programming cultures. In my experience, this often leads to intense battles over minor points. I personally have witnessed shouting matches over the “proper” way to name variables and what format style to use. This is a point that should have been addressed in the book, as it is far more likely to occur.

While pair programming is a fundamental component of XP, it can be done outside of the XP methodology. One of the concerns I have continued to voice regarding XP has been how to deal with the broad range of problems that can occur when two people work closely together in an environment that is stressful, demanding and sometimes hostile. This book has answered some of those questions, although there are some areas that should have received more coverage.

Cite this book review as follows: Charles Ashbacher: Review of “Pair Programming Illuminated”, in Journal of Object Technology, Vol. 1, No. 5, November-December 2002, pages 179-180.