La percentuale di equilibrio della capacità totale assegnata alla correzione del difetto è uguale alla velocità di iniezione del difetto .
Molti fattori possono influenzare questo tasso, tra questi, ovviamente: 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, lavorare con queste 8 unità creerà nuove 6,4 unità di rilavorazione. Possiamo stimare lo sforzo totale che dovranno eventualmente impiegare come somma di una progressione geometrica:
10 + 8 + 6.4 + 5.12 + ...
Il numero di bug diminuirà esponenzialmente nel tempo, ma la squadra B ha un tale coefficiente nel suo esponente che andrà a zero molto lentamente. In realtà, la somma dei primi tre termini della serie sopra è 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 funzionalità, 10/50 = 20%; correzione dei difetti, 80%. 20/80 è la loro allocazione di capacità sostenibile.
Al contrario, il Team A ha una forma molto migliore. La loro progressione è simile a questa:
40 + 10 + 2,5 + 0.625 + ...
La somma di questa serie è 53 1/3, quindi l'allocazione di sviluppo delle caratteristiche del Team A è 40 / (53 1/3) = 75% e l'allocazione per la correzione dei difetti è del 25%, che corrisponde alla loro velocità di iniezione del difetto di 10/40 = 0,25 .
In realtà, tutti i termini della serie del Team A dopo i primi tre sono trascurabilmente piccoli. Ciò che ciò significa in termini pratici è che il Team A può probabilmente eliminare tutti i loro bug con un paio di versioni di manutenzione, la seconda versione è piuttosto limitata. Questo crea anche l'illusione che qualsiasi squadra possa farlo. Ma non la squadra B.
Ho pensato a questa equivalenza mentre leggevo il nuovo libro di David Anderson, "Kanban" . (Il libro tratta di un argomento diverso, ma affronta anche problemi di qualità.) Quando discute della qualità del software, Anderson cita questo libro, di Capers Jones, "Valutazioni del software, benchmark e migliori pratiche" :
"... nel 2000 ... misurato la qualità del software per i team nordamericani ... variava da 6 difetti per punto funzione a meno di 3 per 100 punti funzione, un intervallo da 200 a 1. Il punto medio è circa 1 difetto per Da 0,6 a 1,0 punti funzione. Ciò implica che è comune che i team impieghino più del 90 percento del loro sforzo per correggere i difetti. "Cita un esempio fornito da uno dei suoi colleghi di un'azienda che trascorre il 90% del tempo a correggere i propri bug .
La fluidità con cui Anderson passa dalla velocità di iniezione del difetto all'allocazione della capacità di correzione del defext ( il termine richiesta è il fallimento ) suggerisce che l'equivalenza delle due cose è ben nota ai ricercatori di qualità del software ed è probabilmente nota da qualche tempo .
Le parole chiave nel 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 vai al codice da qualche altra parte e lasci la manutenzione ad altri. Oppure accumuli il debito tecnico e lo scarichi su un nuovo proprietario.
Ovviamente, nessuna allocazione particolare andrà bene per tutte le squadre. Se decretiamo che il 20% deve essere speso per i bug, quindi, se una squadra ha un tasso di iniezione di difetti ultra-basso, semplicemente non avrà abbastanza bug per riempire il tempo e se una squadra aveva un tasso molto alto, i loro bug continuerà ad accumularsi.
La matematica che ho usato qui è molto semplificata. Ho trascurato cose come i costi di transazione (riunioni di pianificazione e stima, post mortem, ecc.), Che avrebbero influenzato in qualche modo le percentuali. Ho anche omesso le equazioni che simulano il sostegno 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 la velocità di iniezione del difetto e, di conseguenza, la tua richiesta di fallimento. Se riesci a creare un solo bug per ogni 10 funzionalità, avrai molto tempo libero per sviluppare nuove funzionalità e soddisfare i tuoi clienti.