Tim Bray on XP and Agile:
Writing tests after you’ve written the code is boring and painful: writing them first (a key premise of XP) makes it more interesting, and thus less likely that you’ll skip them.
Feature-at-a-time development makes development project schedules immensely more predictable
Detailed specification, in advance, of the functions of a large software system is essentially impossible.
Make sure to read Tim’s posting for more context & insight.