Types of Cooperation Episodes in Side-by-Side Programming

In side-by-side programming, two programmers (typically working on related aspects of a project) move their computers so close to one another that they can effortlessly change between working alone and working together, where working alone is the primary mode. The technique was proposed in order to obtain some of the advantages of pair programming at much lower overhead. As a first step towards understanding how and when to use side-by-side programming, the present study aims at describing when and for what purpose side-by-side programmers get together to cooperate. The main result is a classification of the cooperation episodes by purpose and content into different types: Exchange project details, Exchange general knowledge, Discuss strategy, Discuss step, Debug work product, Integrate work products, and Make remark. These types were derived via the Grounded Theory method and are described conceptually in terms of the types of events of which they consist. All concepts used in these descriptions are grounded in actual observations.

[1]  Laurie A. Williams,et al.  Pair Learning: With an Eye Toward Future Success , 2003, XP/Agile Universe.

[2]  Eric Anthony Day,et al.  Relationships among team ability composition, team mental models, and team performance. , 2006, The Journal of applied psychology.

[3]  Jan Chong,et al.  The Social Dynamics of Pair Programming , 2007, 29th International Conference on Software Engineering (ICSE'07).

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

[5]  Lech Madeyski Preliminary Analysis of the Effects of Pair Programming and Test-Driven Development on the External Code Quality , 2005, Software Engineering: Evolution and Emerging Technologies.

[6]  U. Kelle "Emergence" vs. "forcing" of empirical data? A crucial problem of "grounded theory" reconsidered , 2005 .

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

[8]  Helen Sharp,et al.  An Ethnographic Study of XP Practice , 2004, Empirical Software Engineering.

[9]  Marcus Ciolkowski,et al.  Experiences with a Case Study on Pair Programming , 2002 .

[10]  Teresa M. Shaft Helping programmers understand computer programs: the use of metacognition , 1995, DATB.

[11]  Pablo Romero,et al.  Pair programming and the mysterious role of the navigator , 2008, Int. J. Hum. Comput. Stud..

[12]  A. Strauss Basics Of Qualitative Research , 1992 .

[13]  Laurie A. Williams,et al.  Improving the CS1 experience with pair programming , 2003, SIGCSE.

[14]  Charles E. McDowell,et al.  The impact of pair programming on student performance, perception and persistence , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

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

[16]  Michael Philippsen,et al.  Two Controlled Experiments Assessing the Usefulness of Design Pattern Documentation in Program Maintenance , 2002, IEEE Trans. Software Eng..

[17]  Lutz Prechelt,et al.  What Happens During Pair Programming , 2008, PPIG.

[18]  Kent L. Beck,et al.  Extreme programming explained - embrace change, Second Edition , 2005, The XP series.

[19]  A. Strauss,et al.  Basics of qualitative research: Grounded theory procedures and techniques. , 1992 .

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

[21]  Pamela Jordan Basics of qualitative research: Grounded theory procedures and techniques , 1994 .

[22]  Lutz Prechelt,et al.  A Coding Scheme Development Methodology Using Grounded Theory for Qualitative Analysis of Pair Programming , 2007, PPIG.

[23]  Andrian Marcus,et al.  An empirical study of programmer learning during incremental software development , 2005, Fourth IEEE Conference on Cognitive Informatics, 2005. (ICCI 2005)..

[24]  Michael Philippsen,et al.  Two controlled experiments assessing the usefulness of design pattern information during program maintenance [online] , 1998 .

[25]  Laurie Williams,et al.  Integrating pair programming into a software development process , 2001, Proceedings 14th Conference on Software Engineering Education and Training. 'In search of a software engineering profession' (Cat. No.PR01059).

[26]  Pablo Romero,et al.  "Talking the talk": Is intermediate-level conversation the key to the pair programming success story? , 2007, Agile 2007 (AGILE 2007).

[27]  Laurie A. Williams,et al.  In support of student pair-programming , 2001, SIGCSE '01.

[28]  Gautam Shroff,et al.  Distributed side-by-side programming , 2009, 2009 ICSE Workshop on Cooperative and Human Aspects on Software Engineering.

[29]  Alistair Cockburn,et al.  Crystal Clear: A Human-Powered Methodology for Small Teams , 2004 .

[30]  Alistair Cockburn,et al.  Agile Software Development: The Business of Innovation , 2001, Computer.

[31]  Charles E. McDowell,et al.  The effects of pair-programming on performance in an introductory programming course , 2002, SIGCSE '02.

[32]  Michele Marchesi,et al.  Extreme Programming and Agile Processes in Software Engineering , 2003, Lecture Notes in Computer Science.

[33]  K. Holyoak Mental representations. , 1982, Science.

[34]  Charles E. McDowell,et al.  Program quality with pair programming in CS1 , 2004, ITiCSE '04.

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

[36]  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.

[37]  Krzysztof Zielinski,et al.  Software Engineering: Evolution and Emerging Technologies , 2005, Software Engineering: Evolution and Emerging Technologies.

[38]  Jerzy R. Nawrocki,et al.  Pair Programming vs. Side-by-Side Programming , 2005, EuroSPI.

[39]  Laurie A. Williams,et al.  Experiments with Industry's “Pair-Programming” Model in the Computer Science Classroom , 2001, Comput. Sci. Educ..