Ciclo di rilascio di una settimana: come posso renderlo possibile?

12

Nella mia azienda (avvio del settore web vecchio di 3 anni), abbiamo problemi frequenti con il team del prodotto che dice "aaaah questa è una patch di crisi ora!" (non tutti?)

Questo ha un impatto sulla produttività (e sul morale) del personale tecnico, incluso se stesso. Il management ha passato un po 'di tempo a pensare a come ridurre la frequenza di queste richieste in giornata e ha escogitato la soluzione che avremo una release ogni settimana. (In precedenza ne facevamo uno ogni due settimane, che di solito scivolava di un paio di giorni o giù di lì.)

Ci sono 13 sviluppatori e 6 tester locali / 9 in mare aperto; la teoria è che solo 4 sviluppatori (e tutti i tester) lavoreranno su versioni pari, a meno che non emerga un pezzo di lavoro che richiede davvero alcune competenze specifiche da parte di uno degli altri sviluppatori. Ogni ciclo conterrà due giorni di lavoro di sviluppo e due giorni di lavoro di QA (più 1 giorno di scoping / triage / ...).

Le mie domande sono:

(a) Qualcuno ha esperienza con questa durata del ciclo di rilascio?

(b) Qualcuno ha mai sentito parlare di questa durata del ciclo di rilascio?

(c) Se (a) o (b), come diavolo fai funzionare? (Anche eventuali insidie da evitare, ecc., Sono apprezzate).

(d) Come possiamo minimizzare il danno se questo sforzo fallisce?

    
posta Arkaaito 12.10.2010 - 08:14
fonte

4 risposte

8

Puoi certamente consegnare ogni settimana, o anche più frequentemente. Al momento in genere rilasciamo ogni due settimane, ma non è insolito implementare funzionalità quando qualcosa è arrivato senza preavviso da uno dei nostri partner che sarebbe irrilevante se aspettassimo il ciclo successivo. A un certo punto nei prossimi mesi vorrei che passassimo alla consegna ininterrotta (gli articoli vengono rilasciati non appena è pratico una volta che sono "finiti") come standard, ma non siamo ancora abbastanza fiduciosi per andare avanti più lontano.

La cosa fondamentale è che il tuo sito web è strongmente sottoposto a test automatizzati: test unitari e test di accettazione end-to-end / specifiche eseguibili. Di conseguenza, ciò significa anche che la tua build è completamente automatizzata. A livello di accettazione usiamo Robot Framework che è eccellente per creare rapidamente una suite di test gestibile grazie al suo approccio basato su parole chiave. Per guardare e sentire il nostro tester sul posto fa alcuni controlli superficiali, ma abbiamo anche un paio di ragazzi in India che fanno un controllo più approfondito su diversi browser (ci sono siti che aiutano questo genere di cose prendendo screenshot per voi, ad esempio < a href="https://browserlab.adobe.com/en-us/index.html"> BrowserLab ).

Non automatizziamo completamente l'implementazione (il passaggio finale richiede l'intervento manuale, questa è una decisione concreta per noi), ma automatizziamo tutto come assicurando che vengano utilizzate le connessioni corrette del database, ecc. brevi cicli di implementazione sarebbe troppo facile commettere un errore con questo genere di cose.

C'è un buon libro recente sulla consegna ininterrotta che potresti voler controllare, l'ho sfogliato ma non l'ho ancora visto nei dettagli. Tuttavia, ciò che ho letto finora concorda bene con le nostre esperienze: Consegna continua: rilasci di software affidabili attraverso l'automazione di build, test e distribuzione

In sintesi è necessario un team altamente disciplinato, un alto livello di automazione e, soprattutto, un livello estremamente elevato di fiducia in tale automazione. A me sembra che passare a cicli settimanali nel tuo caso possa essere un errore - le patch di crisi suggeriscono altri problemi e dovresti lavorare per eliminarli. Upping the tempo potrebbe potenzialmente peggiorare la situazione ...

    
risposta data 12.10.2010 - 10:06
fonte
7

Se si è continuamente in modalità "crisi", direi che sarebbe più prudente fare un passo indietro e rivalutare il codice e il processo. Ovviamente, c'è un qualche tipo di fallimento che continua a ripetersi.

Anche se potrebbe non essere del tutto possibile farlo su una scala di produzione vera, ma sarebbe probabilmente utile avere almeno un membro senior e qualche altro sottoinsieme di sviluppatori e tester che si dedichi a questa valutazione.

Il "4 in un momento in avvicinamento" non mi sembra un chiaro vincitore. Ciò significa commutazione di contesto costante, che significa molto meno efficienza.

Ricorda che se affronti continuamente le modifiche, è molto più probabile che tu commetta errori in queste modifiche e interrompi qualcos'altro mentre lo fai.

    
risposta data 12.10.2010 - 16:14
fonte
5

I cicli di rilascio più brevi di una settimana sono stati certamente raggiunti nell'industria del software. Impiegano la tecnica chiamata consegna continua (anche chiamata implementazione continua ).

C'è un'azienda che rilascia 50 volte al giorno. Questo post del blog descrive come lo fanno .

    
risposta data 12.10.2010 - 16:22
fonte
1

Management has spent some time thinking about how to reduce the frequency of these "crisis jobs" and has come up with the solution that we are going to have a release every week.

Sembra che il tuo managament sia campione del mondo ... perché non investire nel tuo spirito di squadra? Vedrai che i problemi scompariranno da soli.

(a) + (b) IMHO, secondo le dimensioni della tua squadra dovrebbe essere massimo di due settimane. Una settimana lavorerà per spettacoli di un uomo o squadre molto piccole (come 2 o 3).

(c) + (d) Ma indipendentemente dalle dimensioni della tua squadra o del tuo progetto, una delle prime cose che faccio è automatizzare la build & distribuzione. Salvo i giorni se non settimane di lavoro facendo ciò nei primi giorni di un progetto.

Le tue implementazioni devono essere eseguite con un clic. Dalla sorgente alla messa in scena, quindi dalla messa in scena alla produzione. Ci sono molti strumenti per renderlo possibile. Da ant / nant a elementi super pesanti come Automated Build Studio .

Tutto può essere automatizzato dalle implementazioni dei file all'upgrade del database, inclusi backup, notifiche, rapporti, ...

    
risposta data 12.10.2010 - 08:28
fonte

Leggi altre domande sui tag