Comprendere come XP e Scrum differiscono, si sovrappongono e lavorano insieme.
XP e Scrum sono emersi più o meno nello stesso periodo e condividono le stesse radici, ma si concentrano su problemi diversi.
Scrum si concentra sulla gestione del progetto: Come organizzi il lavoro? Quali ruoli ti servono? Quali riunioni? Quali artefatti? Scrum ti fornisce un framework per gestire il flusso di lavoro attraverso un team.
XP si concentra sulle pratiche di ingegneria: Come scrivi effettivamente il codice? Come garantisci la qualità? Come mantieni sano il codebase? XP ti fornisce pratiche per svolgere bene il lavoro.
Ecco perché si completano a vicenda in modo così naturale. Scrum ti dice cosa costruire in uno sprint. XP ti dice come costruirlo.
Nonostante i focus diversi, XP e Scrum condividono concetti chiave:
Un team che "fa Scrum" assomiglia molto a un team che "fa XP" visto dall'esterno. La differenza è sotto il cofano.
Scrum è silenzioso sulle pratiche di ingegneria. La Guida Scrum non dice nulla su TDD, pair programming, refactoring o integrazione continua. Presume che i team scopriranno da soli le pratiche tecniche.
XP è prescrittivo sulle pratiche di ingegneria. XP dice che devi scrivere i test prima. Dovresti fare pair programming. Farai refactoring continuamente. Ti integrerai molte volte al giorno.
Scrum definisce i ruoli. Product Owner, Scrum Master, Development Team. Questi ruoli hanno responsabilità specifiche.
XP è flessibile sui ruoli. C'è un cliente e degli sviluppatori. Tutto qui. XP presume che il team si auto-organizzerà attorno ai ruoli secondo necessità.
Scrum ha eventi specifici. Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective.
XP ha cadenze più flessibili. Planning game, standup, iteration demo—simili, ma definiti in modo meno rigido.
La Vera Differenza
Scrum ti dice come organizzarti. XP ti dice come programmare. La maggior parte dei team di successo ha bisogno di entrambi.
Molti team di successo usano il framework di Scrum con le pratiche tecniche di XP. Questa combinazione è potente:
Questo non è "impuro" o sbagliato. I creatori originali di Scrum si aspettavano che i team portassero pratiche di ingegneria. XP le fornisce.
Un pattern comune:
I team spesso chiamano questo "Scrum con pratiche di ingegneria XP" o semplicemente "fare bene agile."
Un team esegue sprint di due settimane (Scrum) con TDD, pair programming e integrazione continua (XP). Lo Scrum Master facilita il processo; gli sviluppatori possiedono le pratiche tecniche.
Un team esegue sprint e ha tutti gli eventi Scrum, ma non scrive test, non fa mai refactoring e si integra solo alla fine dello sprint. Sono 'agile' ma la qualità del loro codice si deteriora ad ogni sprint.
Puoi fare XP senza Scrum. Alcuni team preferiscono l'approccio più leggero di XP:
Questo funziona bene per i team che trovano la struttura di Scrum troppo pesante, o dove il lavoro arriva continuamente (come operazioni o supporto).
La chiave è che le pratiche tecniche di XP sono non negoziabili. Che tu usi Scrum, Kanban o qualcos'altro per organizzare il lavoro, TDD, refactoring e integrazione continua rimangono essenziali.
Attenzione
Alcuni team usano 'no Scrum' come scusa per saltare completamente la disciplina. XP senza disciplina ingegneristica non è XP—è solo caos.