Come funziona Kanban: se il fornitore è lento, non è vero che non posso farci niente

Una frase che mi capita spesso di sentire è più o meno questa: “Noi potremmo organizzarci meglio e rendere prevedibile il nostro lavoro, ma i tempi di certe operazioni dipendono dagli altri. Non possiamo farci niente.”

Ogni volta che l’ho sentita ho pensato che avrei dovuto scrivere questo articolo. Perché non è vero che non ci si può fare niente: si può fare qualcosa, e anche di abbastanza semplice.

Chiamo fornitore chiunque debba fare qualcosa per me senza che io ne abbia il controllo. Può essere un’azienda esterna, ma anche un collega di un’altra funzione.

Prima di tutto, misurare

Se dipendo da qualcuno che ci mette tanto tempo, la prima cosa da capire è cosa vuol dire quel “tanto”. Se il fornitore non mi dà le sue metriche, le prendo io: è quella che chiamo ‘metrica reciproca’. Misuro il tempo che passa da quando faccio la richiesta a quando ricevo la risposta, e lo faccio abbastanza a lungo da costruire una curva di distribuzione del Lead Time.

Non servono migliaia di dati. Se il fenomeno è consistente, cioè se i tempi restano più o meno sempre nello stesso range, siamo in quello che Taleb chiama Mediocristan. Il Kanban Maturity Model (KMM) offre una regola pratica per verificarlo: il rapporto tra il 98° percentile e la mediana deve stare sotto 5,6. In quel caso una trentina di misurazioni bastano per avere un quadro piuttosto affidabile.

Abbastanza spesso, a misure prese, scopro una cosa banale: il fornitore non è imprevedibile, è semplicemente più lento di quanto dichiara. E lo è in modo costante.

Decidere con i dati

Il riferimento abituale è l’85° percentile: sei volte su sette la risposta arriva entro quel tempo. Il KMM definisce il Lead Time proprio così: se so quando mi serve la consegna, il Lead Time è l’anticipo con cui devo fare l’ordine per aspettarmi di riceverla in tempo.

A questo punto confronto quel valore con il tempo di cui ho bisogno. Se la risposta mi serve più in là dell’85° percentile, la richiesta va in classe di servizio standard: la mando con il giusto anticipo e so che, storicamente, arriverà in tempo. È inutile sollecitare, ed è inutile sorprendersi ogni volta dei tempi lunghi. Li conosco.

Se invece mi serve prima, il rischio di andare lunghi è più alto di quello che posso permettermi, e la richiesta va segnalata come urgente. Più il tempo è stretto, più il rischio è alto, e la distribuzione mi dice esattamente quanto. L’urgenza però deve restare un’eccezione: se tutto arriva urgente, il fornitore smette di crederci. Per questo conviene giocare d’anticipo il più possibile.

Provare a pressare e poi misurare di nuovo

“Va bene, ma allora come facciamo?” A questo punto posso fare un esperimento: pressare il fornitore e vedere cosa succede alla distribuzione. Se si comprime e l’85° percentile rientra nel tempo che mi serve, ho trovato un pattern su cui contare: il pressing diventa strutturale e lo faccio di default. Se non si comprime, ho comunque imparato che quella leva non funziona.

In ogni caso devo continuare a misurare, perché il pressing cambia il sistema. E devo tenere a mente che, se i miei tempi si accorciano, forse sto solo passando davanti agli altri clienti del fornitore: io miglioro, il suo sistema no.

Le misure servono anche a valle. Se a mia volta devo garantire dei tempi a un cliente, interno o esterno, il mio livello di servizio atteso (SLE – Service Level Expectation) deve tenere conto di quello che so del mio fornitore. È inutile promettere cose che so già di non poter mantenere a causa di qualcun altro.

Un caso reale

Con un fornitore con cui c’è una buona collaborazione dovevamo chiudere un progetto. Il fornitore dichiarava di poter finire entro fine febbraio, e per farcela avrebbe dovuto rilasciare circa nove work item a settimana. Gli abbiamo preso le misure, ricostruendole da progetti passati: ne rilasciava tre, in modo piuttosto stabile.

Non potevamo triplicare il suo Throughput, così abbiamo triplicato il tempo e pianificato la consegna per fine aprile. A lui abbiamo continuato a indicare fine febbraio. Abbiamo misurato il Throughput e non il Lead Time, ma con un sistema stabile vale la Legge di Little e il risultato non cambia: circa tre mesi.

Il progetto si è chiuso, come previsto, a fine aprile. La scadenza più stretta non ha accelerato nulla: il fornitore ha tenuto il suo ritmo. Noi però siamo arrivati puntuali, perché avevamo pianificato sui suoi numeri e non sulle sue dichiarazioni.

Successivamente ho condiviso con lui, in modo trasparente, cosa avevamo misurato e cosa avevamo fatto. E lui ha cambiato approccio.

Conclusione

Quindi no, non è vero che non posso farci niente. Come minimo posso misurare, e sapere cosa posso promettere a mia volta. Poi posso giocare d’anticipo, sperimentare il pressing e vedere se cambia qualcosa. E posso portare i dati al fornitore, perché il suo sistema può migliorarlo solo lui.

Chi ha già un sistema Kanban strutturato può fare il passo successivo con le classi di dipendenza, di cui ho scritto nell’articolo Come funziona Kanban: gestire le dipendenze esterne con le classi di dipendenza.

Bibliografia

  1. David J. Anderson, Teodora Bozheva, Kanban Maturity Model: A Map to Organizational Agility, Resilience, and Reinvention – 2nd Edition, Kanban University Press, 2021

Ho pubblicato originariamente questo articolo per il portale Kanban Help, al quale collaboro insieme al collega Luca Gambetti.
Visita Kanban Help – www.kanban.help – per conoscere gli strumenti formativi e di coaching che ti possono aiutare a introdurre il metodo Kanban nella tua azienda.

Il segreto dell’efficienza di flusso: perché un sistema lavora meglio al 65% del carico massimo teorico

Nell’articolo precedente ho condiviso un’esperienza personale che mi ha confermato, sul campo, come un flusso di lavoro sia davvero efficiente solo quando funziona al 60-70% della sua capacità potenziale. Cercare di spingerlo fino al 100% significa, inevitabilmente, condurlo al collasso: il sistema si satura, rallenta e finisce per bloccarsi.

La spiegazione di questo fenomeno, apparentemente controintuitivo, risiede nella solida base scientifica di un caso particolare della Teoria delle Code, comunemente noto come Legge di Little. Prende il nome da John D. C. Little, professore alla MIT Sloan School of Management, che la ha formulata.

La teoria delle code applicata ai flussi di lavoro

Possiamo visualizzare il nostro sistema come un “tubo di flusso” che eroga un servizio, i cui clienti sono le richieste di lavoro, che chiameremo work item (rappresentati nell’immagine come post-it).

Per analizzare questo sistema, utilizziamo tre concetti chiave:

  1. Lambda (λ): la frequenza con cui arrivano i work item; ovvero, quanto viene caricato il sistema.
  2. Mu (μ): la capacità produttiva del sistema; ovvero, il numero medio di work item serviti dal sistema per unità di tempo.
  3. Work In Progress (Ls o WIP): il numero medio di work item in corso di lavorazione all’interno del sistema.

Nell’ipotesi che la frequenza di carico (λ) e la capacità produttiva (μ) siano costanti, entra in gioco la Legge di Little. Il modello semplificato che andiamo ad applicare si basa anche sulle seguenti ipotesi :

  • la coda segue una logica FIFO (first-in-first-out, il primo work item in coda è il primo servito)
  • i work item sono serviti su un unico canale, i tempi di servizio sono indipendenti gli uni dagli altri, seguendo una distribuzione tale per cui “μ” work item per unità di tempo possono essere serviti in media
  • i tempi di servizio sono indipendenti dal numero degli arrivi

La Legge di Little stabilisce che il WIP (Ls) è uguale alla frequenza di carico (λ) moltiplicata per il Tempo di Ciclo (Ws). Il Tempo di Ciclo è il tempo medio di permanenza di ciascun work item all’interno del sistema.

La Teoria delle Code ci fornisce anche la formula per calcolare il Tempo di Ciclo (Ws) del sistema, nell’ipotesi che la capacità produttiva (μ) sia maggiore della frequenza di carico (λ):

Quando il carico eccessivo blocca il flusso

Per comprendere l’importanza di mantenere non troppo elevato il carico, analizziamo cosa succede a un sistema che ha una capacità produttiva (μ) di 10 work item per ogni giornata lavorativa di 8 ore:

Carico
giornaliero (λ)
Tasso di
carico
Tempo di
Ciclo
medio (Ws)
Work In
Progress
(Ls)
Effetto
sul
sistema
5 work
item
50%1 ora e
36 minuti
1 work itemSistema
scarico
6 work
item
60%2 ore1,5 work
item
Sistema
quasi
carico
7 work
item
70%2 ore e
40 minuti
2,3 work
item
Ancora
accettabile
8 work
item
80%4 ore, quasi
raddoppia
4 work
item
Limite di
stallo
9 work
item
90%8 ore9 work
item
Sistema
quasi
bloccato
10 work
item
100%Impossibile
calcolare
Impossibile
calcolare
Sistema in
stallo
completo

Come si può notare, l’aumento del carico non produce un incremento lineare della produttività, ma una vera e propria impennata del Tempo di Ciclo e del WIP.

Se passiamo da 6 a 8 work item al giorno, il Tempo di Ciclo raddoppia, così come il Work in Progress, che schizza a 4 work item in media. Quando il carico raggiunge 9 work item, il Tempo di Ciclo raddoppia ancora, costringendoci ad aspettare essenzialmente un giorno intero per vedere evaso un singolo work item. Al 100% del carico, le formule indicano un Tempo di Ciclo infinito, ovvero che il sistema si blocca.

Il punto di equilibrio: il 65% circa del carico massimo

In pratica, affinché il sistema mantenga un flusso efficiente, il numero di work item con cui andrebbe caricato è tra 6 e 7. Un calcolo più raffinato ci dimostra che l’ottimale è all’incirca il 65% del carico massimo.

Questo significa che il nostro sistema raggiunge la sua massima efficienza quando lo carichiamo non più del 65% della sua capacità.

Il ruolo delle micro-interazioni

A questo punto potremmo porci una domanda legittima: perché un carico apparentemente basso — circa due terzi della capacità massima — garantisce la massima efficienza?

Questo accade perché, anche se spesso non ce ne accorgiamo, nei sistemi di flusso avvengono costantemente una miriade di micro-interazioni tra tutte le parti che li compongono. Queste interazioni, impercettibili prese singolarmente, nel loro insieme finiscono per rallentare in modo significativo il sistema.

Un esempio emblematico di questo fenomeno sono le code a tratti in autostrada. Quando il traffico raggiunge la saturazione, le auto iniziano a rallentare e fermarsi senza una causa apparente. Questa continua alternanza di frenate e ripartenze nasce da una moltitudine di micro-interazioni tra i veicoli, che, sommandosi, finiscono per bloccare l’intero sistema.

Lo stesso principio vale anche per i nostri flussi di lavoro. È proprio per questo che limitare il lavoro in corso (limit WIP) rappresenta una delle pratiche fondamentali del metodo Kanban.

Conclusione

Per garantire che un flusso di lavoro possa raggiungere la sua massima efficienza in modo sostenibile nel tempo, è di vitale importanza assicurarsi che non sia caricato troppo oltre la soglia del 65% della sua capacità. Ridurre il carico di lavoro non è segno di sottoutilizzo, ma la chiave per accelerare il flusso, ridurre drasticamente il Tempo di Ciclo e aumentare la produttività.

Bibliografia

  1. Paul Newbold, Principles of Management Science, Prentice-Hall, 1986
  2. David J. Anderson, Teodora Bozheva, Kanban Maturity Model: A Map to Organizational Agility, Resilience, and Reinvention – 2nd Edition, Kanban University Press, 2021

Ho pubblicato originariamente questo articolo per il portale Kanban Help, al quale collaboro insieme al collega Luca Gambetti.
Visita Kanban Help – www.kanban.help – per conoscere gli strumenti formativi e di coaching che ti possono aiutare a introdurre il metodo Kanban nella tua azienda.

L’efficienza non nasce dalla saturazione: il limite di carico massimo di un sistema è il 60-70% della sua capacità teorica

Il limite di carico massimo di un sistema è il 60-70% della sua capacità teorica. È una lezione che ho imparato sul campo, molto prima di scoprirne la base teorica anni dopo, studiando la Legge di Little.
Un flusso di lavoro è davvero efficiente solo quando opera al 60-70% della sua capacità potenziale. Tentare di spingerlo verso il 100% significa inevitabilmente portarlo al collasso: il sistema si imballa, rallenta, si blocca.

Questa verità mi è diventata chiara durante un’esperienza tanto concreta quanto frustrante, quando ero responsabile di più progetti di sviluppo software.

L’enigma di Stefano e la capacità fantasma

Il problema emerse all’inizio di un nuovo progetto. Qualche giorno dopo il kick-off chiesi al project manager come stessero procedendo i lavori.
Mi rispose che, in realtà, il progetto non era ancora partito.

Il motivo? Uno solo: Stefano (nome di fantasia) non era disponibile. Era impegnato in attività di manutenzione.
Chiesi quando sarebbe stato disponibile e mi risposero “domani”. Ma anche il giorno dopo la situazione era identica: Stefano era ancora bloccato sulla manutenzione.

A quel punto mi dissi: “Aspetta un attimo. Com’è possibile che Stefano non sia disponibile? Doveva esserlo.”

Decisi di approfondire. Andai a parlare con il suo responsabile e gli chiesi: “Scusami, quanto tempo passa Stefano a fare manutenzione?” Mi rispose sinceramente: “Non lo so con precisione. Parecchio, ma non saprei quantificare.”

Sapevo che tutto il lavoro veniva registrato nei timesheet, quindi proposi di verificare i dati. Dopo un po’ di insistenza, riuscimmo a recuperare i registri dei mesi precedenti. Il risultato fu inequivocabile: Stefano dedicava circa un terzo del suo tempo alla manutenzione in produzione.

La ricalibrazione della capacità e il rischio della turbolenza

Con quei numeri in mano, mi presentai al Project Management Office (PMO). Dissi loro: “Pianifichiamo il lavoro di Stefano come se fosse disponibile al 100%, ma non lo è. In realtà possiamo contare su di lui solo per il 70% del tempo.”

Mi chiesero se fossi certo del dato. Risposi di sì: avevamo prove misurabili.

Ma il problema non era solo quello. Oltre alla disponibilità media, bisognava considerare la turbolenza: picchi, imprevisti, variazioni.
Non bastava pianificare sulla base del 70% di disponibilità, serviva margine. Dopo una discussione, concordammo di ridurre ulteriormente il carico effettivo al 60-65%.
Solo entro quella soglia si poteva sperare che la disponibilità fosse affidabile.

La battaglia per lo slack e la scommessa con l’amministratore delegato

Dopo quella ricalibrazione, mi convinsi che serviva anche dello slack: una tolleranza per assorbire variazioni e imprevisti.
All’epoca pianificavamo ancora con i diagrammi di Gantt; non conoscevo ancora il metodo Kanban né avevo letto il libro Kanban: Successful Evolutionary Change for Your Technology Business di David Anderson.

Proposi al PMO di introdurre margini di slack, ma la risposta fu immediata: “Impossibile. L’amministratore delegato ci licenzierebbe.”

Non arretrai. Dissi: “Preferisco dimettermi piuttosto che continuare a pianificare così.”

Dopo un acceso confronto, trovammo un compromesso: “Scrivete pure che la decisione è mia. Se qualcuno deve essere cacciato, sarò io.”

Riuscii a convincerli. Preparammo un diagramma di Gantt in cui ogni barra aveva la sua tolleranza, con la nota: ‘Tolleranza di Marco Re’.

Quando il piano arrivò sulla sua scrivania, l’amministratore delegato mi chiamò: “Marco, che cos’è questa storia? Vieni a spiegarmela.”

Gli esposi l’approccio. Non era convinto e allora lo sfidai: “Lasciami applicare il metodo fino a Natale. Se il 6 gennaio tutto sarà andato liscio, bene. In caso contrario, torniamo indietro e potrai anche rimuovermi dall’incarico.”

Quel periodo era cruciale: per il tipo di mercato in cui operava l’azienda, arrivava sempre la grande ondata di cambiamenti di fine anno che gettava i team di sviluppo nel caos.

Accettò.

La validazione definitiva

Implementammo la pianificazione con carico effettivo al 60-65% e margini di slack.
Arrivò il 6 gennaio e, per la prima volta, l’azienda attraversò il passaggio d’anno senza scossoni.

Aspettavo quel giorno e andai a trovare l’amministratore delegato, questa volta di mia iniziativa: “Hai visto? Così abbiamo gestito tutto in modo fluido!”

Quell’esperienza fu la prova definitiva: non è la saturazione che genera efficienza, ma la capacità di limitare empiricamente il lavoro in corso (WIP limit, nel linguaggio Kanban) e di mantenere margine operativo.
Sul campo ho imparato che pianificare al 60-70% — nel nostro caso 60-65% — è la vera chiave per costruire flussi di lavoro resilienti, sostenibili ed efficienti.

Perché funziona

Un sistema completamente saturo è fragile: ogni imprevisto diventa una crisi.
Un sistema con spazio di manovra, invece, è resiliente: assorbe variazioni, reagisce agli urti e continua a funzionare in modo fluido.

La vera efficienza non è riempire tutto il tempo disponibile, ma garantire continuità, prevedibilità e serenità operativa.

Ho pubblicato originariamente questo articolo per il portale Kanban Help, al quale collaboro insieme al collega Luca Gambetti.
Visita Kanban Help – www.kanban.help – per conoscere gli strumenti formativi e di coaching che ti possono aiutare a introdurre il metodo Kanban nella tua azienda.