Research and Advances
Computing Applications Flexible and distributed software processes: old petunias in new bowls?

Globally Distributed Software Development and Pair Programming

The benefits of pair programming are unquestioned provided the pairs work in close proximity. Globally distributed software development creates opportunities for remote pair programming. What must be done to yield the same benefits?
Posted
  1. Introduction
  2. Properties are Enabled by a Cross-Workspace Information Infrastructure
  3. The Challenge for Remote Pair Programming
  4. References
  5. Author
  6. Figures

It’s been nearly 15 years since I published the first research article on the qualitative benefits of pair programming [2]. Since then, Williams et al. [4] and others have quantified these benefits, and an entire agile software development methodology—Extreme Programming [1]—has emerged, in which pair programming is a core practice. This methodology is now commonly used within software development firms.

However, economic pressures are forcing firms to employ more globally distributed software teams, where the programmers are likely to be total strangers dispersed across the world, connected only via the Internet or other high-speed networks. Can such distributed teams still obtain the benefits of programming in pairs?

To answer this question one must realize that the benefits of pair programming derive from properties that emerge when two people work side-by-side, in close proximity. I originally listed seven properties, the most commonly cited of which is that pairs “search through a larger space of alternatives.” This property leads to the benefit of pairs producing more optimal solutions compared to when individuals work alone.

There are six additional properties that mutually reinforce one another, and that facilitate properties like searching through a larger space of alternatives. They are: efficient communication; the ongoing sharing of goals and plans; joint production of ambiguous plan segments; reuse of system knowledge; shared memory for old plans; and the ability to dynamically incorporate new divisions of labor and collaborative interaction systems.

For remote pair programming to have the same benefits as close-proximity pair programming, remote pairs must exhibit these properties.

Back to Top

Properties are Enabled by a Cross-Workspace Information Infrastructure

Such properties—and others yet to be discovered—are enabled by an information infrastructure that we largely take for granted when people work in close proximity. Figure 1 depicts this infrastructure.

The information infrastructure consists of not only visual and manual channels between a programmer and his or her computer but—more importantly—always available, easy-to-access cross-workspace visual, manual, and audio channels. These cross-workspace channels allow pairs to collaborate and provide subtle, yet significant catalysts for ongoing knowledge sharing and helping activities.

For example, an overheard mumble, or a headshake seen in peripheral vision, can be the catalyst for the pairs updating one another or for joint problem-solving activities, which lead to observed properties like exploring larger spaces of alternatives.

Such collaborative activities take place frequently when pairs work in close proximity, precisely because these cross-workspace channels are always available and easy to access. For instance, by merely turning one’s head and speaking, a programmer can access and influence the other programmer’s workspace. This ability to easily push and pull information across workspaces allows the pairs to maintain four kinds of important knowledge: task, system structure, modifications, and system behavior, and to exhibit the seven properties listed here [2].

Back to Top

The Challenge for Remote Pair Programming

For a remote programming pair to exhibit the same properties as a close-proximity pair—and thus benefit from pair programming—it is necessary to design remote collaboration tools that provide a cross-workspace information infrastructure that is isomorphic to the one that exists when programmers work in close proximity.

Remote programming pairs have the potential for cross-workspace audio, visual, and manual channels available via their computers (see Figure 2). The challenge is to both encode the proper cross-workspace information as well as to give the remote pairs the same level of availability and ease of access to this cross-workspace information as pairs working in close proximity.

Back to Top

Back to Top

Back to Top

Figures

F1 Figure 1. Visual-audio-manual information channels when programmers work in close proximity

F2 Figure 2. Pairs working remotely. The proper cross-workspace visual, audio, and manual information must be encoded.

Back to top

    1. Beck, K. and Andres, C. Extreme Programming Explained. Addison-Wesley, 2004.

    2. Flor, N. Side-by-side collaboration. International Journal of Human-Computer Studies 49 (1998), 201–222.

    3. Flor, N. and Hutchins, E. Analyzing distributed cognition in software teams. Empirical Studies of Programmers: Fourth Workshop. J. Koenemann-Belliveau, T. Moher, and S. Robertson, Eds. Ablex, Norwood, NJ, 1991

    4. Williams, L., Kessler, R., Cunningham, W., and Jeffries, R. Strengthening the case for pair programming. IEEE Software 17 (2000), 19–25.

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More