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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 1 Introduction "Two heads are better than one" is a common idiom referring to the advantages of collaborative work.
*ManuscriptThe value of collaboration is explicitly encouraged in software development through a practice known as pair programming. Pair programming (PP) is a software development technique where two developers work closely together to solve a development problem [41,1].Several benefits of PP have been claimed including improved understandability and maintainability of code and design [35,37], decreased defect rates [24,18,23,10,25] and knowledge transfer [21,20,23,32,34,35,36,38,40]. This paper focuses on knowledge transfer in PP. This is common when a more experienced developer teaches a less experienced developer, for example, to bring new staff up to speed [3,42]. However, given that developers never have identical knowledge, a certain degree of knowledge transfer would be expected within every PP constellation.Pairing with someone who has a different knowledge level can be problematic [2,7] and developers tend to interact differently in this situation in comparison to pairing with other developers with similar knowledge levels [9,7]. For example, Plonka et al. [29] showed that less knowledgeable developers (novices) can disengage in PP sessions and can sometimes not follow their more knowledgeable partner (expert). These three questions are addressed through a qualitative analysis (using Interaction Analysis [19]) of video recordings of professional developers working together on their day to day t...