Tuesday, October 24, 2006

Productivity Benefits of Pair Programming

Agile Programming prescribes pair-programming to enhance code productivity and quality. When two software developers sit at one computer to code, it is called pair-programming. With groups of developers, developers typically switch partners throughout the development process. Pair-Programming has been found to lead to a productivity loss of 15% for new development (Cockburn). When two developers sit at one computer to code and design, it has been found that they produce the work of two developers minus a productivity loss of 15%(Cockburn). This productivity loss is made up significantly though in Pair-Programming’s many benefits.

Pair-Programming produces higher quality code due to the peer-review effect and collaboration of two developers, resulting in fewer maintenance defects and less repairs on the field. According to Cockburn, Pair-Programmers are expected to have 15% fewer defects in their code as opposed to Solo Developers (Cockburn). This is significant because maintenance is oftentimes more expensive than basic development costs due to support overhead, developer intervention, and overall client dissatisfaction with buggy code. There is much to be said about a superior quality product that does not have significant bugs and rework. A fifteen percent upfront cost in development is more than offset by the maintenance savings.

However, the best benefit about Pair-Programming is the information sharing aspect. With pair-programming, developers are exposed to the entire application and get experience with all aspects of the product. On a complex and large project, this benefit is enormous and can be detrimental to the success of a product. Often with complex projects, there is a learning curve involved as each developer tends to specialize in their own unique tasks.

Developers do not necessarily know how to troubleshoot or fix a problem area of another developer due to this learning curve. If a developer decides to quit or is hit by a bus, there will be a significant hit to the project timeline due to the learning curve effect. However, Pair-Programming significantly reduces this risk by exposing all members of the team to each area of the project. Further, by collaborating across specialties, the strength of the development team grows. This is because by collaborating with others, developers learn new techniques they were unfamiliar with from their peers.

The team meshes, learns, and grows stronger technically and relationally as they work closely together. Each member of the team develops a solid understanding of how the entire project works and how each piece of the product works. Rather than having only a narrow view of their contribution to the project, they have an overall frame of reference to work from. This benefit will also produce a more holistic and complementary product that works well as a whole due to each programmer’s familiarity with each area. Pair-programming can be the key that unlocks productivity and quality in your software development.

References:

Cockburn, Alistair. “The Costs and Benefits of Pair Programming.” http://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF

Resources:
Details how to Pair-Program http://www.pairprogramming.com/

0 Comments:

Post a Comment

<< Home