Simyl
simylflow
Home del Corso
Modulo 4: Sistemi Pull e WIP
Lezione 5 di 5
11 min

Il Potere dei Piccoli Lotti

Perché i grandi lotti sembrano efficienti ma non lo sono—e come ridurli.

1L'Economia della Dimensione dei Lotti

Un lotto è un gruppo di elementi elaborati insieme. Nella produzione: parti realizzate in una serie. Nel software: funzionalità raggruppate in un rilascio.

Il pensiero tradizionale favorisce i grandi lotti. Se ci vogliono 30 minuti per configurare la macchina, produci 100 parti per serie invece di 10. Distribuisci il costo di configurazione su più unità.

Questa logica si applica anche al software: se il deployment richiede 2 ore, raggruppa molte funzionalità per deploy. Distribuisci il sovraccarico su più modifiche.

Ma questo ragionamento ignora i costi nascosti:

Costo di inventario: I grandi lotti creano grandi inventari. Le parti aspettano. Le funzionalità aspettano. Il capitale è immobilizzato. Il feedback è ritardato.

Costo di qualità: I difetti nei grandi lotti colpiscono più elementi. Trovare quale modifica ha causato il bug è più difficile nei grandi rilasci.

Costo di ritardo: I clienti aspettano più a lungo. Una funzionalità completata in anticipo aspetta che il lotto sia completato.

Ritardo nell'apprendimento: Non impari dalla reazione del cliente finché l'intero lotto non viene rilasciato. Mesi di lavoro potrebbero essere nella direzione sbagliata.

Il costo totale dei grandi lotti spesso supera il costo di configurazione risparmiato.

Il Compromesso Nascosto

I grandi lotti scambiano visibilità e feedback per un'apparente efficienza. Ti senti efficiente elaborando grandi lotti. Ma sei cieco ai problemi più a lungo, impari più lentamente e l'inventario si accumula. L'efficienza è illusoria.

2Ridurre i Costi di Transazione

L'intuizione chiave: se riduci i costi di transazione (configurazione), i piccoli lotti diventano economici.

Lo SMED (Single-Minute Exchange of Dies) di Toyota ha ridotto il cambio macchina da ore a minuti. Una volta che il cambio era economico, i piccoli lotti avevano senso. La fabbrica poteva produrre ciò che serviva, quando serviva, in qualsiasi quantità.

Nel software, il "cambio" include:

  • Tempo di build
  • Durata della suite di test
  • Complessità del deployment
  • Sovraccarico del processo di review
  • Coordinamento del rilascio

Ognuno di questi è riducibile:

  • Build veloci: Compilazione incrementale, caching, codebase più piccole
  • Test veloci: Testing parallelo, selezione intelligente dei test, unit test più veloci
  • Deploy facili: Pipeline CI/CD, infrastructure as code, feature flag
  • Review leggere: Pair programming, PR piccole, trunk-based development
  • Nessun coordinamento di rilascio: Il continuous deployment elimina il concetto

Quando i costi di transazione si avvicinano a zero, la dimensione del lotto può avvicinarsi a uno. Questo è il flusso a pezzo singolo: ogni modifica va in produzione individualmente.

Continuous Deployment

Ogni merge su main attiva test automatizzati e deployment. Costo di transazione: ~0 (automatizzato). Uno sviluppatore fa il merge di 5 piccole modifiche al giorno. Ognuna è in produzione entro minuti. Dimensione del lotto: 1 modifica.

Il Rilascio Trimestrale

I deploy richiedono l'approvazione del change advisory board, coordinamento dell'ambiente ed esecuzione nel weekend. Costo di transazione: giorni di lavoro. I rilasci avvengono trimestralmente con oltre 100 modifiche raggruppate. Trovare cosa si è rotto richiede giorni.

3Vantaggi dei Piccoli Lotti

Quando raggiungi i piccoli lotti, tutto migliora:

Feedback più veloce: Le funzionalità raggiungono rapidamente gli utenti. Impari cosa funziona. Puoi cambiare direzione.

Debug più facile: Quando una piccola modifica causa un problema, la causa è ovvia. Il rollback è semplice.

Rischio inferiore: Ogni deployment è una piccola modifica. Il raggio d'azione di un bug è limitato.

Flusso migliore: I piccoli lotti si muovono più velocemente attraverso il sistema. Il lead time diminuisce.

Meno inventario: Nessuna grande pila di lavoro in attesa di essere rilasciata. Il capitale non è immobilizzato.

Qualità superiore: Le piccole modifiche sono più facili da revisionare. I difetti vengono individuati prima.

Maggiore flessibilità: Puoi ripriorizzare rapidamente. Non sei vincolato a un grande rilascio.

Morale del team: Rilasciare frequentemente è più gratificante che aspettare mesi per un grande rilascio.

L'espressione ultima è il continuous deployment: ogni modifica va in produzione quando è pronta. Questo è il flusso a pezzo singolo per il software. Nessun raggruppamento, nessuna attesa, nessun coordinamento dei rilasci.

Se il continuous deployment sembra impossibile, chiediti: quali costi di transazione dovrebbero ridursi? Poi lavora per ridurli.

Inizia da Dove Sei

Se fai il deploy mensilmente, prova settimanalmente. Se settimanalmente, prova giornalmente. Se giornalmente, prova in continuo. Ogni passo rivela ostacoli al passo successivo. Risolvi quegli ostacoli progressivamente.

Punti Chiave
  • I grandi lotti creano costi nascosti in inventario, qualità e apprendimento
  • Ridurre i costi di transazione rende economici i piccoli lotti
  • Il flusso a pezzo singolo è l'ideale—ogni elemento fluisce attraverso indipendentemente
  • Il continuous deployment è il flusso a pezzo singolo per il software
  • Lavora progressivamente verso lotti più piccoli riducendo i costi di configurazione
Errori Comuni da Evitare
  • Raggruppare 'per efficienza' senza contare i costi nascosti
  • Accettare i costi di transazione elevati come immutabili
  • Pensare che i piccoli lotti significhino più lavoro totale
  • Cercare di passare da trimestrale a continuo senza risolvere gli ostacoli intermedi