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.
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].
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.
Join the Discussion (0)
Become a Member or Sign In to Post a Comment