beanz Magazine

Pair Programming

donjd2 on Flickr

From the start of computing history, people have tried to optimize the software programming process. This includes having two coders work together to code software.

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

Also In The November 2013 Issue

My Adventures with Raspberry Pi

Open source hardware geared towards artists, hobbyists, designers, and students, is a viable and far less expensive alternative to build your own computers.

Beth Rosenberg Talks How Tech Kids Unlimited Helps Kids Who Learn Differently

With a wave of kids with special needs graduating high school, how can technology help them with resumes, college, jobs, and careers?

Stop Words

A clever technique to speed up database searches also is an interesting concept.

More Fun with Raspberry Pi

Here are some videos, and links to even more videos, to learn how to use your Raspberry Pi and have all kinds of fun with Pi projects.

My goal wasn’t to make a ton of money. It was to build good computers.

News Wire Stories for November 2013

Interesting stories about computer science, software programming, and technology for the month of October 2013. More stories can be found at the Software Programming and Computer Science News Wire link at the top of every page of this site.

Bubble Sorts

With a bubble sort, numbers sort themselves as they bubble to the left of a group of numbers. Here's a fun catchy video to explain.

The 7 Bridges of Königsberg

This month's math puzzle dates back to 1735 when it was first solved by Leonhard Euler, a Swiss mathematician and physicist.

Pair Programming

From the start of computing history, people have tried to optimize the software programming process. This includes having two coders work together to code software.

Learn More Links for November 2013

Links from the bottom of all the November 2013 articles, collected in one place for you to print, share, or bookmark.

Icon-itis

The release this fall of Apple's iOS7 operating system is a great opportunity to explore the history of computer interface design.

Functions

Managing inputs and outputs is a key problem programming languages face. Here's how a few languages use functions to manage and transform data.