The challenge as I see it is that clients usually don't buy into this and they believe that developing software is like making sandwiches or turning buttons on and off when in fact is a discovery process of abstract things. They then demand a fixed budget, fixed time and fixed milestones for a fixed scope ("You are the expert, you should know how much time this takes."). To sell the project the salespeople from software companies deliver this, those who don't are considered incompetent. In this conditions agile methodologies are prone to fail but not for the methodology, but because most of the time those sold promises are done with incomplete information or tailored to be optimistic to sell the project. Metrics from agile methodologies show from the beginning that the project won't meet the expectations and then chaos ensues: they stop collaborating with the client to hide the reality of the project, "managers" pressure the team to do more in each iteration, they stop doing the disciplines altogether, iteration and daily reviews are treated as long meetings where people commiting errors are shamed and scolded and frictions start to emerge between all persons involved. This is where I believe the whole notion of "agile sucks" comes from.
What’s more waterfall than the sales team throwing a poorly baked contract over the wall to the dev team and telling them “make it work”?
This particular comment, the "UML Distilled" reminder, triggered a few hindsight notions.
Much like XML and J2EE tainted Java, I'm now having trouble distinguishing between UML and OOAD. Though I preferred Fusion to UML, I'm now wondering if any OOAD based methodology had a chance.
"...thinking that the main value of UML was in having a consistent language..."
Guilty. For a long time, I very much wanted executable models, roundtripping. I got over it. Now I place more weight on concision, DSLs.
But here's the new (to me) notion:
Maybe UMLs (and RUP) greatest benefit was the idea of having a list of questions to ask. You know, a methodology.
Writing this out, it sounds stupid, so please forgive my stumbling.
But two things stand out from the 90s, which I'm missing terribly today.
I miss Joel Spolsky's 12 steps to better code. What's today's equivalent? I haven't found it.
I miss strategy, strategic thinking. With all this agile stuff, I have no idea what anyone's talking about. Yes, UML & RUP were terrible. But at least we were trying to bring order to chaos. With agile, it feels like we forfeited, that we should just accept the chaos.