Muhammad Tauqeer Haider; Imran Ali MSE-2011-52, pp. 79. COM/School of Computing, 2011.
Context. Agile methods address the challenges of an unpredictable world by relying on “people and their creativity rather than on processes”, accelerate delivery of software and considered as a reaction to plan-based or traditional methods. Distributed software development helps to access a pool of skilled personnel, completion of tasks around the clock and more. Incorporating of agile methods in distributed software development could help to solve some problems of distributed software development such as lack of communication and its dependencies, close collaboration and so on.
Objectives. In this study we investigate the proposed benefits of pair programming, an XP development technique used by agile, and its effects on performance and social practices in distributed software development.
Methods. Systematic literature review and an experiment are utilized to fulfill the objectives of this study. In the systematic review a sub-set of the research articles are selected relevant to the subject of this study from the electronic sources including, ACM Digital Library, IEEE, Xplore, EiVillage (Compendx, Inspec), Science Direct and ISI Web of Science. Experiment is conducted to investigate the pair programming effects on performance and social practices.
Results. Many proposed benefits of pair programming in existing literature are identified and reported in both collocated and distributed settings. Pair programming is reported as an effective software development technique as well as a pedagogical tool. Experimental results showed that pair programming also effects performance in distributed software development, and positively impacts the social practices (human or social factors).
Conclusions. There are many benefits of pair programming reported in collocated settings and less in distributed software development. Pair programming impacts the performance and social practices positively. However, we also conclude that the effective use of pair programming in distributed software development will yield the concrete results as well as the programmers’ pairs should be trained, experienced and well motivated for an effective use of pair programming and to overcome the challenges of distributed software development.