Abstract
During pair programming (PP), two software developers work closely together on a technical task on one computer. Practitioners expect a number of benefits, such as faster progress, higher quality, and knowledge transfer. Much of prior research focused on directly measurable effects from laboratory settings, but could not explain the large variations observed. My research follows the Grounded Theory Methodology and is aimed at understanding how PP actually works by uncovering the underlying mechanisms to ultimately formulate practical advice for developers. The main findings from my qualitative analysis of recordings of 27 industrial PP sessions are: Task-specific knowledge about the software system is crucial for pair programming. Pairs first make sure they have a shared understanding of the relevant parts before they acquire lacking knowledge together. The transfer of general software development knowledge plays a rather small role and only occurs after the pair dealt with its need for system knowledge. Pairs who maintain a shared understanding may have short, but highly-productive Focus Phases; if their Togetherness gets too low, however, a Breakdown of the pair process may occur.
Chapter PDF
Similar content being viewed by others
References
Arisholm, E., Gallis, H., Dybå, T., Sjøberg, D.I.: Evaluating pair programming with respect to system complexity and programmer expertise. IEEE Trans. Softw. Eng. 33(2), 65–86 (2007). https://doi.org/10.1109/TSE.2007.17
Beck, K.: Extreme Programming Explained: Embrace Change. Addison-Wesley, Reading (1999)
Begel, A., Nagappan, N.: Pair programming: What’s in it for me? In: Proceedings of the Second ACM-IEEE International Symposium on Empirical Software Engineering and Measurement, pp. 120–128. ACM, New York (2008). https://doi.org/10.1145/1414004.1414026
Bryant, S.: Double trouble: Mixing qualitative and quantitative methods in the study of extreme programmers. In: IEEE Symposium on Visual Languages and Human Centric Computing, VL/HCC ’04, pp. 55–61. IEEE, Piscataway (2004). https://doi.org/10.1109/VLHCC.2004.20
Bryant, S., Romero, P., du Boulay, B.: Pair programming and the mysterious role of the navigator. International Journal of Human-Computer Studies 66(7), 519–529 (2008). https://doi.org/10.1016/j.ijhcs.2007.03.005
Coplien, J.: A generative development-process pattern language. In: Rising, L. (ed.) The Patterns Handbook: Techniques, Strategies, and Applications, pp. 243–300. Cambridge University Press, Cambridge (1998)
Hannay, J.E., Dybå, T., Arisholm, E., Sjøberg, D.I.: The effectiveness of pair programming: a meta-analysis. Inform. Softw. Technol. 51(7), 1110–1122 (2009). https://doi.org/10.1016/j.infsof.2009.02.001
Plonka, L., Sharp, H., van der Linden, J., Dittrich, Y.: Knowledge transfer in pair programming: an in-depth analysis. International Journal of Human-Computer Studies 73, 66–78 (2015). https://doi.org/10.1016/j.ijhcs.2014.09.001
Pyhäjärvi, M.: Power dynamics in pairs and mobs (2018). https://visible-quality.blogspot.com/2018/05/power-dynamics-in-pairs-and-mobs.html
Salinger, S., Prechelt, L.: Understanding Pair Programming: The Base Layer. Books on Demand (2013). http://www.inf.fu-berlin.de/inst/ag-se/pubs/SalPre13-baseconbook.pdf
Schenk, J., Prechelt, L., Salinger, S.: Distributed-pair programming can work well and is not just distributed pair-programming. In: Proceedings of the 36th International Conference on Software Engineering, ICSE ’14, pp. 74–83. ACM Press, New York (2014). https://doi.org/10.1145/2591062.2591188
Sedano, T., Ralph, P., Péraire, C.: Sustainable software development through overlapping pair rotation. In: Proceedings of the 10th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, ESEM ’16, pp. 19:1–19:10. ACM Press, New York (2016). https://doi.org/10.1145/2961111.2962590
StackOverflow: 2018 stack overflow developer survey (2018). https://insights.stackoverflow.com/survey/2018
Strauss, A., Corbin, J.: Basics of Qualitative Research. Grounded Theory Procedure and Techniques. Sage Publications, New York (1990)
Tracy, S.J.: Qualitative quality: eight “big-tent” criteria for excellent qualitative research. Qual. Inq. 16(10), 837–851 (2010). https://doi.org/10.1177/1077800410383121
Walle, T., Hannay, J.E.: Personality and the nature of collaboration in pair programming. In: Proceedings of the 3rd International Symposium on Empirical Software Engineering and Measurement, pp. 203–213. IEEE, Piscataway (2009). https://doi.org/10.1109/ESEM.2009.5315996
Williams, L., Kessler, R.R.: Pair Programming Illuminated. Addison-Wesley, Reading (2002)
Zarb, M., Hughes, J., Richards, J.: Industry-inspired guidelines improve students’ pair programming communication. In: Proceedings of the 18th ACM Conference on Innovation and Technology in Computer Science Education, pp. 135–140 (2013). https://doi.org/10.1145/2462476.2462504
Zieris, F.: Qualitative analysis of knowledge transfer in pair programming. Ph.D. Thesis, Fachbereich Mathematik und Informatik, Freie Universität Berlin (2020). https://doi.org/10.17169/refubium-28718
Zieris, F., Prechelt, L.: On knowledge transfer skill in pair programming. In: Proceedings of the 8th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, ESEM ’14, pp. 11:1–11:10. ACM, New York (2014). https://doi.org/10.1145/2652524.2652529
Zieris, F., Prechelt, L.: Observations on knowledge transfer of professional software developers during pair programming. In: Proceedings of the 38th International Conference on Software Engineering Companion, ICSE ’16 (SEIP), pp. 242–250. ACM, New York (2016). https://doi.org/10.1145/2889160.2889249
Zieris, F., Prechelt, L.: Explaining pair programming session dynamics from knowledge gaps. In: Proceedings of the 42nd International Conference on Software Engineering, ICSE ’20, pp. 421–432. ACM, New York (2020). https://doi.org/10.1145/3377811.3380925
Zieris, F., Prechelt, L.: PP-ind: Description of a repository of industrial pair programming research data (2020). https://arxiv.org/abs/2002.03121v5
Zieris, F., Prechelt, L.: Two elements of pair programming skill. In: Proceedings of the 43rd International Conference on Software Engineering, ICSE ’21 (NIER). IEEE, Piscataway (2021). https://arxiv.org/abs/2102.06460
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Open Access This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made.
The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.
Copyright information
© 2022 The Author(s)
About this chapter
Cite this chapter
Zieris, F. (2022). Understanding How Pair Programming Actually Works in Industry: Mechanisms, Patterns, and Dynamics. In: Felderer, M., et al. Ernst Denert Award for Software Engineering 2020. Springer, Cham. https://doi.org/10.1007/978-3-030-83128-8_13
Download citation
DOI: https://doi.org/10.1007/978-3-030-83128-8_13
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-83127-1
Online ISBN: 978-3-030-83128-8
eBook Packages: Computer ScienceComputer Science (R0)