Background: Pair programming is a well-established and versatile agile practice. Previous research has found it to involve far more different roles than the well-known Driver and Observer/Navigator roles. Pair programming often involves heavy knowledge transfer from mainly one partner to the other. Objective: Understand how to fill the ensuing Teacher and Student roles well (positive behavioral patterns). Understand how they may break (anti-patterns). Method: Open coding and axial coding of 17 recorded pair programming sessions with 18 developers from 5 German software companies, plus interviews with 6 different developers from 4 other German companies. Results: We describe six facets of effective Teacher behavior (e.g. Prioritizing Knowledge Transfer) and two facets of effective Student behavior (e.g. Expressing Knowledge Wants). We describe four harmful would-be-Teacher behaviors (e.g. Pushing Unwanted Knowledge), and one harmful would-be-Student behavior (Failing to Provide a Back Channel). Conclusions: The role facets can serve as learning goals and to-do list for developers who want to develop strong pair programming skill. The anti-patterns can serve as warnings for one's own general behavior and as triggers for immediate meta-discussion if they occur within a pairing session.
翻译:背景:结对编程是一种成熟且多功能的敏捷实践。先前研究发现,其涉及的角色远不止众所周知的驾驶员(Driver)和观察者/导航员(Observer/Navigator)。结对编程通常涉及大量知识转移,且主要从一方传递给另一方。目的:理解如何有效履行由此产生的教师与学生角色(积极行为模式),并理解这些角色可能如何失效(反模式)。方法:对来自5家德国软件公司的18名开发人员进行的17场结对编程会话记录进行开放式编码和轴向编码,并访谈来自另外4家德国公司的6名不同开发人员。结果:我们描述了有效教师行为的六个方面(例如,优先考虑知识转移)和有效学生行为的两个方面(例如,表达知识需求)。我们描述了四种有害的“伪教师”行为(例如,强推不需要的知识)和一种有害的“伪学生”行为(未能提供反馈渠道)。结论:这些角色方面可作为希望培养强大结对编程技能的开发人员的学习目标和待办事项清单。反模式可作为对自身一般行为的警示,并可在结对会话中出现时作为立即进行元讨论的触发点。