Technology Review - Published By MIT
Advertisement

Taking Programming to the Extreme

The quest for quality software may require programmers to lose the cowboy attitude and learn to cooperate.

By Erik Sherman

July 19, 2002

smaller text tool iconmedium text tool iconlarger text tool icon

Mansour Raad had a big problem. His start-up firm, DiscoverCast, was developing collision-detection software for the airline industry-mistakes in the code could cost lives. But money dried up after a first round of funding, and hiring additional programmers to finish a bug-proof version was out of the question.

So Raad instigated a relatively new coding discipline called extreme programming. Instead of working alone on individual assignments, programmers paired off, one writing code while the other watched and critiqued-providing both a critical eye and critically important backup. "[My wife] had a baby, but the project had to go on," says Raad. "Because I was showing it to the other people, someone could step into my shoes." The company met deadlines without an increase in errors because of the communication.

Most programmers are no more satisfied with software quality than their customers. Now a growing number are trying to find ways to create solid software in a market that expects new products and enhancements and wants them fast. Increasingly, software companies are turning to development strategies with names like "agile development" and "extreme programming"-adrenaline-charged catchphrases well-suited to coders' self-image as rugged heroes of the information age. In reality, the trend-which has a long history-signals a rejection of prima donna programming in favor of teamwork and collaboration.

In the software industry, buggy code has long been accepted as a fact of life-albeit an aggravating and expensive one (see "Why Software Is So Bad," TR July/August 2002). "The problem is that in software, people place too much trust in their own ingenuity," says Michael Stiefel, a consultant who trains clients in software reliability methods. "I'd watch all these young guys in their 20s making the same mistakes we made in the 70s and 80s, and I wonder why we have to go through all this again."

To reduce errors, reformers are touting approaches to software engineering-known in the industry as "agile development"-that stress teamwork, collaboration with end users, and a flexible approach to change. To build its collision-avoidance software, Raad's company used one type of agile development, called "extreme programming," which emphasizes constant testing as well as collaboration.

"If you are able to apply [a collaborative environment] at its full power, the quality of the products will be better," says Michele Marchesi, a leading advocate of extreme programming and professor of electrical engineering at the University of Cagliari in Italy.

One of the most powerful aspects of agile programming is so-called peer programming, in which developers partner and take turns writing code and explaining its logic to the other. Pairs are temporary, periodically splitting and swapping to encourage even more interaction. New eyes examine each piece of code, creating a process of continuous review.

Story continues below

"Two people can bounce ideas off each other," says Frank Arkell, a chief software engineer at defense contractor General Dynamics Decision Systems, which has used collaborative techniques for two decades. To keep teams fresh, General Dynamics changes them for every project.

Another advantage to peer programming? Peer pressure. "No one wants to be the person that slacks off, so they both work harder," says Scott W. Ambler, president of Ronin International and an author and speaker on agile development.

Comments

Log In

Forgot your password?     Register »
Advertisement

Videos

Making 3D Maps on the Move
Technology Review November/December 2009

Current Issue

Natural Gas Changes the Energy Map
The United States has vast supplies of this cleaner fossil fuel. But how should we use it?
Featured Content
Sponsored by:
White Papers

Twelve ways to reduce costs with SQL Server 2008
Find out how to reduce costs and get more efficient

Download

Total Economic Impact of SQL Server 2008 Upgrade
Forrester reports on increasing productivity and management capabilities

Download 

Achieving Cost and Resource Savings with UC
How Office Communications Server R2 and Exchange Server can make your business smarter and more efficient

Download 

The Compelling Case for Conferencing
Read how you can improve workload support and find IT efficiencies

Download

How Windows Server 2008 R2 Helps Optimize IT and Save you Money
Read how you can improve workload support and find IT efficiencies

Download

Windows Server 2008 R2 Hyper-V Live Migration
See how Windows Server 2008 R2 and Hyper-V enable virtualization and Live Migration

Download
Advertisement
Subscribe to Technology Review's daily e-mail update. Enter your e-mail address

TECHNOLOGY RESOURCES
Advertisement
MIT Massachusetts Institute of Technology © 2009 Technology Review. All Rights Reserved.