Knowledge transfer in pair programming: An in-depth analysis

Abstract Whilst knowledge transfer is one of the most widely-claimed benefits of pair programming, little is known about how knowledge transfer is achieved in this setting. This is particularly pertinent for novice−expert constellations, but knowledge transfer takes place to some degree in all constellations. We ask “what does it take to be a good “expert” and how can a “novice” best learn from a more experienced developer?”. An in-depth investigation of video and audio excerpts of professional pair programming sessions using Interaction Analysis reveals: six teaching strategies, ranging from “giving direct instructions” to “subtle hints”; and challenges and benefits for both partners. These strategies are instantiations of some but not all teaching methods promoted in cognitive apprenticeship; novice articulation, reflection and exploration are not seen in the data. The context of pair programming influences the strategies, challenges and benefits, in particular the roles of driver and navigator and agile prioritisation which considers business value rather than educational progression. Utilising these strategies more widely and recognizing the challenges and benefits for both partners will help developers to maximise the benefits from pairing sessions.

[1]  Dieter Rombach,et al.  Proceedings of the Second ACM-IEEE international symposium on Empirical software engineering and measurement , 2008, ESEM 2008.

[2]  Tammy VanDeGrift Coupling pair programming and writing: learning about students' perceptions and processes , 2004, SIGCSE.

[3]  Evangelos Tolias,et al.  From twin training to pair programming , 2009, ISEC '09.

[4]  L. S. Vygotskiĭ,et al.  Mind in society : the development of higher psychological processes , 1978 .

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

[6]  Susan E. Newman,et al.  Cognitive Apprenticeship: Teaching the Craft of Reading, Writing, and Mathematics. Technical Report No. 403. , 1987 .

[7]  Barry W. Boehm,et al.  An empirical comparison between pair development and software inspection in Thailand , 2006, ISESE '06.

[8]  Arlo Belshee Promiscuous pairing and beginner's mind: embrace inexperience [agile programming] , 2005, Agile Development Conference (ADC'05).

[9]  Laurie A. Williams,et al.  An initial exploration of the relationship between pair programming and Brooks' law , 2004, Agile Development Conference.

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

[11]  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).

[12]  Casper Lassenius,et al.  Effects of pair programming at the development team level: an experiment , 2005, 2005 International Symposium on Empirical Software Engineering, 2005..

[13]  Yvonne Dittrich,et al.  Exploring the Role of Instant Messaging in a Global Software Development Project , 2011, 2011 IEEE Sixth International Conference on Global Software Engineering.

[14]  L. Plonka,et al.  Investigating Equity of Participation in Pair Programming , 2012, 2012 Agile India.

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

[16]  Greg Luck Subclassing XP: breaking its rules the right way , 2004, Agile Development Conference.

[17]  Sten R. Ludvigsen,et al.  The role of social interaction in software effort estimation: Unpacking the "magic step" between reasoning and decision-making , 2012, Inf. Softw. Technol..

[18]  Paul Hodgetts Refactoring the development process: experiences with the incremental adoption of agile practices , 2004, Agile Development Conference.

[19]  Franz Zieris,et al.  Liberating pair programming research from the oppressive driver/observer regime , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[20]  Stewart Marshall,et al.  Student Perceptions of the Suitability of Extreme and Pair Programming , 2001 .

[21]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[22]  Brian J. Ford but … , 1981 .

[23]  Mika Mäntylä,et al.  Issues and Tactics when Adopting Pair Programming: A Longitudinal Case Study , 2007, International Conference on Software Engineering Advances (ICSEA 2007).

[24]  Christian Schindler,et al.  Agile Software Development Methods and Practices in Austrian IT-Industry: Results of an Empirical Study , 2008, 2008 International Conference on Computational Intelligence for Modelling Control & Automation.

[25]  Alberto Sillitti,et al.  Pair Programming and Software Defects - An Industrial Case Study , 2011, XP.

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

[27]  Austin Henderson,et al.  Interaction Analysis: Foundations and Practice , 1995 .

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

[29]  Laura Plonka,et al.  Unpacking collaboration in pair programming in industrial settings , 2012 .

[30]  D. C. Merrill,et al.  Tutoring: Guided Learning by Doing , 1995 .

[31]  W. Marsden I and J , 2012 .

[32]  Bill Greene Agile methods applied to embedded firmware development , 2004, Agile Development Conference.

[33]  Pekka Abrahamsson,et al.  Perceived Effects of Pair Programming in an Industrial Context , 2007, 33rd EUROMICRO Conference on Software Engineering and Advanced Applications (EUROMICRO 2007).

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

[35]  Nader Kameli,et al.  Application of tightly coupled engineering team for development of test automation software - a real world experience , 2003, Proceedings 27th Annual International Computer Software and Applications Conference. COMPAC 2003.

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

[37]  Helen Sharp,et al.  Collaboration in Pair Programming: Driving and Switching , 2011, XP.

[38]  L. Vygotsky Mind in Society: The Development of Higher Psychological Processes: Harvard University Press , 1978 .

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

[40]  Daniel M. Berry,et al.  The importance of ignorance in requirements engineering , 1995, J. Syst. Softw..

[41]  L. Williams But, isn't that cheating? [collaborative programming] , 1999, FIE'99 Frontiers in Education. 29th Annual Frontiers in Education Conference. Designing the Future of Science and Engineering Education. Conference Proceedings (IEEE Cat. No.99CH37011.

[42]  Pm Jenkinson,et al.  Cognitive , 2020, Definitions.

[43]  William J. Clancey,et al.  Learning as Social and Neural , 1992 .

[44]  Matthew W. Lewis,et al.  Self-Explonations: How Students Study and Use Examples in Learning to Solve Problems , 1989, Cogn. Sci..

[45]  V. Dennen COGNITIVE APPRENTICESHIP IN EDUCATIONAL PRACTICE: RESEARCH ON SCAFFOLDING, MODELING, MENTORING, AND COACHING AS INSTRUCTIONAL STRATEGIES , 2003 .