La percentuale di equilibrio della capacità totale allocata per correggere i difetti è uguale alla velocità di iniezione dei difetti .
Molti fattori possono influenzare questo tasso, tra questi, naturalmente: quale tipo di prodotto sta sviluppando il team, quali tecnologie e pratiche tecniche usano, il livello di abilità del team, la cultura aziendale, ecc.
Considerando la squadra B, se creano in media 8 unità di rilavorazione per ogni 10 unità di lavoro che completano, allora lavorando queste 8 unità creerai nuove 6.4 unità di rilavorazione. Possiamo stimare lo sforzo totale che alla fine dovranno spendere come somma di una progressione geometrica:
10 + 8 + 6.4 + 5.12 + ...
Il numero di bug diminuirà in modo esponenziale con il tempo, ma la squadra B ha un tale coefficiente nel loro esponente che andrà a zero molto lentamente. In realtà, la somma dei primi tre termini della serie precedente è solo 24.4; dei primi cinque, 33.6; dei primi 10, 45; dell'intera serie, 50. Quindi, sintesi della squadra B: tasso di iniezione del difetto, 0,8; sviluppo di funzionalità, 10/50 = 20%; correzione dei difetti, 80%. 20/80 è la loro allocazione di capacità sostenibile.
Al contrario, la squadra A è molto più in forma. La loro progressione è simile a questa:
40 + 10 + 2,5 + 0,625 + ...
La somma di questa serie è 53 1/3, quindi l'allocazione dello sviluppo delle caratteristiche della squadra A è 40 / (53 1/3) = 75% e l'allocazione dei difetti è del 25%, che corrisponde al loro tasso di iniezione del difetto di 10 / 40 = 0,25.
In realtà, tutti i termini della serie A della squadra dopo i primi tre sono trascurabilmente piccoli. Ciò che significa in termini pratici è che la Squadra A può probabilmente distruggere tutti i loro bug con un paio di rilasci di manutenzione, mentre la seconda versione è piuttosto piccola. Ciò crea anche l'illusione che il team qualsiasi possa farlo. Ma non la squadra B.
Ho pensato a questa equivalenza durante la lettura di il nuovo libro di David Anderson, "Kanban" . (Il libro è su un tema diverso, ma affronta anche problemi di qualità.) Quando si discute della qualità del software, Anderson cita questo libro, di Capers Jones, "Valutazioni software, benchmark e best practice" :
"... nel 2000 ... la qualità del software misurato per i team nordamericani ... variava da 6 difetti per punto funzione a meno di 3 punti su 100, un intervallo da 200 a 1. Il il punto medio è di circa 1 difetto per punti da 0,6 a 1,0, il che implica che è comune per i team spendere più del 90% dei loro sforzi per correggere i difetti. "Cita un esempio fornito da uno dei suoi colleghi di un'azienda spende il 90% delle volte a correggere i bug.
La fluidità con cui Anderson passa dalla velocità di iniezione del difetto all'allocazione della capacità di fissaggio del defext ( richiesta di fallimento è il termine per esso) suggerisce che l'equivalenza delle due cose è ben nota al software ricercatori di qualità e probabilmente è stato conosciuto per qualche tempo.
Le parole chiave nella linea di ragionamento che sto cercando di presentare qui sono "equlibrium" e "sostenibile". Se togliamo la sostenibilità, allora c'è un modo ovvio per imbrogliare questi numeri: fai la codifica iniziale, poi passa al codice da qualche altra parte e lascia la manutenzione agli altri. O esegui il debito tecnico e scaricalo su un nuovo proprietario.
Ovviamente, nessuna assegnazione particolare si adatta a tutte le squadre. Se decidiamo che il 20% deve essere speso per i bug, allora, se una squadra ha un tasso di iniezione di difetto ultra-basso, non avrà semplicemente abbastanza bug per riempire il tempo, e se una squadra ha avuto un tasso molto alto, i loro bug continuerà ad accumularsi.
La matematica che ho usato qui è molto semplice. Trascuravo le cose come i costi di transazione (riunioni di pianificazione e stima, post mortem, ecc.), Che influirebbero in qualche modo sulle percentuali. Ho anche omesso le equazioni che simulavano il mantenimento di un prodotto e lo sviluppo di un altro contemporaneamente. Ma la conclusione è ancora valida. Fai quello che puoi, in termini di pratiche tecniche, come test unitari, integrazione continua, revisioni del codice, ecc., Per ridurre il tasso di iniezione dei difetti e, di conseguenza, la domanda di guasti. Se riesci a creare un solo bug per ogni 10 funzionalità, avrai molto tempo libero per sviluppare nuove funzionalità e soddisfare i tuoi clienti.