La pratica controintuitiva che migliora tutto.
I limiti WIP sono vincoli sul numero di elementi che possono essere in lavorazione in una determinata fase—o nell'intero sistema—contemporaneamente.
Sembra sbagliato. Non dovremmo lavorare su quanto più possibile? Non è meglio più attività?
No. Ed ecco perché:
Legge di Little: Lead Time = WIP / Throughput
Se il throughput è costante, dimezzare il WIP dimezza il lead time. Questa è matematica, non un'opinione.
Context switching: Ogni elemento aggiuntivo in lavorazione frammenta l'attenzione. Con 1 elemento, hai il 100% di focus. Con 5 elementi, hai il 20% di focus su ciascuno. Il context switching tra di essi brucia il resto.
Formazione di code: WIP elevato significa che gli elementi attendono in coda. WIP basso significa che gli elementi fluiscono più velocemente.
Finire prima di iniziare: Con i limiti WIP, devi finire qualcosa prima di iniziare qualcosa di nuovo. Questo forza il completamento.
Il risultato controintuitivo: fare meno cose alla volta significa finirne di più complessivamente.
Il Mantra dello Stop Starting
Smetti di iniziare, inizia a finire. Sembra uno slogan, ma è il principio fondamentale. Ogni elemento 'iniziato' che non è finito è inventario. Ogni elemento che non inizi è una voce in meno nella coda, un context switch in meno, un'unità di focus in più disponibile.
Come fai a sapere quale limite WIP impostare?
Inizia con l'osservazione: Conta quanti elementi sono in lavorazione proprio ora. Se hai 20 elementi su 5 persone, questa è la tua baseline.
Dimezzalo: Sul serio. La maggior parte dei team ha troppo WIP. Dimezzarlo è solitamente un buon punto di partenza.
Per fase vs. a livello di sistema: Puoi impostare limiti per fase (es. max 3 elementi in Code Review) o a livello di sistema (es. max 10 elementi su tutte le fasi). Inizia con ciò che è più semplice per il tuo team.
Uno per persona più buffer: Un punto di partenza comune è n+2 dove n è la dimensione del team. Quindi un team di 4 potrebbe iniziare con un limite WIP di 6.
Aggiusta in base ai risultati: I limiti WIP dovrebbero essere abbastanza stretti da creare flusso ma non così stretti che le persone non abbiano nulla su cui lavorare. Se il limite non viene mai raggiunto, è troppo alto. Se le persone sono costantemente inattive, potrebbe essere troppo basso.
L'obiettivo non è trovare il limite WIP "perfetto"—è creare una funzione forzante che guida il completamento e fa emergere i problemi.
Un team di 5 aveva in media 18 elementi in lavorazione. Hanno impostato un limite WIP di 9. Il primo sprint è sembrato lento. Nel secondo sprint, il lead time è sceso da 3 settimane a 8 giorni. Nel terzo sprint, l'hanno abbassato a 7. Il lead time è sceso a 5 giorni.
Un team imposta un limite WIP di 30 per un team di 5. Il limite non viene mai raggiunto. Nulla cambia. Il WIP si accumula a 25-28 senza innescare alcuna azione. Il limite è decorativo, non funzionale.
I limiti WIP funzionano solo se rispondi quando li raggiungi. Cosa fai quando il limite viene raggiunto?
Swarm: Smetti quello che stai facendo e aiuta a liberare il collo di bottiglia. Se Code Review è al suo limite, gli sviluppatori aiutano a revisionare invece di scrivere nuovo codice.
Attendi produttivamente: Se non puoi iniziare nuovo lavoro sulle feature, fai lavoro di miglioramento: riduci il debito tecnico, scrivi test, automatizza un processo doloroso.
Escalation dei blocchi: Se il limite viene raggiunto perché qualcosa è bloccato, escalation immediata. Il blocco non può nascondersi.
Analizza: Perché il limite viene raggiunto? Questa fase è il vincolo? C'è un problema sistemico?
Cosa NON dovresti fare:
Il limite è lì per creare pressione. La pressione fa emergere i problemi. I problemi, affrontati, portano al miglioramento.
Violare il Limite = Segnale
Quando sei tentato di violare il limite WIP, è un segnale. Qualcosa non va—o il limite è davvero troppo basso (raro) o il sistema ha un problema che vale la pena discutere (comune). Usa la tentazione come trigger per il miglioramento.