dark mode light mode Search Menu
Search

Pair Programming

donjd2 on Flickr

One of the great mysteries of software programming, for example, is that coding does not scale. If it takes one person 10 months to code an application, hiring 10 coders to do the project in a month doesn't work. Nor does hiring 5 coders to complete the project in 2 months.

At best, you might hire 3 coders, give them a month or two to design the application, then watch them complete the application in 5-8 months. How to make the most of programming time, and reduce errors and failures, is one of the great challenges in software programming.

Pair programming is one possible solution. Although today it is considered part of the Agile and Extreme Programming software development approach, in fact, pair programming has existed in some form since people first begain to write software. In it's simplest form, two programmers sit down in front of one computer terminal and trade off use of the keyboard and mouse, talking out loud as they work through the software coding process.

As you might imagine, this is a great way to train new programmers. But research also shows pair programming, when the coders work well together, increases productivity and code quality. This seems rather obvious on its face: two heads are better than one, whether it is software programming, policing, flying airplanes, parenting, or any number of human activities. Plus the cost of the second coder is offset by the productivity gains and code quality.

The two coders not only swap the keyboard and coding time. They also swap roles. The keyboard owner, some times called the driver, is responsible for actual coding while the other coder, some times called the navigator, keeps track of larger issues in the application as they work. The driver talks through their coding process and engages in conversation with the navigator. The two change roles frequently as they code together, to keep fresh and ensure both are engaged with the macro and micro problems and solutions as they work.

If you don’t know, Extreme Programming is a software development approach based on simplicity, frequent interactions, obsessive testing, multiple small releases, and feedback from coders and the end user of the software. Extreme programming tries to surface issues early and often so the team can participate in solving problems. Pair programming is a natural technique for extreme programming because it provides lots of interaction, testing, and feedback.

A final note. One of the more interesting aspects of pair programming is the general examples of pairs in computing history. For example, Steve Jobs and Woszniak, Bill Gates and Paul Allen, Hewlett and Packard. Computing must lend itself to collaborative work to some large degree to be successful.

Learn More

Pair Programming

http://en.wikipedia.org/wiki/Pair_programming

Pair Programming versus Code Reviews

http://www.codinghorror.com/blog/2007/11/pair-programming-vs-code-reviews.html

Pair Programming Considered Harmful?

http://techcrunch.com/2012/03/03/pair-programming-considered-harmful/

Nine Months of Pair Programming

http://yanpritzker.com/2012/08/22/nine-months-of-pair-programming/

Reasons for Pair Programming

http://programmers.stackexchange.com/questions/166635/reasons-for-pair-programming

Using Pair Programming to Teach Students

Guide, lesson plans, and video to help teach students coding with pair programming. (Thanks Patrice for link!)
http://www.etr.org/youthandit/resources.html