Alec recently replied to one of my Agile diatribes with a very interesting set of comments. His point is that no project will succeed if it is badly run. I’d be the first to admit that in some cases, I should probably have stood my ground or found a more stable compromise. But we have to admit that many project managers are likely to be less savvy or less principled than Alec.
The reason we learn as we go along in an Agile project is because we never asked enough questions to begin with! The whole point of an up-front intensive design phase is to bring as many of those ‘doh!’ moments ahead of the development phase as we can. Catching a design (or requirements) flaw midway through a project is definitely better than catching it after delivery. But catching them during the design process is even better. Everything changes around us because those who ought to have given more thought to the requirements have postponed thinking (indefinitely?). What can reasonably be delayed? My initial gripe is that one man’s reason is another man’s madness.
I’m not suggesting that we drop Agile and go back to waterfall models (although maybe we should for big projects). All I really want is that we feel obligated to think before we act. Is that so much to ask?