In 2004 my professor introduced me to XP and TDD. Both greatly reduced my pain. Suddenly I do not have to think about every tiny detail upfront because I can change nearly anything later without causing great costs.
In 2005 I discovered that this was not completely true. As every application developer I was heavily working with databases and soon discovered that my code was agile but not the database. Fortunately smart software engineers like Scott Ambler and Pramodkumar J. Sadalage felt the same pain and invented ways to address the problem. They recently published a book called "Refactoring Databases" which is laying on my table but I still have to find the time for reading it.
Now, what is left? As I found out yesterday the next hot topic seems to be web services. How can a provider of services stay agile without causing problems on the consumer side? Fortunately again some smart people are already working on this issue. Read this interesting article from Ian Robinson and Martin Fowler. There is a podcast with both of them, too.