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 December 2019 Issue

30+ ideas for STEAM-theme gifts for kids of all ages!

Visual storytelling apps are a great way for kids to document and explore their lives.

Meet 16-year old Astronaut StarBright, whose activism is inspiring the next generation of STEM fans.

Dive into the first “console wars” and learn how more bits led to bigger and better games.

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.

Explore the solar system and test your knowledge of space through this fun coding activity.

Learn how procedural generation can be used to create infinite maps, music, and worlds to explore.

The Wayback Machine lets you travel back in time to see old websites. Plus the Internet Archive has thousands of vintage games, software, books, and more.

Online research skills are critical for software programmers. It's how you learn any language, by searching for error messages and looking up reference material.

How rural America connected itself to the phone grid using barbed wire, glass bottles, and even corncobs!

Meet Cozmo, the clever new robot that’s bringing AI concepts to life for kids as young as 5-7 years old.

Throw some festive ornaments on a virtual Christmas Tree in this fun introduction to functional programming.

How the Internet of Things could improve education, from VR to accessibility to facial recognition.

No one wants to deal with viruses over the holidays. Here’s how to protect your new devices!

Some digital tools to help you create your own unique, ever-changing symphony with nothing but some code and a computer!

Take a peek into the importance — and the struggle — of getting truly random data.

Interesting stories about computer science, software programming, and technology for December 2019.

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