An Experiment in Collaborative Programming: How Distributed Cognition Impacts Performance Outcomes

Agile methods are innovative systems development methods that strive for greater speed and flexibility in development and focus on developer collaboration. Pair programming is an agile method in which two programmers work together to write test cases and program code. Anecdotal evidence and some research on pair programming find that this approach produces better quality software, in reduced time, with higher levels of developer satisfaction. To date, little explanation is offered about how developers should work together in pairs to realize these improved performance outcomes. In this paper we report on an intensive study of developers using pair programming on several tasks. We use the theory of distributed cognition to analyze the programming dyads’ communications while working. We anticipate that this study will help illuminate why collaborative development methods can improve programming outcomes, and identify specific work processes that can be taught as best practices to those using such methods.