Photography by Tom Upton
In the July/August 2008 issue of ACM Queue we published part one of a two-part discussion about the practice of software engineering. The goal was to gain some perspective on the tools, techniques, and methodologies that software engineers use in their daily lives. Three members of Queue’s editorial advisory board participated: Steve Bourne, Eric Allman, and Bryan Cantrill, each of whom has made significant and lasting real-world contributions to the field (for more information on each of the participants, see part one). In part two we rejoin their conversation as they discuss XP (Extreme Programming) and Agile.
ERIC ALLMAN We’ve talked a fair amount about tools, design methodologies, and a lot about debuggers, but we haven’t really talked much about programming practices and styles. These days you probably have to be dead not to have heard about XP and Agile. I’m interested in XP, and have been for a while. One of the things that interests me, though, is that it doesn’t really look like there’s much new in it. A lot of the principles have been around awhile—for example, unit testing? Gosh, when did I first hear about unit testing? I might have been out of diapers, but not by much.
Pair programming seems to be one of the most controversial principles. It’s also one of the most variable. For example, I’ve worked with people where we were together in a room and we’d go off and each be coding something and then come back and compare things—design reviews, that sort of thing. That’s not the same as having us both
at one keyboard. I’m skeptical about having half as many keyboards as you do programmers. That seems pretty crazy and pretty expensive to me. BRYAN CANTRILL I think Agile goes too far—for our team, anyway. Co-developing, where you’re sitting together all the time, is just too much. Does anyone make an office chair that has two seats in it? Actually, someone should. I think I just stumbled upon “the Agile chair.” EA The next start-up. BC Exactly. The Agile swivel chair—with two chairs mated, so you can both turn around at the same time. EA That’s a great visual. BC I think it’s the power of peer pressure, and Agile captures a little bit of that by having the peer seated right next to you—“should we be spacing out on the Internet right now or should we be working on this problem?” I always wonder how much of Agile’s productivity gains come from the fact that it’s really hard to space out on the Internet when you have someone right next to you. EA XP also has certain ideas about coding standards, though they do not seem very controversial, and people have been doing this for a long time.
References:
Archives