Ken Orr wrote ( in Cutter IT Journal Vol.3, No. 7 ):

Agile . since Jun 23 . Index . DOCs TOP TOC

HOW TO START A RELIGIOUS (OR SOFTWARE) WAR


In 1517, as legend has it, Dr. Martin Luther tacked his famous 95 Theses on a church door in the small German city of Wittenberg, thus indirectly setting in motion some of the most vicious religious wars in history. In 2001, a number of proponents of various radical software development methodologies roughly aligned with Extreme Programming (XP) met in Salt Lake City, Utah, USA, and issued something they called the Agile Manifesto, thereby signaling the beginning of a new software methodology war -- one between the old guard, who they saw as being represented by the supporters of the Software Engineering Institute's (SEI) Capability Maturity Model (CMM), and their new agile development movement. So, it would seem, if you wish to start a religious (or software) war, you ought to issue some sort of edict.1

In December 2001 and January 2002, Cutter IT Journal devoted two full issues to "The Great Methodology Debate" (Part I: Vol. 14, No. 12; Part II: Vol. 15, No. 1), which contained the viewpoints of those on both sides of this issue. This Executive Report is intended to go more in-depth about the relationship between "agile" and "rigorous" or "light" and "heavy" systems development approaches.

Having been a participant myself in many methodology wars over the years, I don't expect to persuade any of the major combatants. What I hope to do is help clarify what I think this debate is really about and to see whether, at some point, we can come up with new ways of looking at how software development can be improved even in the most troubled organizations.

Agile . since Jun 23 . Index . DOCs TOP TOC

SOFTWARE METHODOLOGY WARS


Q: What's the difference between a bank robber and a methodologist?

A: You can negotiate with a bank robber.

Every decade or so, there seems to be yet another software development methodology struggle. During the 1970s, the battle was between various forms of structured and traditional development; in the 1980s, the struggle was between various forms of data modeling and traditional development; during the 1990s, it was between warring factions of object-oriented (OO) design and traditional development. Like most religious wars, the most intense conflict of methodology wars has been between either closely related methods or between those that are furthest apart. Today, in the first decade of the 21st century, the current software development war is between those supporting agile methods and those supporting CMM -- a representative of the traditional "waterfall" software development approaches.

In these software wars, hardly anybody gets killed or maimed, but to many of the participants, the war is real enough. Careers are made or lost; organizations thrive or perish. Perhaps the most interested audiences for the software development wars are the CIOs and development managers of large organizations. Just when they are convinced that being a CMM Level 3 software organization represents the current best practice in software, someone (usually one of their younger programmers) informs them that CMM is out and something called Extreme Programming or agile development is in. What is a manager to think?

This report is intended to compare agile software with CMM methods to see how they differ philosophically, how they are the same, and under what circumstances one approach might be preferable to the other.

Our second goal is to shed some light on the hidden agenda precipitating these software wars. Indeed, much of the propaganda produced from both sides is constructed according to similar but differing agendas. One of the most important and common hidden agenda items is power: "Who is in control, the programmer or the manager?" There is a sense in which the agile revolution can also be labeled "the programmer's revenge." During the 1980s and 1990s, there was increasing emphasis on CASE that aimed at eliminating, or at least deemphasizing, programmers and programming. Programmers were forced to do all kinds of design and documentation that they found bothersome and tedious. OO design put development back in the hands of developers; agile development has really turned the control of development over to programmers/developers and users, while somewhat cutting out software development management.

Another agenda item involves process: "Should you have a strict project sequence, or should you be flexible?" Programmers prefer flexibility, but managers prefer predictability. To some degree, the CMM versus agile debate is an argument about how people work best on complex problems.

Another item deals with documentation and design: many programmers see documentation and design as a waste of time, but managers like it. Managers prefer to see tangible things (deliverables) emerging from development -- tangible things that they and users can look at to see whether everyone is on track. Agile developers assert that the only thing people are really interested in is the software itself, which they deliver a little at a time from the beginning of the project.

All of the items on this hidden agenda color the dialogue surrounding the CMM versus agile war. As in any war, the trick is to make the war into a proposition of "us" versus "them" -- we're on the side of angels, they're on the other side. CMM proponents are in favor of process improvement and improved control, while agile developers are in favor of increased user involvement and rapid development. But, as we will see, the issues are not so black and white, and as the debate between CMM and agile matures, both sides are changing.

Agile . Index . DOCs . TOC