Quanto sono costosi i bug per i tuoi clienti? Cioè, hanno davvero bisogno di essere riparati al più presto, o preferiscono piuttosto la stabilità in uno status quo?
Quanto è costoso un errore nel tuo prodotto? Cioè, la spedizione di un bug è una seccatura o è fatale?
Per un prodotto con costosi bug (ad es. software di contabilità o sistemi di controllo dell'aeromobile), avresti cicli di rilascio lunghi, versioni cumulative rare e una grande parte del tempo speso per i test manuali creativi.
Dal momento che i tuoi utenti vivono attualmente sul bordo vivo, quanto sopra non deve essere la tua area.
Per un prodotto con bug poco costoso, avresti cicli di rilascio molto rapidi, per lo più test automatici e potenzialmente più rilasci al giorno.
Più piccola è una versione, meno test di creatività hanno bisogno, perché una modifica è piccola e il suo impatto in qualsiasi altra parte del sistema è in genere pari a zero. Più piccolo è l'insieme di modifiche, più piccole sono le possibilità della loro interazione imprevista.
Inoltre, minore è il cambiamento nella nuova versione, più è facile tornare alla versione precedente nota. (Essere in grado di farlo in pochi minuti è sempre utile.)
Quindi, "rilascia presto, rilascia spesso".
Diventa un tecnico di rilascio; di solito le persone prendono turni facendo rilasci. L'ingegnere del rilascio (di oggi) determina quando tagliare il rilascio, cioè quali modifiche sono incluse in esso, assicura che la generazione del ramo di rilascio sia fatta e testata automaticamente, quindi esegue alcuni test manuali delle modifiche che non lo fanno avere test automatici (es. sottigliezze dell'interazione dell'interfaccia utente).
Se una versione supera i test, la versione viene promossa nello stato "blu" ("beta", "canarino"); viene trasferito un po 'di carico di produzione o reso disponibile per il download da parte dei clienti che hanno sottoscritto versioni beta.
Se un rilascio fallisce un test, il rilascio viene posticipato e il problema viene comunicato a chiunque sia responsabile. Se una correzione è banale, può essere trasferita al ramo di rilascio e il processo si ripete. Se la correzione è grande / richiede molto tempo, il rilascio può essere annullato o uno stato precedente del ramo principale può essere tagliato come ramo di rilascio.
A mio parere, con un setup come questo, una release non dovrebbe essere un grosso problema, qualcosa che richiede molto sforzo intellettuale. Ci vorrà del tempo per gestire tutto questo, però. Assegna questa volta; misurare il tempo effettivamente speso e regolare. La vincita è costituita da un numero inferiore di correzioni di bug (al contrario di bleeding edge), e più veloci (invece di essere rilasciate una volta all'anno). Di solito ne vale la pena.