Understanding Pair Programming and extended Distributed Pair Programming
Final Report Abstract
Pair Programming (PP) is a software engineering practice in which two people work closely together on one technical task. They usually share one computer (co-located PP), but - given the appropriate technical infrastructure - the same idea can also be applied to two developers working in different locations (distributed pair programming, DPP). Practitioners expect a number of benefits, such as improved code quality, faster progress, and the transfer of knowledge. The present project had two strands: Understanding how the knowledge transfer within PP works and understanding how DPP differs from PP and what technical infrastructure for supporting DPP should look like. We use recordings of natural industrial PP sessions and deep qualitative analysis for both parts, and additionally tool-building for the second. The key findings about knowledge transfer were these: (1) Knowledge transfer episodes happen in three different modes we call 'pull' (explanations are requested), 'push' (spontaneous explanations), and 'co-produce' (collaborative investigations). (2) Code-base specific knowledge is far more important during PP than generic knowledge. (3) There is a characteristic overall dynamic in all PP sessions with 2+1 phases. (4) Keeping the pair's knowledge in sync is a most important success factor for effective PP. (5) Good pairs sometimes get into a mode (for a short time) where they appear to have completely synchronized thinking and can make very rapid and fluent progress. (6) If done wrong, the PP process can break down such that no progress is make whatsoever, even if one partner alone could make progress. Regarding DPP, we found that our Eclipse-based tool Saros (which keeps two Eclipse IDEs and workspaces in sync in real-time) allows pairs familiar with each other a smooth work style that differs only little from local PP and appears to be just as efficient. The only noticeable process differences were some simple behaviors (such as double-clicking words to highlight them, which is transferred to the partner) for overcoming limitations of the distributed setting (partners cannot point to things on the screen with their fingers) and a few carefully limited behaviors for exploiting the additional freedom that the extended DPP offered by Saros (in which each partner has their own cursor), such as shortly looking something up in a different file while the partner continues working or quietly fixing minor mistakes the partner has made without interrupting their concentration.
Publications
- Understanding Pair Programming: The Base Layer. Norderstedt, Germany: BoD, Dec. 6, 2013. 224 pp. ISBN: 978-3-7322-8193-0
Stephan Salinger and Lutz Prechelt
- “Liberating Pair Programming Research from the Oppressive Driver/Observer Regime.” In: Proc. 2013 Intl. Conf. on Software Engineering. ICSE (NIER). IEEE Press, 2013, pp. 1201–1204
Stephan Salinger, Franz Zieris, and Lutz Prechelt
(See online at https://doi.org/10.1109/ICSE.2013.6606678) - “Distributed-pair Programming Can Work Well and is Not Just Distributed Pair-programming.” In: Companion Proc. 36th Intl. Conf. on Software Engineering. ICSE (SEIP). ACM, 2014, pp. 74–83
Julia Schenk, Lutz Prechelt, and Stephan Salinger
(See online at https://doi.org/10.1145/2591062.2591188) - “On Knowledge Transfer Skill in Pair Programming.” In: Proc. 8th ACM/IEEE Intl. Symp. on Empirical Software Engineering and Measurement. ESEM. ACM, 2014, 11:1–11:10
Franz Zieris and Lutz Prechelt
(See online at https://doi.org/10.1145/2652524.2652529) - “Observations on Knowledge Transfer of Professional Software Developers During Pair Programming.” In: Proc. 38th Intl. Conf. on Software Engineering Companion. ICSE (SEIP). ACM, 2016, pp. 242–250
Franz Zieris and Lutz Prechelt
(See online at https://doi.org/10.1145/2889160.2889249) - “Does Pair Programming Pay Off?” In: Rethinking Productivity in Software Engineering. Ed. by Caitlin Sadowski and Thomas Zimmermann. Apress, 2019, pp. 251– 259
Franz Zieris and Lutz Prechelt
(See online at https://doi.org/10.1007/978-1-4842-4221-6_21) - PP-ind: Description of a Repository of Industrial Pair Programming Research Data
Franz Zieris and Lutz Prechelt
- “Explaining Pair Programming Session Dynamics from Knowledge Gaps.” In: Proc. 42nd Intl. Conf. on Software Engineering. ICSE. ACM, 2020, pp. 421–432
Franz Zieris and Lutz Prechelt
(See online at https://doi.org/10.1145/3377811.3380925) - “When Grounded Theory is Not Enough: Additions for Video-Based Analyses of Software Engineering Process Phenomena.” In: Software Engineering 2020, Fachtagung des GI-Fachbereichs Softwaretechnik, 24.-28. Februar 2020, Innsbruck, Österreich. Ed. by Michael Felderer, Wilhelm Hasselbring, Rick Rabiser, and Reiner Jung. 2020, pp. 153–154
Franz Zieris
(See online at https://doi.org/10.18420/SE2020_47) - “Two Elements of Pair Programming Skill.” In: Proc. 43rd Intl. Conf. on Software Engineering. ICSE (NIER). accepted (preprint: https://arxiv.org/abs/2102.06460). IEEE Press, 2021
Franz Zieris and Lutz Prechelt
(See online at https://doi.org/10.1109/ICSE-NIER52604.2021.00019)