CSC/ECE 517 Fall 2012/ch2a 2w9 ms

From Expertiza_Wiki
Revision as of 16:51, 24 October 2012 by Sgshingr (talk | contribs)
Jump to navigation Jump to search
Pair programming

Pair Programming

This chapter will explain basic concepts of pair programming which is one of the popular Agile Software Development technique. We would also explain its benefits, advantages and disadvantages of pair programming. In the end we will conclude the topic by mentioning ongoing research in this field.

Introduction

Pair programming is a style of programming in which two programmers work side-by-side at one computer, continuously collaborating on the same design, algorithm, code or test. Use of this practice has been demonstrated to improve productivity and quality of software products in one of the paper <ref name = ref-paper />.

In Pair programming practice, two software engineers work on one task at one computer. One of the engineer acts as a driver who has control of the keyboard and mouse and (s)he creates the implementation. The other engineer acts as a navigator (also called as an observer) and watches and reviews the driver's implementation to identify defects and participates in on-demand brainstorming. The roles of driver and navigator are periodically rotated between the two software engineers. The observer also considers the strategic direction of the work, coming up with ideas for improvements and likely future problems to address. This frees the driver to focus all of his/her attention on the "tactical" aspects of completing the current task, using the observer as a safety net and guide.

Extreme Programming (XP), is an emerging software development methodology. Pair programming is one of the corollary practices of Extreme Programming. XP attributes great success to the use of “pair programming". XP advocates pair programming with such fervor that even prototyping done solo is scrapped and re-written with a partner.

Back to top

Principles of Pair Programming

There are some principles of pair programming in the context of Fulghum's Poem. (Give a link here? )

Share everything

In pair programming, two programmers are required to produce one piece of software (design, algorithm, code etc.) within a specified time limit. The two programmers are working with one mind responsible for every aspect of this piece of software. Both the driver and a navigator are equal participants in the process and both of the partners own everything and hence they should not blame each other for any defect in the artifact.

Play fair

With pair programming, one person has control of the keyboard or is recording design ideas, while the other is continuously reviewing the work. Even when one programmer is significantly more experienced than the other, it is important to take turns “driving,” so that the observer does not become disjoint or feel unimportant.

Don't hit your partner

Make sure your partner stays focused and on-task. The driver is awaiting continuous contribution and input from the navigator and hence both the partners should be focused on their part of work.

Put things back where the belong

Clean up your mess

Don't take things too seriously

Take a break from working together every afternoon

Be aware of the power of two brains

Back to top

How to achieve Pair Programming

Back to top

Benefits of Pair Programming

Back to top

Advantages

Back to top

Disadvantages

Back to top

Ongoing Research

Back to top

Conclusion

Back to top

References

<references> <ref name = ref-paper> http://www2.yk.psu.edu/~sg3/cmpbd205/assign/week01/ACMarticlePairProgramming.pdf </ref> </references>