The 10 year anniversary of the agile manifesto has just passed. As part of some kind of distributed retrospective, there has been a lot of discussion about what will happen with agile now. I think that agile will be dead in ten years – I just hope it will be a good death. This will actually be the second death of agile, but I need to set some other things in context before describing the first one.
The good death
A good death for agile is what Mike Cohn describes is his great post on the future of agile. Agile becomes so ingrained in the way we develop systems that it becomes boring. People often describe the history of software development as a succession of ideas that are discarded in favor of new fads. They forget that most great ideas have not been thrown out, we have just stopped talking about them.
In 1981 the magazine Byte published an issue that was completely devoted to the Smalltalk programming environment. This issue had a profound effect on many developers and is seen as a tipping point for the spread of Smalltalk and object orientation. In 1991 Byte celebrated the tenth anniversary of the the 1981 issue by running a number of pieces on the state of Smalltalk and OO. One piece was an interview with Peter Deutsch and Adele Goldberg; two very influential figures in both Smalltalk and OO. They were asked what they thought about the future of Smalltalk and object orientation:
“We hope that in 2001, objects will be boring. In comparison, radical ideas of past decades – that system software should be written in higher level languages with strong type systems, and that computers can and should be seamlessly networked – are thoroughly accepted today.”
At the time, this was an astounding statement. Object orientation was not mainstream yet and lots of people were using all the classic denialist arguments against it: “it wont scale”, “nothing new”, etc. By 2001 Byte had ceased to exist, but even if it had still been around, I do not think it would have bothered with a twentieth anniversary issue.
The bad death
In Agile’s Second Chasm, William Pietri paints a bleak picture of the state of agile. He fears that agile is dying the death of commercialization and trivialization. The essence of agile is being lost in the struggle to make it easily accessible to people that are not really interested in changing the way they think. I agree that there is a definite possibility that agile can die the death of snake oil, but the opposite is also a potent threat. Agile can be killed by trivialization, but also by over-ambition.
Most people have heard of the Peter principle: In a hierarchy every employee tends to rise to his level of incompetence. Fewer know about “The Generalized Peter Principle”: Anything that works will be used in progressively more challenging applications until it fails. A variant of this is what I call the “Peter Principle of Methods”: A successful process will be expanded upon until it becomes useless.
People are clamouring for all sorts of extensions to agile. They point to all the things agile does not address: How do we make sure that the systems we build are the right ones? How do we assure that the organization uses a new system the right way? Lets make agile work as a business philosophy, they say. I fear that some of the people trying to “save” agile will inadvertently kill it. And it has happened before.
Does this mean that I want to freeze agile? No, that would not be very agile would it? Agile should evolve, but I think it should not loose its focus on software. If you are interested in “agile” outside of software you should study systems thinking. Why reinvent the wheel? The combination of systems thinking and agile is much more potent that some new bloated variant of agile.
The first death
So, has agile died before? In the late eighties I was one of the early adopters of object oriented development. By the early nineties object orientation had become a buzzword. Everyone wanted to do it but few understood how. What few people seem to understand today is that OO in that period was not just about creating good classes and methods. We were using incremental and iterative development, refactoring software and a whole bunch of other “agile” practices. If you look at the program of an OOPSLA* conference from that period you will be astounded by the similarity to an agile conference (except, we talked a lot more about programming then). The reason we loved OO was that it seemed to be a great way of creating value for our customers. We saw OO as a lightweight alternative to traditional development. Being responsive to change and continual learning were core values. I am not implying that everything in agile was a part of OO. What I am certain of is that the core ideas in agile were created by people working in object oriented software projects.
And then RUP came along. RUP wanted to be a unifying method that would bring together all the best parts from a number of different sources. RUP claimed to be OO, but in its grand compromise it lost the essence of OO. People were seduced since RUP had “everything” and did not see how empty that everything was. When RUP rapidly became a de-facto standard for software development I felt that the things I had fought for had been lost. The late nineties were the dark ages of software development for me.
In ten years agile will be dead (again). This does not worry me. I hope it will be a good death, but if it is a bad one; the ideas that are the essence of agile will not die with it. They will just pop up in some new form.
*Object-Oriented Programming, Systems, Languages & Applications, the leading conference on object orientation in the nineties.