Perché essere occupati al 100% non significa essere efficaci al 100%, e come il margine migliora il flusso.
Sembra ovvio: per massimizzare la produttività, tieni tutti occupati. Se gli sviluppatori sono inattivi, stai sprecando denaro.
Questa intuizione è sbagliata per il lavoro intellettuale.
Un utilizzo elevato (80%+) causa:
La matematica è brutale. Man mano che l'utilizzo si avvicina al 100%, i tempi di attesa tendono all'infinito. Un sistema al 99% di utilizzo ha code drammaticamente più lunghe rispetto a uno all'80%.
La teoria delle code dimostra che il tempo di attesa esplode all'aumentare dell'utilizzo:
Al 50% di utilizzo: Il tempo di attesa è circa uguale al tempo di servizio All'80% di utilizzo: Il tempo di attesa è 4 volte il tempo di servizio Al 90% di utilizzo: Il tempo di attesa è 9 volte il tempo di servizio Al 95% di utilizzo: Il tempo di attesa è 19 volte il tempo di servizio
Questo accade perché la variabilità sia negli arrivi che nei tempi di servizio crea code. Quando non hai margine, non puoi assorbire la variazione.
Esempio reale: Se ci vogliono 2 ore per revisionare una PR, ma il revisore è al 90% di utilizzo, la PR attende 18 ore in coda prima che inizi la revisione. Tempo totale: 20 ore per un'attività da 2 ore.
Il Paradosso
Il margine non ti rallenta—ti accelera. Un sistema al 75% di utilizzo spesso consegna più velocemente di uno al 95% perché le code sono più brevi.
Il margine non è la stessa cosa dell'inattività. Ci sono usi produttivi del margine:
Svuotamento delle code: Quando si raggiungono i limiti, il margine permette alle persone di aiutare a eliminare i colli di bottiglia.
Lavoro di miglioramento: Debito tecnico, automazione, miglioramenti degli strumenti. Questi rendono il lavoro futuro più veloce.
Apprendimento: Formazione, sperimentazione, sviluppo delle competenze.
Reattività: Capacità di gestire richieste urgenti senza sconvolgere tutto.
Collaborazione: Aiutare i colleghi, pair programming, condivisione della conoscenza.
I team al 100% di utilizzo non hanno tempo per nulla di tutto questo. Elaborano solo elementi di lavoro in una coda. Diventano più lenti nel tempo perché non investono mai nel migliorarsi.
"Non abbiamo tempo per migliorare il nostro processo."
Questo è il sintomo più comune della trappola dell'utilizzo. I team sono così occupati a fare il lavoro che non possono migliorare il modo in cui lo fanno.
Ma il miglioramento del processo è il modo in cui aumenti la capacità in modo sostenibile. Senza di esso:
Il ciclo:
Rompere il ciclo:
Il team opera al 70-80% di utilizzo. Quando gli sprint sono leggeri, ripagano il debito tecnico, automatizzano i test, migliorano la pipeline CI. Il trimestre successivo, lo stesso team consegna di più con meno sforzo.
Il team opera al 100% di utilizzo permanentemente. Nessun tempo per miglioramenti. La qualità del codice si degrada. I bug aumentano. Il team lavora di più per consegnare la stessa quantità. Alla fine, le persone si licenziano.
"Perché gli sviluppatori a volte non stanno programmando?"
Questa domanda deriva dal pensiero basato sull'utilizzo. Ecco come riformularla:
Concentrati sul throughput, non sull'utilizzo. "Stiamo completando 10 funzionalità per sprint. Preferiresti che completassimo 8 funzionalità ma tutti sembrassero più occupati?"
Spiega il tempo di attesa. "Quando siamo al 100% di capacità, le richieste urgenti attendono 2 settimane per iniziare. All'80%, iniziano entro 2 giorni."
Mostra la matematica. "Il trimestre scorso abbiamo speso il 30% del tempo su correzioni di emergenza. Questo trimestre abbiamo speso il 20% sulla prevenzione, e le correzioni di emergenza sono scese al 10%. Guadagno netto: 10%."
Usa analogie. "Un'autostrada al 100% di capacità è un parcheggio. Un'autostrada all'80% di capacità scorre. Quale porta le persone a casa più velocemente?"
L'obiettivo è spostare la conversazione da "Le persone sono occupate?" a "Il lavoro sta fluendo?"
Se gli stakeholder resistono, offri un esperimento a tempo limitato: 'Proviamo un'allocazione all'80% per un trimestre e misuriamo i lead time.' I dati battono le argomentazioni.