Here is an interesting articlce about Agile programming, Agile programming has fallen short, conference told | InfoWorld | News | 2006-03-13 | By Paul Krill.
While I like some of Agile methods I disagree with a lot of the premises behind agile. To me agile especially extreme programming is more about laziness than programming. It has been shown time and again that you need to do leg work before you start coding. And if you do a lot of times you end up with a better quality and maintainable system than if you just start to code.
Case in point. I have been working on a project for the last 6 weeks. Most of the time I have been in meetings nailing down requirements and the details of the implementation. The demo is at the end of the month and we have just now started coding. However, we will make our demo and it will be higher quality than if we had just started coding for a couple of weeks. Why?
The biggest thing is that we have written down and worked out the details of the system on paper before coding. In fact the UI went from being .Net to C++ when it was finally implemented. Try refactoring a C# to native C++ oh wait you can't. Words are very powerful for describing what you need to build and for all their power very easy to change.
I would challenge people to think more about what they are doing before they go and start coding. It is not always true that you can coded it faster than you can write about the design And for managers you get the added bonus that if something happens to a key team member you have at least part of their ideas on paper and not gone.