Pair+Programming

toc

**Introduction **
Pair programming involves two programmers working on the same computer,at the same time developing a software. Chong et al (2005) suggests that p air programming has been recommended long ago as a method of advancing software development as it enables programmers to have more trust in their codes and it also makes the process of programming far more enjoyable. Nevertheless, this view is not in support by all programmers as some programmers are reluctant to work with other programmers as they believe that working with another programmer will make them work slower. Other programmers classify their codes as private codes and so they are unwilling to share it with other programmers. Still in the same view, some programmers presumes it will be difficult to pick a suitable working time and version codes (Cockburn and Williams,1998).

**History/Background **
The earliest literature made about pair programming is most likely that of Larry Constantine’s remark when he first visited Whitesmith Ltd. during the late 1970s. He took note that developers sat paired, that is, with two at each end. Following this, a book was published by Jim Coplien in 1995 titled developing in pairs. Williams (2001) indicates that a study was carried out about pair programming in 1998 and it was concluded from results that pair programming solving problem processes more enjoyable and also pair programming made the performance of programmers better. Right from the early days when software development began, even if software development has been viewed as a task carried out individually, it has been noted that there is still a level of teamwork between the programmers. Presently, many companies practice pair programming but the bulk is in companies that makes use of eXtreme programming methodology (Williams, 2001).

**Definition **
William and Kessler (2003) defines Pair Programming as a process where by two programmers develop a software by working side by side on one computer.

**Characteristics of Pair Programming **
William and Kessler (2003) believes that the characteristics of pair programming are;
 * Pair programming comprises of two programmers or developers
 * The two programmers or developers works on the same task
 * The programmers share one computer
 * There are 2 parts involved in pair programming; a driver and a navigator
 * The driver is the programmer who types on the computer or writes down the design while the navigator inspects the driver's input for mistakes.
 * The roles of a driver and a navigator are switched regularly between the two programmers
 * There is continuous communication in Agile teams between the two programmers
 * Teams hold short meetings in the morning to decide on staff pairing for that morning or afternoon to carry out tasks for the day.



**Benefits of Pair Programming **
William and Kessler (2003) indicates that the benefits of pair programming are;
 * Quality – A higher quality of work is produced as pairs programming generates codes minimal defects.
 * Time – Pair programmers are known to create higher-quality codes in the time given compared to individual programmers.
 * Morale - The Confidence of programmers are increased as teamwork enhances job c ontentment.
 * Trust and Teamwork – The relationship between pair programmers improves as they work together and this will increase the trust in Agile teams which promotes better teamwork.
 * Knowledge transfer – Pair programming encourages knowledge transfer between the programmers as different ideas are brought into the work and different ways of approaching issues are also learnt.
 * Enhance Learning - Learning is enhanced just by observing how their co-worker deals with a task, use of language abilities and also how developmental tools are used.

**Limitations of Pair Programming **
Cockburn and Williams (1998) explains that the limitation of pair programming are;
 * Pair programming may increase the staff costs as staffs will be paired to get tasks done.
 * Pair programming can lead to conflicts and clashes brought about by negative behaviours of programmers.
 * The best will not be brought out of pair programming if programmers are paired with partners that are unwilling to share knowledge and information.

**Conclusion **
It may be concluded that there are advantages and disadvantages to this method which mainly involve personality issues and cost implications.Although, within the correct environment and with the right partners, the benefits of pair programming is more than the limitations. Knowledge retention and team bonding are the main achievements of this process.

**References **
Chong, J. Plummer, R. Leifer, L. Klemmer, S. Eris, O. Toye,G. (2005) //Pair Programming: When and Why it Works.//[online] Available at: http://bit.ly/Ix9gk2 [Assessed: 6th March 2011]. Cockburn,A. Williams, L. (1998) //The// //Costs and Benefits of Pair Programming.//[online] Available at: http://bit.ly/CJcCf [Assessed: 26th Feburary 2011]. Williams, L. (2001) //Integrating Pair Programming into a Software Development Process.//[online] Available at: http://bit.ly/IM47ue [Assessed: 6th March 2011]. <range type="comment" id="844027">‍‍Williams,L. Kessler,R. (2003) //Pair Programming illuminated.//[online] Available at: http://bit.ly/KCXTHQ [Assessed: 26 February 2011]. ‍‍