The Economics of Software Development by Pair Programmers

Abstract Evidence suggests that pair programmers–two programmers working collaboratively on the same design, algorithm, code, or test–perform substantially better than the two would working alone. Improved quality, teamwork, communication, knowledge management, and morale have been among the reported benefits of pair programming. This paper presents a comparative economic evaluation that strengthens the case for pair programming. The evaluation builds on the quantitative results of an empirical study conducted at the University of Utah. The evaluation is performed by interpreting these findings in the context of two different, idealized models of value realization. In the first model, consistent with the traditional waterfall process of software development, code produced by a development team is deployed in a single increment; its value is not realized until the full project completion. In the second model, consistent with agile software development processes such as Extreme Programming, code is produced and delivered in small increments; thus its value is realized in an equally incremental fashion. Under both models, our analysis demonstrates a distinct economic advantage of pair programmers over solo programmers. Based on these preliminary results, we recommend that organizations engaged in software development consider adopting pair programming as a practice that could improve their bottom line. To be able to perform quantitative analyses, several simplifying assumptions had to be made regarding alternative models of software development, the costs and benefits associated with these models, and how these costs and benefits are recognized. The implications of these assumptions are addressed in the paper.

[1]  Robert R. Kessler,et al.  The collaborative software process(sm) , 2000 .

[2]  Leon S. Levy Taming the Tiger , 1987, Springer Books on Professional Computing.

[3]  Barry W. Boehm,et al.  Software Engineering Economics , 1993, IEEE Transactions on Software Engineering.

[4]  Laurie A. Williams,et al.  Pair Programming Illuminated , 2002 .

[5]  Hakan Erdogmus,et al.  Quantitative approaches for assessing the value of COTS-centric development , 1999, Proceedings Sixth International Software Metrics Symposium (Cat. No.PR00403).

[6]  John T. Nosek,et al.  The case for collaborative programming , 1998, CACM.

[7]  Laurie A. Williams,et al.  All I really need to know about pair programming I learned in kindergarten , 2000, Commun. ACM.

[8]  Linda Rising,et al.  The Scrum Software Development Process for Small Teams , 2000, IEEE Softw..

[9]  Forrest Shull,et al.  Building Knowledge through Families of Experiments , 1999, IEEE Trans. Software Eng..

[10]  William Hayes,et al.  The Personal Software Process (PSPSM): An Empirical Study of the Impact of PSP on Individual Engineers. , 1997 .

[11]  John M. Favaro,et al.  Value based software reuse investment , 1998, Ann. Softw. Eng..

[12]  Hakan Erdogmus Comparative evaluation of software development strategies based on Net Present Value , 1999 .

[13]  Leon S. Levy Taming the Tiger: Software Engineering and Software Economics , 1986 .

[14]  Martin Fowler,et al.  Planning Extreme Programming , 2000 .

[15]  Patrick R. Delaney,et al.  Wiley GAAP 2002 : interpretation and application of generally accepted accounting principles , 2003 .

[16]  William Whipple The Engineering Economist , 1969 .

[17]  Laurie A. Williams,et al.  Strengthening the Case for Pair Programming , 2000, IEEE Softw..

[18]  W. W. Royce,et al.  Managing the development of large software systems: concepts and techniques , 1987, ICSE '87.

[19]  Alistair Cockburn,et al.  Agile Software Development , 2001 .

[20]  Glen W. Russell,et al.  Experience with inspection in ultralarge-scale development , 1991, IEEE Software.

[21]  Watts S. Humphrey,et al.  Managing the software process , 1989, The SEI series in software engineering.

[22]  David Walsh Palmieri,et al.  Knowledge Management Through Pair Programming , 2002 .

[23]  Watts S. Humphrey,et al.  A discipline for software engineering , 2012, Series in software engineering.

[24]  Bernd Brügge,et al.  Communication Metrics for Software Development , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[25]  James O. Coplien,et al.  A development process generative pattern language , 1994 .

[26]  William C. Wake,et al.  Extreme Programming Explored , 2001 .

[27]  Giancarlo Succi,et al.  Extreme Programming Examined , 2001 .

[28]  Laurie Williams,et al.  The costs and benefits of pair programming , 2001 .

[29]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[30]  Bernd Brügge,et al.  Communication Metrics for Software Development , 1998, IEEE Trans. Software Eng..

[31]  James O. Coplien,et al.  A generative development-process pattern language , 1995 .

[32]  Jim Highsmith,et al.  Agile Software Development Ecosystems , 2002 .

[33]  David S. Christensen The Costs and Benefits of the Earned Value Management Process , 1998 .

[34]  Larry Constantine,et al.  Constantine on Peopleware , 1995 .

[35]  Capers Jones Software quality - analysis and guidelines for success , 1997 .