Citizendia
Your Ad Here

Pair programming is a software development technique in which two programmers work together at one keyboard. Software development is the translation of a user need or marketing goal into a Software product A programmer is someone who writes Computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist One types in code while the other reviews each line of code as it's typed in. In Computer science, source code (commonly just source or code) is any sequence of statements or declarations written in some Human-readable Code review is systematic examination (often as Peer review) of computer Source code intended to find and fix mistakes overlooked in the initial development The person typing is called the driver. The person reviewing the code is called the observer[1] or navigator. The two programmers switch roles frequently.

While reviewing, 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 or her attention on the "tactical" aspects of completing the current task, using the observer as a safety net and guide.

Contents

Benefits

Some benefits of pair programming:

Drawbacks

Scientific studies

Studies have shown that after training for the "people skills" involved, two programmers are more than twice as productive as one for a given task. According to The Economist,

"Laurie Williams of the University of Utah in Salt Lake City has shown that paired programmers are only 15% slower than two independent individual programmers, but produce 15% fewer bugs (N. The Economist is an English-language weekly news and International affairs publication owned by The Economist Newspaper Ltd and edited in London The University of Utah (referred to locally as ' The U' or ' the U of U') is a publicly funded Research university in Salt Lake B. : The original study showed that 'error-free' code went from 70 % to 85 %; it may be more intuitive to call this a 50 % decrease of errors, from 30 % to 15 %). Since testing and debugging are often many times more costly than initial programming, this is an impressive result. " [12]

The Williams et al. 2000 study showed an improvement in correctness of around 15% and 20 to 40% decrease in time, but between a 15 and 60% increase in effort. Williams et al. 2000 also cites an earlier study (Nosek 1998) which also had a 40% decrease in time for a 60% increase in effort.

A study presents a rigorous scientific experiment in which novice–novice pairs against novice solos experience significantly greater productivity gains than expert–expert pairs against expert solos. [13]

A larger recent study (Arisholm et al. 2007) had 48% increase in correctness for complex systems, but no significant difference in time, whilst simple systems had 20% decrease in time, but no significant difference in correctness. Overall there was no general reduction in time or increase in correctness, but an overall 84% increase in effort. [14]

A recent study by Lui, Chan and Nosek published in IEEE Trans Software Engineering shows that pair programming outperforms for design tasks. [15]

Remote pair programming

Remote pair programming also known as virtual pair programming or distributed pair programming, is the practice of pair programming where the two programmers comprising the pair are in different locations, working via a collaborative real-time editor, shared desktop, or a remote pair programming IDE plugin. A collaborative editor is a Software application that allows several people to edit a Computer file using different computers In Computing, an integrated development environment ( IDE) is a Software application that provides comprehensive facilities to Computer programmers

Remote pair programming might be useful to do pair programming with offshore teams or in Open-Source projects with distributed contributors. Open source is a development methodology which offers practical accessibility to a product's source (goods and knowledge

Some teams have tried VNC and RealVNC with each programmer using his own computer. In computing Virtual Network Computing ( VNC) is a graphical Desktop sharing system which uses the RFB protocol to remotely control another Computer RealVNC is a server and client application for the Virtual Network Computing (VNC protocol to control another computer's screen remotely [16][17].

See also

References

  1. ^ Williams, Laurie (2001). Extreme Programming (or XP) is a Software engineering methodology (and a form of Agile software development) Proponents of Extreme Programming and agile The approach of software development rhythms seeks to answer the key question of whether programmer productivity is impacted by the various agile practices rather than by any single software development "Integrating Pair Programming into a Software Development Process". 14th Conference on Software Engineering Education and Training: abstract.  "One of the programmers (the driver) has control of the keyboard/mouse and actively implements the program. The other programmer (the observer) continuously observes the work of the driver to identify tactical (syntactic, spelling, etc. ) defects, and also thinks strategically about the direction of the work. "
  2. ^ a b c d e f Cockburn, Alistair & Williams, Laurie (2000), “The Costs and Benefits of Pair Programming”, Proceedings of the First International Conference on Extreme Programming and Flexible Processes in Software Engineering (XP2000), <http://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF> 
  3. ^ Williams, Laurie (2003). Alistair Cockburn (his last name is pronounced "Co-burn" in the Scottish way making it homophonous with that of the actor James Coburn) is one of the initiators Pair Programming Illuminated. Addison-Wesley, 27-28. ISBN 0-201-74576-3.  "With pair programming, 'four eyeballs are better than two,' and a momentous number of defects are prevented, removed right from the start. These continual reviews outperform traditional, formal reviews in their defect-removal speed. "
  4. ^ Williams, Laurie (2003). Pair Programming Illuminated. Addison-Wesley, 29. ISBN 0-201-74576-3.  "Knowledge is constantly being passed between partners, from tool usage tips to design and programming idioms. The partners take turns being the teacher and the student. Even unspoken skills and habits cross partners. "
  5. ^ Williams, Laurie (2003). Pair Programming Illuminated. Addison-Wesley, 112. ISBN 0-201-74576-3.  "[Expert-novice pairing] can even be valuable for novices who are novices only in the sense that they haven't been with their team for very long. … Watching and then doing with an expert by your side can greatly reduce the time it would require to learn 'the right way' of working with the team. It really helps when the newbie works with many of the experts (or with any team member) so he or she can learn about many different aspects of the system. "
  6. ^ Williams, Laurie (2003). Pair Programming Illuminated. Addison-Wesley, 26. ISBN 0-201-74576-3.  "Collaborative teams consistently report that together they can evolve solutions to unruly or seemingly impossible problems. … The driver might actually be working out a design or implementing a part of the problem, realizing that he or she may ultimately come to a dead end in the problem resolution. The navigator, while watching the driver's partial design or implementation, begins thinking about the next step. When the driver hits the dead end, the navigator is often prepared to take over and lead the way. Often, the cycle continues until the problem is solved. "
  7. ^ Williams, Laurie (2003). Pair Programming Illuminated. Addison-Wesley, 21. ISBN 0-201-74576-3.  "In our recent Web survey, we asked, 'What have you found beneficial about pair programming?' The single most common response was, 'It's a lot more fun!'"
  8. ^ Williams, Laurie (2003). Pair Programming Illuminated. Addison-Wesley, 23. ISBN 0-201-74576-3.  "Two people working in a pair treat their shared time as more valuable. They tend to cut phone calls short; they don't check e-mail messages or favorite Web pages; they don't waste each other's time. " (Ward's Wiki 1999, contributed by Paul Chisholm).
  9. ^ Beck, Kent (2000). Kent Beck is the creator of Extreme Programming Beck has pioneered software design patterns, the rediscovery of Test-driven development, as well as Extreme Programming Explained. Addison-Wesley, 102. ISBN 201-61641-6.  "Under stress, people revert. They will skip writing tests. They will put off refactoring. They will avoid integrating. With your partner watching, though, chances are that even if you feel like blowing off one of these practices, your partner won't. "
  10. ^ Williams, Laurie (2003). Pair Programming Illuminated. Addison-Wesley, 24. ISBN 0-201-74576-3.  "With any software development process there is a constant struggle to get the software engineers to follow the prescribed process. A benefit of pair programming is improved adherence to procedures and standards. "
  11. ^ Williams, Laurie (2003). Pair Programming Illuminated. Addison-Wesley, 24. ISBN 0-201-74576-3.  "Others see us already working with someone else, and they leave us alone. The net effect is that we have bigger blocks of uninterrupted time, which is good for our mental state and our progress. It also reduces task-switching, which for some people generates a huge overhead. "
  12. ^ "Agility counts" (September 20, 2001). The Economist.  .
  13. ^ According to "Int J. of Human Computer Studies Vol (64) 2006
  14. ^ Pair programming evaluated « Catenary
  15. ^ http://csdl2.computer.org/persagen/DLAbsToc.jsp?resourcePath=/dl/trans/ts/&toc=comp/trans/ts/5555/01/e1toc.xml&DOI=10.1109/TSE.2007.70755)
  16. ^ Agile Ajax: Pair Programming with VNC
  17. ^ Pair Programming - The Ultimate Setup and the other options we tried. - Jonathan Cogley's Blog

External links


© 2009 citizendia.org; parts available under the terms of GNU Free Documentation License, from http://en.wikipedia.org
Dapyx Software network: MP3 Explorer | Ebook Manager | Zenithic