Friday, May 1, 2009

The Agile Fallacy

Or: Agile didn't invent iterative development



12 years ago, when I was having computer science classes at college, teachers used to tell us that waterfall processes were bad, and that iterative processes were a Good Thing. They told us we should do a little bit of requirements, then a little bit of design, then a little bit of development and a little bit of testing. Then you would evaluate the results, review your planning and start over. There was even this fancy little spiral to illustrate the concept:



The concept of iterative development wasn't new by then, way before people started talking about Agile methods. But if you read what many evangelists and bloggers have to say, you would think that Agile 'invented' the concept. You read all over things like "in waterfall, this and that happens, but Agile solves this problem by doing this other thing...". People seem to conveniently pretend that if you are not Agile, you are doing waterfall. This is what I call the Agile fallacy: the false dichotomy between Agile and Waterfall, used as an argument to justify Agile.

As Penn & Teller would put it, that's BULLSHIT. Don't buy into this crap folks. Not to say that Agile is bad. Far from it. It is a Good Thing, and is a huge step forward in the field of software development. It brings in some fresh new ideas that will be around even when nobody is talking about Agile anymore. Also, I'm not saying that Agile is iterative development with a fancy name. That is an oversimplification made only by people who don't understand the existing Agile methods. But they are not the only alternative to Waterfall processes, and the alternative existed before Agile. Even RUP, the overly complex process framework that nobody seems to talk about anymore, which for many people is a synonym of waterfall, is actually iterative.

Now, why is the Agile Fallacy perpetuated? There are two kinds of people that defend it. The first group is what I call the 25 years old specialists. These are young people, fresh out of college, who are very articulated and smart. Those people are well intentioned, but they probably have never seen anything other than Agile in their careers, so they just inadvertently perpetuate the lies that are spread by the second kind of people, the Unethical Agile Salesmen. These are the ones who lie to make their sales pitch look better just like a used car salesman will lie to you about the defects and quality of a used car to make it look like a hot offer. It is important to note, though, that I don't want to make generalizations. Like in any other field, Agile has ethical and unethical professionals, and there some very credible people in this field.

Why am I bitching about the Agile Fallacy so much? The first problem I see with it is that it takes away the credibility from the people who defend Agile, and I think it is one of the biggest problems of the field today. There are just too many Agile snake oil salesmen around.

Another problem is that in this world of sotware development, there have always been the hot idea du jour. When it comes, it seems to be the Holy Grail of computing, the thing that came to solve all our problems. People embrace it and bet their success on it. Then after some time people will realize the real qualities and flaws of the new idea, and their disappointment is equivalent to the amount of passion that they had when they embraced it initially, and will dismiss that now not so new idea completely even though it has some legitimate good points. Agile has been the Holy Grail for some time now, and it won't be long until people realize that it is not perfect. To a certain extent, it is already happening, with people saying that Lean software developmen is the new Hot Idea and came to replace Agile. This is also a false dichotomy but is a subject for another article. But what happens is that after the period of passion people will notice the fallacy and it will work against Agile this time.

To avoid this trap, always be skeptical. If you take a skeptical point of view from the beginning, you won't be disappointed later. And better, you will be able to enjoy the real benefits of Agile.

7 comentários:

Dave Newton said...

Which "agile evangelists" think it did?

The ones *I* know readily admit the Lisp, Smalltalk, Forth, etc. heritage of iterative development.

I don't see the "agile fallacy" you're talking about.

AkitaOnRails said...

I don't really see agilists "claiming" we invented iterations. If you are actually from the computer field you will know the well known fact that "Waterfall" was coined after Winton Royce's 1970 paper on software development processes. The irony being that Royce himself never advocated Waterfall and he even concluded that iterations were inevitable. So people got it all wrong since the beginning.

And even before that, Lean development - which started in manufacturing since after the 2nd World War - already had this concept. While Ford was kind of "waterfall", Toyota already was performing under iterations in its just in time concepts, takt time and so on.

You are right: this is not new at all, and I don't see agilists claiming that. What we do say is that it's been like 40 years since waterfall-based development has been debunked as absurd, but people still stick to it. Some would say that this is inspired by the manufacture world, but even that is not true since Toyota came to be like decades ago.

So, we agree: agile didn't invent iterations. Now we don't agree on the existence of a fallacy, this is a non-fact.

JC said...

I believe good software or web development comes through tested principles and setting measurable goals meeting real user needs.

Any developer 'dogma', Agile included, is nothing but a 'tool' to help get that job done. Only use Agile when it really facilitates your goals.

mindCrime said...

RUP isn't "overly complex," it's only as complex as you need it to be. RUP can certainly be implemented in an agile, if not Agile, manner. And I personally value agile over Agile.

Trevor Turton said...

This blog entry, and the comments on it, are though-provoking. I have been programming for 45 years, although more slowly now, and I have seen the rise and fall of many methodologies, and even the genesis of the breed. My view is that after a number of spectacular failures in development projects, development managers developed high-bulk methodologies as a defense against the unpredictable rate at which different programmers deliver running code, and that competent programmers periodically develop "new, improved, low-bulk methodologies" as an end-run around the barriers posed by the traditional high-bulk methodologies. I have looked these ideas more fully in a new post on my blog.

Franco said...

I don't think that "serious" agilists pretend to have invented iteration. It is more the vision of new "adopters" that see agile only as a "technique", but remember that the first sentence of the manifesto is "Individuals and interactions over processes and tools "

Milo said...

In my view, and that of others, the real fallacy is the idea seemingly held by many that things such as prioritized to-do lists, iterative progress, and timeboxing are not the norm. Perhaps those who think this way represent a minority, or perhaps they are in an industry where these things are not the usual case. Regardless, the statements they make often give the impression they are doing something unusual, and I think that is what gives rise to ideas like the one proposed by Domingos.

I recently came across a blog in which the author described the application of Scrum to household chores. I shared it with others who all had the same response. They thought the idea was incredibly naive as it proposed nothing that housewives have not been doing for generations, except perhaps for the use of certain modern buzzwords. Now to be perfectly fair, the author never outright said they were doing anything novel. But if they knew it was not, why blog about it?

I've broached the subject of Agile to people in many industries, and without fail they all look at me as if I'm from Mars. Not because it's such an alien concept, but because it's not. It's what they have been doing forever. They argue that if software developers honestly think these ideas are so radical, then either these developers are living in a fantasy world or there is something very abnormal about the software industry.