Fornisci valore presto e spesso. Ottieni feedback prima che sia troppo tardi per cambiare rotta.
XP sostiene rilasci piccoli e frequenti. Questo era radicale nel 1999 quando i rilasci annuali erano la norma. È ancora radicale in molte organizzazioni.
Vantaggi dei rilasci piccoli:
Feedback più veloce: I clienti vedono software reale prima. Possono dirti cosa non va prima che tu abbia costruito troppo della cosa sbagliata.
Rischio ridotto: Ogni rilascio è una piccola scommessa. Se fallisce, hai perso settimane, non mesi. Puoi correggere la rotta rapidamente.
Consegna del valore più veloce: Le funzionalità completate vengono utilizzate. Una funzionalità rilasciata oggi è meglio di una funzionalità in attesa di un grande rilascio tra sei mesi.
Morale migliorato: Il team vede il proprio lavoro utilizzato. Rilasciare è soddisfacente. I cicli di rilascio lunghi prosciugano la motivazione.
Qualità migliore: Rilasci più piccoli significano modifiche più piccole. Le modifiche più piccole sono più facili da testare, più facili da debuggare e meno propense a causare problemi.
Tutto al Minimo Indispensabile
XP ha inventato il prodotto minimo funzionante (MVP) prima che esistesse il termine. Kent Beck lo chiamava 'il rilascio più piccolo che abbia senso.'
La giusta frequenza di rilascio dipende dal contesto, ma spingi per rilasci più piccoli e frequenti di quanto sembri comodo.
Esempi di frequenza:
Ogni passo più piccolo è meglio, fino al punto in cui il sovraccarico del rilascio domina. Se rilasciare richiede un'intera giornata di lavoro manuale, rilasciare quotidianamente è impraticabile. Prima sistema il processo di rilascio.
Segnali che stai rilasciando troppo raramente:
I rilasci piccoli richiedono investimento tecnico:
Test automatizzati: Non puoi rilasciare frequentemente se i test richiedono settimane. Test automatizzati veloci e completi sono essenziali.
Integrazione continua: Il codice deve integrarsi senza problemi. I branch di lunga durata sono incompatibili con rilasci frequenti.
Automazione del deployment: I rilasci devono essere a pulsante. I passaggi di deployment manuali ti rallentano e introducono errori.
Feature flag: Le funzionalità incomplete possono essere unite ma nascoste agli utenti. Questo permette rilasci piccoli anche quando le funzionalità si estendono su più iterazioni.
Strategia di migrazione del database: Le modifiche allo schema devono essere distribuibili senza rompere il codice esistente. Di solito questo significa migrazioni compatibili in avanti.
Monitoraggio e rollback: Quando qualcosa va storto, devi saperlo immediatamente. E devi essere in grado di fare rollback rapidamente.
Queste non sono pratiche XP in sé—sono pratiche DevOps moderne che abilitano la visione originale di XP della consegna continua.
Il team rilascia in produzione ogni martedì. Il processo è automatizzato e richiede 10 minuti. I feature flag nascondono il lavoro incompleto. Il rollback è a un clic.
I rilasci avvengono trimestralmente. Ogni rilascio è preceduto da un 'blocco del codice' e 2 settimane di test manuali. Il giorno del rilascio coinvolge 10 persone e richiede 8 ore. Il rollback richiede il ripristino dei backup del database.
L'estremo logico dei rilasci piccoli è la distribuzione continua: ogni commit che supera i test va direttamente in produzione.
Questo suona terrificante. Ma con le pratiche giuste, è in realtà più sicuro dei grandi rilasci:
La distribuzione continua richiede:
Non ogni team è pronto per questo. Ma ogni team può muoversi verso rilasci più piccoli e frequenti. Inizia rilasciando il doppio delle volte. Poi di nuovo il doppio. Vedi fino a dove puoi arrivare.
Se la distribuzione continua sembra impossibile, chiediti perché. Gli ostacoli che identifichi sono di solito cose che dovresti sistemare comunque: test lenti, processi manuali, codice fragile.