0 notes &
Agile or waterfall? Please rephrase your question.
File this under “I think this should be obvious by now, but experience tells me it isn’t.” If it is obvious to you, great! Please share this information with others so it’s obvious to more people. If it’s new to you, great! I did something useful! Again, please share with others!
Have you recently been asked, or have you asked the question “Do you use Agile or Waterfall?” Or maybe “Do you prefer Agile or Waterfall?” Or have you made a comparison between Agile and Waterfall?
Usually, this comparison can be translated into:
Iterations, daily meetings, burndown charts, Scrum Masters, and all those other things specific to the Scrum process or lots of up-front planning with discreet stages of development and a prediction of releasing at some specific date in the future.
So what, you say? Well, unfortunately, the thing on the left isn’t necessarily Agile, and the thing on the right doesn’t exist.
Agile does not equal Scrum
On the “Agile” side of the comparison, everyone seems to have forgotten that Agile, as originally defined, is really just a few values:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Using an Agile development process means that a decision has been made to value the things on the left more than the things on the right. There are no guidelines on the correct ratios. That is left up to you.
Agile does not have to be the specific process called Scrum, which is where you get “sprints” and “burndown” charts and “Scrum Masters” and yada, yada, yada. Agile (again, as originally defined) does have some slightly more concrete principles where there is mention of preferring small timescales, but nothing gets written in stone. In fact, the last of those principles:
- At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.
Makes it perfectly clear that to be Agile, nothing can be written in stone. The process itself always has to be up for grabs. If objecting to part or all of it is viewed as religious heresy, then by definition, I argue that it isn’t Agile. It is process for the sake of process.
Note that I’m not saying that you shouldn’t have a process. I’m not even saying that you shouldn’t use Scrum as your process. I do have some arguments to that effect, but those are for a different day. Right now, I’m simply saying that Agile is not a synonym for Scrum. If you’re really talking about the Scrum process, then you might as well use the word “Scrum.” If you use the word “Agile,” then I, personally, am going to interpret that according to the Agile Manifesto.
There never was a Waterfall, there is no Waterfall, and there never will be a Waterfall
Okay, now it’s Waterfall’s turn. (Funny to me seeing Waterfall even capitalized. You’ll be in on the joke in a minute.)
Okay, here’s the original Waterfall methodology as described by Dr. Winston W. Royce in 1970 in Managing the Development of Large Software Systems.

Looks familiar, huh? End of story, right? Nope. Two big problems. Go read the paper if you want. Go ahead. I’ll wait… Okay, done reading? If so, you found out two things:
- The paper never mentions the word “waterfall” at all. That word won’t show up until some years later when Royce’s paper is referenced by another paper.
- More importantly, right after that diagram, you’ll see an interesting note. “I believe in this concept, but the implementation described above is risky and invites failure.” Seriously. If you didn’t read it (who are we kidding), go back and look. Second page. First paragraph.
Now, depending on where you sit in the fake “Agile vs. Waterfall” debate, you’ll read that note very differently. If you lean towards “Waterfall,” you’ll read that the concept is fundamentally sound. If you lean towards “Agile,” you’ll read that “Waterfall” was always part of a strawman argument. Both sides have some merit. The paper does go on to describe an extensively altered process that Royce does support, and figure 2 is the ideal basis for that process. However, that altered process shares some of the same flexibility as “Agile” processes, albeit more restrained.
The pragmatic methodology
Am I being pedantic? I hope not. Okay, maybe a little. (But if I really wanted to be pedantic, I’d talk about big “A” Agile and little “a” agile. Not going to do that right now.) My point is: this argument keeps going, and everyone has forgotten, or never knew, what the words even mean. As the comparison is usually used, it might as well be asked like this:
Do you use a process that I like and think is right, or do you use a process that I don’t like and think is totally messed up?
Instead, I’d like to see people move beyond the comparison and just use the process that is appropriate for the particular project and particular team at a particular point in time. The question should become something like:
“What kind of process do you think we should use for this project?”
Hopefully the answer is more complete than “Agile” or “Waterfall”. If it isn’t, be ready to ask what those terms mean.
Giving some credit
If you were as surprised as I was about the Waterfall myth, I highly recommend The Leprechauns of Software Engineering by Laurent Bossavit. It’s definitely a red pill. Until I read the book, I thought the Waterfall diagram represented a real process. If you read the book, you will be amazed at all the other completely made-up nonsense we believe to be true about software development.

