This blog is based on my reflections after reading of Alistair Cockburn work. I am addressing the case of Pair-Programming to improve quality and therefore reduce cost.
In software quality can be improved through increased collaboration among talented developers. In traditional models of development this collaboration was optional with high degree of formality sometimes and with irregularities in other times. By now, we are more having understanding of software as creative and highly demanding endeavour with little influence of formal processes.
The XP practices provide a collaboration forum that help guiding developers to produce higher quality software. The higher cost incurred by adding developers is paid-off by injecting less defects, about 15%. The added programming time of having two developers instead of one is far less from being doubled. Also, we can save the cost of code review and inspection by implementing pair programming.
The impact of losing staffs becomes less as more developers know about the code. As the software code is the ultimate product of the project, then unless there is knowledge on how to modify it, business will not survive.
The specific acts of sitting together, put the ego aside and challenge the idea of each other help in team building.
Team learning is enhanced as every member learns from the other why the code is written in a certain way. This mutual conversation generates new knowledge and helps in emerging better design and to figure out more requirements.
Problem solving and design decisions are result of interaction of developers instead of being a solo decision. The programmer is author rather than translator of design.
In reality I found that code inspection is poorly implemented if not at all. I can’t remember single situation which I saw team implementing Fagan. Pair-Programming imparts code review early in the process in a preventive way. Both developers in the pair are accountable for the code which helps in discovering overlooked areas, if there was only on developer.
Code complexity is reduced as both programmers should be comfortable with the way the code is written. The programs become shorter as indication of using proper coding techniques.