The gang was enjoying a BBQ Pig Out at Rudy's. It was a magical moment until Rusty and Millie started to argue about Agile software development.
Rusty started it all by saying, "Agile is magical."
Millie banged on the table with a half-chewed pork rib. "That's ridiculous. There's nothing magical about it."
"Sure there is." Rusty pulled a Sharpie out of his pocket protector and printed "AGILE" on a paper towel (which passes for a napkin in Rudy's). "There are just a few things management has to provide—like MONEY." He sketched a capital M on the towel, making MAGILE.
"Money's not enough," said Millie.
"Of course not. Management has to eliminate environmental interference.' With one smooth stroke, he crossed out the "E."
Millie frowned and shook her head, but Rusty took no notice. "And they need to Cooperate, and not just occasionally, but All the time." He added the C and A, finally producing "MAGICAL."
"Cute," said Millie, her tone sarcastic, but she was clearing struggling not to smile. "But successful projects require more than waving a Sharpie wand and pronouncing 'AgileCadabra.'"
We all knew that Rusty was pulling our legs. Millie, of course, was right. If you want to succeed with an Agile approach, you need more than magic rituals. Not only that, you need to avoid quite a few rather common mistakes that lead to failure.
Common Mistakes in Building New Things
In my experience, these common mistakes are not unique to Agile projects, but will kill Agile projects just as easily as they kill Waterfall or any other approach:
1. Committing to a schedule or cost without having any relevant experience with this type of project.
2. Using the experience on a similar but smaller project to commit to an estimate on a larger project.
3. Extending requirements to "optimize" or beat unknown competition.
4. Failing to recognize signs of impending failure and/or act on them to extend schedules, reduce costly requirements. (like those that diminish velocity by creating more frequent failed tests).
5. Failing to recognize limits of the environment or process or recognizing them but being unwilling to change them.
6. Simply undertaking too many simultaneous tasks and perhaps failing to complete any of them.
7. Not recognizing both changes and opportunities presented by a new technology.
8. Not asking the customer, out of fear, or lack of customer surrogate contact.
9. Not asking anyone for help (fear?).
10. [I invite my readers to contribute more failure dangers to this list.]
The Underlying Failure
Beneath each of these failure reasons, and others, lies one generalized failure. I explain that failure in the remainder of this article, posted as a chapter in my book, Agile Impressions.