I contesti e le condizioni in cui le pratiche XP offrono il massimo valore.
XP è stato progettato per progetti in cui i requisiti cambiano frequentemente. Se non sai esattamente cosa costruire, XP ti aiuta a scoprirlo.
Segnali di alta incertezza:
In questi ambienti, gli approcci tradizionali falliscono. La progettazione dettagliata iniziale diventa obsoleta prima dell'implementazione. I grandi rilasci mancano l'obiettivo perché i requisiti sono cambiati.
XP abbraccia il cambiamento. I piccoli rilasci ottengono feedback rapidamente. La progettazione semplice evita investimenti eccessivi. Il planning game si adatta continuamente. L'incertezza non è un problema—è prevista.
Se i tuoi requisiti sono davvero stabili e ben compresi, XP funziona comunque, ma la proposta di valore è diversa. Ottieni qualità e salute del team, ma i benefici dell'adattabilità sono meno pronunciati.
XP presuppone che tu stia costruendo qualcosa che non comprendi ancora completamente. Le pratiche sono progettate per aiutarti a imparare la strada verso la soluzione giusta.
XP brilla quando il codice vivrà per anni. L'investimento nelle pratiche tecniche ripaga nel tempo.
Perché i sistemi di lunga durata beneficiano di XP:
Se stai costruendo un prototipo che verrà eliminato, l'investimento di XP nella qualità potrebbe non ripagare. Ma la maggior parte dei "prototipi" diventano sistemi di produzione. La maggior parte del codice "temporaneo" vive per anni.
La scommessa: Presumi che il tuo codice vivrà più a lungo di quanto pensi. Investire nella qualità fin dall'inizio. Se ti sbagli, hai perso un po' di tempo. Se hai ragione (e di solito ce l'hai), hai risparmiato anni di sofferenza.
XP richiede una stretta collaborazione. Il pair programming, i planning game e l'ownership collettivo funzionano solo quando le persone lavorano bene insieme.
Segnali che il tuo team è pronto:
Se il tuo team manca di queste qualità, le pratiche XP sembreranno forzate e imbarazzanti. Potresti dover costruire la salute del team prima di adottare XP—o usare le pratiche XP per costruire gradualmente la salute del team.
XP può migliorare la collaborazione, ma non può forzarla. Un team di persone che non condivideranno il codice non abbraccerà improvvisamente l'ownership collettivo. Un team che ha paura di ammettere gli errori non beneficerà della trasparenza.
La cultura deve supportare le pratiche—o almeno essere disposta a cambiare.
Gli sviluppatori si aiutano regolarmente a vicenda. Ammettono quando sono bloccati. Ruotano volentieri attraverso la codebase. Celebrano il successo del team, non l'eroismo individuale.
Gli sviluppatori proteggono il 'loro' codice. Nascondono i problemi finché non sono costretti a rivelarli. C'è competizione invece di collaborazione. La colpa è comune quando le cose vanno male.
XP richiede un cliente disponibile—qualcuno che possa rispondere alle domande, prendere decisioni sulle priorità e fornire feedback.
Senza disponibilità del cliente:
Disponibilità del cliente significa:
Se i tuoi clienti non sono disponibili, XP diventa difficile. Puoi usare un product owner come proxy, ma qualcuno deve svolgere efficacemente il ruolo del cliente.
La disfunzione organizzativa spesso impedisce la disponibilità del cliente. Il cliente è troppo occupato, troppo politico o troppo distante. Questi sono problemi organizzativi da risolvere, non problemi di XP.
Alcune pratiche XP presuppongono contesti moderni di sviluppo software. Potrebbero richiedere adattamenti in altri ambienti.
TDD presuppone:
CI presuppone:
Il pair programming presuppone:
Nella maggior parte dello sviluppo software, questi presupposti sono validi. Ma sistemi embedded, codice dipendente dall'hardware o ambienti altamente regolamentati potrebbero richiedere l'adattamento delle pratiche.
I principi rimangono. Le pratiche specifiche possono cambiare.
Se TDD sembra impossibile nel tuo ambiente, chiediti perché. Spesso l''impossibilità' rivela problemi di design che TDD ti aiuterebbe a risolvere.