Pair Programming - Principle and Practice
Written by Sue Gee   
Wednesday, 17 February 2021

The skill of pair programming, an increasingly popular agile software development technique, is separate from the general software development skill. Years of PP experience are neither a prerequisite nor sufficient for successful pair programming.

These findings form the overall conclusions of a paper, Two Elements of Pair Programming Skill, accepted for the 43rd International Conference on Software Engineering (ICSE 2021) which was scheduled to take place in Madrid in May but is now going to be virtual. Franz Zieris and Lutz Prechelt of the Institut fur Informatik, Freie Universitat Berlin set out to explore the elements of pair programming skill by qualitative analyses of pair programming sessions, looking for patterns of problematic behavior to conceptualize key elements of what 'good' and 'bad' pairs do differently.

To fill in some background, pair programming (PP) is where two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.

PP is one of techniques of Extreme Programming, XP.  The paper cites Kent Beck, author of "EXtreme Programming EXplained: Embrace Change" (1999) and the person who more or less invented XP,  characterizing PP as:

“a dialog between two people trying to [...] program (and analyze and design and test)” which “is a subtle skill, one that you can spend the rest of your life getting good at”

Zieris and Prechelt comment that in his book:

Beck sees many benefits in this practice, such as higher code quality in less time. He does not, however, elaborate on the aspects of the “skill” underlying these benefits; he merely alludes to the importance of communication and coordination.

They also note:

Much of pair programming research appears to be built on the assumption that PP does not involve any particular skill beyond general software development experience.

Their research sets out to explore what skills are required for successful pair programming, and how they relate to general software development skills with the overall goal of understanding  how ‘good’ and ‘bad’ pair programming sessions differ by analyzing PP sessions from a repository over 60 everyday PP sessions from 13 companies comprising audio, webcam, and screencast along with pre- and post-session questionnaires filled out by the developers. They took pains to choose sessions from the repository with pair members who had been pair-programing regularly for years and those new to the practice, as well as involving experienced software developers and novices.

The two elements of pair programming skill alluded to in the paper's title and which the researchers claim are independent of software development skills are:

  • Togetherness Good pairs manage to stay together, that is, to establish and maintain a shared mental model throughout their session. They detect and address relevant discrepancies in each other’s understanding of their task, work state, software system, and software development in general.
  • Expediency Good pairs balance short-term goals, such as identifying a defect or implementing a new feature, and longterm goals, e.g., addressing any member’s knowledge gaps.

They also identify three anti-patterns, problematic behavioral patterns that affect one or both of these elements:

  • Getting Lost in the Weeds Both partners stay together as a pair, but lose sight of which topics are worth pursuing.
  • Losing the Partner One pair member focuses too much on the task and explains too little.
  • Drowning the Partner One pair member explains too much, which may harm the pair’s Togetherness and Expediency.

The researchers conclude that prior PP experience alone does not explain beneficial and problematic behavior and note that longitudinal research with the same developers over longer time frames will be needed to understand and disentangle the influence of developers’ personal styles, their day-to-day form, and their experience with pair programming in general or with a particular partner.



Pair Programming (2007) Source: Wikipedia

More Information

Two Elements of Pair Programming Skill

Related Articles

Who’s Afraid of eXtreme Programming

Mob Programming - The Next Big Thing?

Happy Programmers Produce Better Apps

Software Development Metrics 


To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.



Andrew Tanenbaum Gains ACM Award

Andrew Tanenbaum has been awarded the 2023 ACM System Software Award for MINIX the operating system he created for teaching purposes and which was an important influence on Linux.

Devoxx UK Sessions Now Available Online

The sessions from this year's British branch of the premier Java developer community conference, are now available online, for free.

More News

kotlin book



or email your comment to:

Last Updated ( Wednesday, 17 February 2021 )