Wow, Ravi Mohan really goes on a rant! I’ve heard the arguments for the agile developement method from people all for it and people who don’t care for it, and even people who just don’t care at all. I think it all boils down to the fact that the project management style and tools really just don’t matter. Pick a methodology and stick with it. Or better yet, choose what will work in your organization and take the best parts from several of the popular “fads” — use what works. The skills of the programmers matter more than which way you want to tackle planning, meetings, and management’s visibility.
TDD as a “design methodology” has no legs (See an agile “guru” struggle to write a Sudoku Solver). Having unit tests helps in regression testing and maintenance. That’s it. If you need unit tests to “design” you aren’t a great designer of software. Sorry. Sad but true.
Every fad eventually dissipates and sometimes they leave behind (very small) nuggets of value. The “everything should be modelled with Objects” fad passed (remember all the books from Booch and Rumbaugh and Iverson about how to do Object design?). Design Patterns are almost dead as a movement. Agile is facing a backlash (and will die soon enough).