Every agilist brings his or her history to the community—agile didn’t spring from the primordial soup in 2001. While we may argue against historical practices, waterfall for example, we owe something to earlier pioneers. So while I can’t speak for other agilists, I can give a snapshot of who influenced my thinking over the years..
First, I would argue that agilists were influenced more by practical than academic literature (see Craig Larman’s Agile & Iterative Development for some historical perspectives). Writers who influenced me go back to the early work of Tom DeMarco, Jerry Weinberg, Ken Orr, Jean Dominique Warnier, Larry Constantine, Steve McMenamin, Ed Yourdon, and others during the early “methodology” period from about 1975 until the early 80′s. This was the early “structured development” era. Structured methods were then formalized into heavyweight methodologies, books and books of process and forms. Since it was all so heavy, tools were needed and the era of CASE tools began—and ended. While I don’t use data flow or Warnier-Orr diagrams anymore, the ideas of process flow and data structures that they represent are still important. We often forget that a lot of good software was built with waterfall methods.
As the early 90s rolled around, people began their disenchantment with long projects and heavy documentation. Many of my early rapid development ideas were based on those of Barry Boehm (Spiral) and Tom Gilb (SEM). During the 80s, rapid prototyping came to the fore. I published an early version of adaptive (RADical at that point) development in 1993, based on projects done in the 1991-92 timeframe. Several of these were 1-2 month projects done in 1 week iterations. Looking back at that article to see who was referenced I found: DeMarco & Lister Peopleware, Goldratt (The Goal & others), Michael Hammer, Capers Jones (Applied Software Measurement), Katzenbach & Smith (The Wisdom of Teams), and Jerry Weinberg (Quality Software Management). My first adaptive software development article (1997) referenced Brian Arthur (complexity theory), Michael Cusummano (Microsoft Secrets), Ralph Stacey (complexity theory), and Mitchell Waldrop (complexity theory). It’s kind of interesting to look back and see my references. What strikes me about these references is the absence of any real technical references–it’s mostly management theory and organizational development.
One misconception people often voice is that agilists didn’t invent anything new. John Holland, who wrote several books on complex adaptive systems theory, says that creativity comes not only from some new scientific theory, but also from people who put scientific building blocks together in a new way–in essence creating something new. While you might find the historical roots for every agile practice, agile methods are the combination of (1) “selected” practices (and a few new ones) from the realm of technical, project management, and collaboration practices; (2) a well articulated and stated set of fundamental values and principles, and (3) a overriding belief in a self-organizing approach to management These three, in totality, define the agile movement—not any singular practice. If you approach the agile movement from a practices perspective only, you miss most of its essence.
Another contribution of the agile community, especially from those in the XP community, was to both focus on critical technical practices and to take those ideas and push them to the limits–to the extreme. This has done the industry a great service. Ron Jeffries stated that he tried to find the limits of practices. If lean development says reduce documentation, what if we throw it away completely? If a little upfront planning is better than months of planning, what about continuous incremental planning? If frequent testing is good, what about test-first? What exploring the limits has done for the industry has shown people the edge cases. Understanding where the edge cases are let people better understand the range of options available. Before XP people thought in much narrower ranges about what was “acceptable.”
This exploration of the edges was also critical in the early stages of agile—we had to take extreme positions to get people’s attention. Would anyone have listened if Kent Beck had developed “Moderate Programming.”
Agile methods have come a long way and are being used by organizations around the globe. As we approach the tenth (wow!) anniversary of the Agile Manifesto, it is beneficial to re-examine our agile “roots” so that we remain grounded in the basic practices and concepts and recognize the many contributions to software development that brought us to this point.