Cooperation, collaboration and pair-programming: Field studies on backup behavior

Considering that pair programming has been extensively studied for more than a decade, it can seem quite surprising that there is such a lack of consensus on both its best use and its benefits. We argue that pair programming is not a replacement of usual developer interactions, but rather a formalization and enhancement of naturally occurring interactions. Consequently, we study and classify a broader range of developer interactions, evaluating them for type, purpose and patterns of occurrence, with the aim to identify situations in which pair programming is likely to be truly needed and thus most beneficial. We study the concrete pair programming practices in both academic and industrial settings. All interactions between teammates were recorded as backup behavior activities. In each of these two projects, developers were free to interact when needed. All team interactions were self-recorded by the teammates. The analysis of the interaction tokens shows two salient features: solo work is an important component of teamwork and team interactions have two main purposes, namely cooperation and collaboration. Cooperative backup behavior occurs when a developer provides help to a teammate. Collaborative backup behavior occurs when the teammates are sharing the same goal toward solving an issue. We found that collaborative backup behavior, which occurred much less often, is close to the formal definition of pair programming. This study suggests that mandatory pair programming may be less efficient in organizations where solo work could be done and when some interactions are for cooperative activities. Based on these results, we discussed the potential implications concerning the best use of pair programming in practice, a more effective evaluation of its use, its potential benefits and emerging directions of future research.

[1]  Felicia L. Wilczenski,et al.  Observing collaborative problem‐solving processes and outcomes , 2001 .

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

[3]  Dag I. K. Sjøberg,et al.  Effects of Personality on Pair Programming , 2010, IEEE Transactions on Software Engineering.

[4]  Shari Lawrence Pfleeger,et al.  Preliminary Guidelines for Empirical Research in Software Engineering , 2002, IEEE Trans. Software Eng..

[5]  Daniel R. Ilgen,et al.  Backing up behaviors in teams: the role of personality and legitimacy of need. , 2003, The Journal of applied psychology.

[6]  H. Hulkko,et al.  A multiple case study on the impact of pair programming on product quality , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[7]  Laurie Williams,et al.  The costs and benefits of pair programming , 2001 .

[8]  Forrest Shull,et al.  Are Two Heads Better than One? On the Effectiveness of Pair Programming , 2007, IEEE Software.

[9]  Jari Vanhanen,et al.  Experiences of Using Pair Programming in an Agile Project , 2007, 2007 40th Annual Hawaii International Conference on System Sciences (HICSS'07).

[10]  Keith C. C. Chan,et al.  Pair programming productivity: Novice-novice vs. expert-expert , 2006, Int. J. Hum. Comput. Stud..

[11]  Vincent Rousseau,et al.  Teamwork Behaviors , 2006 .

[12]  James E. Tomayko A Comparison of Pair Programming to Inspections for Software Defect Reduction , 2002, Comput. Sci. Educ..

[13]  Mario Piattini,et al.  Evaluating performances of pair designing in industry , 2007, J. Syst. Softw..

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

[15]  Keith C. C. Chan,et al.  When Does a Pair Outperform Two Individuals? , 2003, XP.

[16]  Helen Sharp,et al.  Disengagement in pair programming: Does it matter? , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[17]  Stuart Wray How Pair Programming Really Works , 2010, IEEE Software.

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

[19]  Paul E. Tesluk,et al.  Overcoming roadblocks to effectiveness: Incorporating management of performance barriers into models of work group effectiveness. , 1999 .

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

[21]  David Preston,et al.  PAIR programming as a model of collaborative learning: a review of the research , 2005 .

[22]  Audris Mockus,et al.  Variability and Reproducibility in Software Engineering: A Study of Four Companies that Developed the Same System , 2009, IEEE Transactions on Software Engineering.

[23]  P. Dillenbourg What do you mean by collaborative learning , 1999 .

[24]  Alberto Sillitti,et al.  An interpretation of the results of the analysis of pair programming during novices integration in a team , 2009, 2009 3rd International Symposium on Empirical Software Engineering and Measurement.

[25]  Jessica L. Wildman,et al.  Collaboration at work: An integrative multilevel conceptualization , 2012 .

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

[27]  William L. Kleb,et al.  Exploring XP for Scientific Research , 2003, IEEE Softw..

[28]  Alberto Sillitti,et al.  Investigating the Usefulness of Pair-Programming in a Mature Agile Team , 2008, XP.

[29]  Christopher M. Barnes,et al.  Harmful help: the costs of backing-up behavior in teams. , 2008, The Journal of applied psychology.

[30]  Alberto Sillitti,et al.  Understanding the impact of Pair Programming on developers attention: A case study on a large industrial experimentation , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[31]  Alberto Sillitti,et al.  Analysing the Usage of Tools in Pair Programming Sessions , 2011, XP.

[32]  Norsaremah Salleh,et al.  An empirical study of the effects of personality in pair programming using the five-factor model , 2009, ESEM 2009.

[33]  Alan R. Hevner,et al.  Controlled experimentation on adaptations of pair programming , 2007, Inf. Technol. Manag..

[34]  Andrew Begel,et al.  Pair programming: what's in it for me? , 2008, ESEM '08.

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

[36]  Tore Dybå,et al.  The effectiveness of pair programming: A meta-analysis , 2009, Inf. Softw. Technol..

[37]  Sven Heiberg,et al.  Pair-Programming Effect on Developers Productivity , 2003, XP.

[38]  Alberto Sillitti,et al.  Pair Programming and Software Defects--A Large, Industrial Case Study , 2013, IEEE Transactions on Software Engineering.

[39]  Jennifer L. Berdahl,et al.  The Study of Groups: Past, Present, and Future , 2000 .

[40]  Giancarlo Succi,et al.  An Empirical Analysis on the Discontinuous Use of Pair Programming , 2003, XP.

[41]  Tore Dybå,et al.  Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise , 2007, IEEE Transactions on Software Engineering.

[42]  Stephanie D. Teasley,et al.  The Construction of Shared Knowledge in Collaborative Problem Solving , 1995 .

[43]  Pierre N. Robillard,et al.  Towards software process patterns: An empirical analysis of the behavior of student teams , 2008, Inf. Softw. Technol..

[44]  Alberto Sillitti,et al.  Collecting, integrating and analyzing software metrics and personal software process data , 2003, 2003 Proceedings 29th Euromicro Conference.