Pair programming and the mysterious role of the navigator

Computer programming is generally understood to be highly challenging and since its inception a wide range of approaches, tools and methodologies have been developed to assist in managing its complexity. Relatively recently the potential benefits of collaborative software development have been formalised in the practice of pair programming. Here we attempt to 'unpick' the pair programming process through the analysis of verbalisations from a number of commercial studies. We focus particularly on the roles of the two programmers and what their key characteristics and behaviours might be. In particular, we dispute two existing claims: (i) that the programmer who is not currently typing in code (''the navigator'') is constantly reviewing what is typed and highlighting any errors (i.e. acting as a reviewer) and (ii) that the navigator focuses on a different level of abstraction as a way of ensuring coverage at all necessary levels (i.e. acting as a foreman). We provide an alternative model for these roles (''the tag team'') in which the driver and navigator play much more equal roles. We also suggest that a key factor in the success of pair programming may be the associated increase in talk at an intermediate level of abstraction.

[1]  Ronald Jensen A pair programming experience , 2003 .

[2]  Michelene T. H. Chi,et al.  Eliciting Self-Explanations Improves Understanding , 1994, Cogn. Sci..

[3]  Sallyann Bryant Double Trouble: Mixing Qualitative and Quantitative Methods in the Study of eXtreme Programmers , 2004, 2004 IEEE Symposium on Visual Languages - Human Centric Computing.

[4]  M. Chi Quantifying Qualitative Analyses of Verbal Data: A Practical Guide , 1997 .

[5]  Orit Hazzan,et al.  Bridging Cognitive and Social Chasms in Software Development Using Extreme Programming , 2003, XP.

[6]  Nancy Pennington,et al.  Comprehension strategies in programming , 1987 .

[7]  Pablo Romero,et al.  Pair programming and the re-appropriation of individual tools for collaborative software development , 2006, COOP.

[8]  Pablo Romero,et al.  The Collaborative Nature of Pair Programming , 2006, XP.

[9]  Bill Curtis,et al.  By the way, did anyone study any real programmers? , 1986 .

[10]  Etienne Wenger,et al.  Situated Learning: Legitimate Peripheral Participation , 1991 .

[11]  Laurie A. Williams,et al.  The effects of "pair-pressure" and "pair-learning" on software engineering education , 2000, Thirteenth Conference on Software Engineering Education and Training.

[12]  Judith Good,et al.  Program comprehension and authentic measurement: : a scheme for analysing descriptions of programs , 2004, Int. J. Hum. Comput. Stud..

[13]  Bob Rehder,et al.  Cognitive Activities and Levels of Abstraction in Procedural and Object-Oriented Design , 1995, Hum. Comput. Interact..

[14]  Laurie A. Williams,et al.  Strengthening the Case for Pair Programming , 2000, IEEE Softw..

[15]  Shaaron Ainsworth,et al.  The effects of self‐explaining when learning with text or diagrams , 2003 .

[16]  William C. Wake,et al.  Extreme Programming Explored , 2001 .

[17]  Sallyann Bryant,et al.  Rating Expertise in Collaborative Software Development , 2005, PPIG.

[18]  John T. Nosek,et al.  The case for collaborative programming , 1998, CACM.

[19]  Laurie A. Williams,et al.  Pair Programming Illuminated , 2002 .

[20]  Eliot Soloway,et al.  Workshop on empirical studies of programmers , 1986, SOEN.

[21]  Kent Beck,et al.  Extreme Programming Explained: Embrace Change (2nd Edition) , 2004 .

[22]  Alan F. Blackwell,et al.  Mental imagery in program design and visual programming , 1999, Int. J. Hum. Comput. Stud..

[23]  Steve Parkes,et al.  Trends in the use of verbal protocol analysis in software engineering research , 2003, Behav. Inf. Technol..

[24]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[25]  Margaret M. Burnett,et al.  Pair Collaboration in End-User Debugging , 2006, Visual Languages and Human-Centric Computing (VL/HCC'06).

[26]  Andrew j. Dick,et al.  Paired Programming & Personality Traits , 2002 .

[27]  E. Hutchins Cognition in the wild , 1995 .

[28]  Johnette Hassell,et al.  Information Relationships in PROLOG Programs: How Do Programmers Comprehend Functionality? , 1991, Int. J. Man Mach. Stud..

[29]  Ruven E. Brooks,et al.  Towards a Theory of the Comprehension of Computer Programs , 1983, Int. J. Man Mach. Stud..

[30]  Alan F. Blackwell What is Programming , 2002 .