Direi che il TDD è la base. Se non fai altro, il tuo codice sarebbe meglio solo da correttamente applicando questa pratica. TDD è ciò che consente lo sviluppo Agile (essendo XP una metodologia) per funzionare. Avere una buona copertura da una suite di test unitari ti permette di essere impavido con il cambiamento / refactoring del tuo codice, perché sai che una volta che qualcosa si rompe, avrai un test rosso per avvisarti.
Senza TDD, aggiungere nuove funzionalità o modificare le funzionalità esistenti diventa qualcosa come disinnescare una bomba. Ancora peggio, immagina che quella bomba non sia esplosa subito, ma invece manda in silenzio un gas inodore e incolore che una volta inspirato ti fa morire sei mesi dopo. Questo è ciò che è la codifica senza copertura del test. Potresti pensare che stai correggendo un bug o implementando una nuova funzione, ma in realtà potresti aggiungere un nuovo bug che non verrà scoperto finché tutto il maledetto inferno non si scioglierà per mesi.
Dopo vorrei andare con DDD. Questo ti insegnerà le tecniche per creare codice che è più facilmente testato, rendendoti ancora più bravo a TDD.
Per quanto riguarda lo Sviluppo Agile, l'unico modo per imparare davvero è quello di essere su un progetto in cui viene implementato correttamente. XP e Scrum e le altre metodologie hanno le loro specifiche ma ci sono dei principi generali Agile che funzioneranno bene indipendentemente dall'approccio.