To do the same thing over and over again and expect a different result is insanity.
The snapback to Waterfall is instinctive, especially for traditional shops - especially those coming from a COBOL background. It's a very slippery, silent, and dangerous slope. It's like a recovering crack addict just getting just one hit.
Here are some of the more obvious signs you're falling off the wagon:
- Process definition and following the process is a priority over coding, testing, and delivering
- Process complexity is a frequent complaint of team members
- There's no time to make architectural improvements or do upgrades. Shortcuts are regularly accepted
- The next deadline always outranks the long-term investment
- You have tools and infrastructure that dictate your workflow and make it less efficient, that you have to alter architecture for, that you have to make allowances for
- Your developers have more meeting time than coding time (testers have more than testing time)
- Your meetings typically have more than 4 people in them
- Regularly scheduled meetings are the norm
- All of your requirements are already worked out
- Your software delivery dates and deliverables for those dates are worked out
- The software isn't considered done unless the documentation is done
- You haven't talked to your customer in over a week
- Morale is low, teams bicker, motivation is low
- The post-mortem/retrospective becomes a "bitch session"; no actual improvement ever gets made and issues continue to recur over and over again
For those looking to get the real advantage of Agile, you need to take on the whole thing, not just the pieces you think your company can deal with.
Practices like Model-Driven Engineering and Continuous Integration (with Test-Driven Development) are key to reducing costs, time, and increasing quality.