I firmly believe that in order to be able to develop and deliver software rapidly, also known as agile development, teams need to do xp programming practices like TDD and pair programming. Why so? Well, let’s take the TDD practice first: TDD helps developers keeping their code clean and the design well factored. To me TDD is not so much about test as it is with design. Surely, it will help in keeping your test coverage at a good level and this coverage will help in protecting your code. But much more important is the fact that TDD will improve the design of your application and prevent the growth of technical debt which so often delays software projects.
Another xp practice that agile teams should apply is that of pair programming. I do think that most people now agree that pair programming is far more efficient for most creative programming tasks than the individual approach. The most obvious benefit of this technique is perhaps that it leads to better code and design quality. Other benefits of doing pair programming can be found here: http://en.wikipedia.org/wiki/Pair_programming.
Still I find that if not pushed, people slide back to the habbit of doing solo-programming.
One of the promises of the agile sofware development methodology is that of more frequent software releases. If we can create good quality software every day we greatly increase the chance of fulfilling this promise.