Il titolo dell’articolo e della presentazione di Francesco Sacchi, un po’ clickbait e un po’ realtà, ha catalizzato l’interesse di molti di noi durante l’unconference tenutasi durante l’Intré Camp di ottobre 2019.
La tematica dell’efficienza è sempre molto calda, che si parli di un processo industriale, del lavoro odierno (analisi, test, sviluppo, documentazione ecc.) o dei prodotti tangibili che si realizzano in una fabbrica.
Ispirato da diversi interessanti scambi d’idee avuti con altri sviluppatori al SoCraTes Italia e da alcuni libri letti, Francesco ha pensato di condividere le conclusioni e le lezioni che ne ha tratto.
Francesco presenta la teoria dei vincoli e come sfruttarla per diventare più efficienti.
Scenario: simulazione di un impianto di produzione aperitivi
Francesco ha utilizzato un approccio sperimentale per la sua presentazione: avvalendosi dell’aiuto di due volontari ha simulato una situazione tipica di un impianto manifatturiero.
Marco, il primo volontario, ha rappresentato un macchinario che produce semilavorati.
Ferdinando ne ha rappresentato che completa la realizzazione del prodotto finale utilizzando i semilavorati.
La scelta vincente di Francesco è stata di organizzare la sua sessione in orario di aperitivo e concretizzare l’esempio prendendo tutti i partecipanti per la gola.
Il semilavorato consiste in fette di pane tagliate da una baguette, mentre il prodotto finito è il pane ricoperto di crema ai carciofi o ai pomodori.
Attenzione catalizzata in tempo zero!
Teoria dei vincoli applicata allo scenario
Quello che è emerso dalla simulazione è ciò che si aspettava Francesco.
Tagliare il pane è più rapido che spalmare la salsa, quindi si potrebbe decidere di creare un accumulo di semilavorati (alias le fette di pane).
Per quanto l’esempio possa essere semplice, permette di applicare efficacemente la teoria dei vincoli di Goldratt.
Per riuscire a rendere più efficiente un processo industriale, il primo passo dovrebbe essere quello di osservare il sistema nel suo complesso, e identificare quali sono i vincoli, ossia i colli di bottiglia.
Conoscere il collo di bottiglia del sistema permette di prendere decisioni ragionate per migliorare il processo.
Nell’impianto di produzione aperitivi simulato, sarebbe molto miope e controproducente migliorare il “macchinario” che affetta il pane, dato che già lavora a un ritmo che il resto dell’impianto non può sostenere.
Una soluzione corretta, in questo caso, sarebbe quella di rimuovere il vincolo corrente.
Un esempio può essere il trovare un modo più efficiente di spalmare la salsa, o aggiungere un secondo spalmatore.
La consapevolezza dei vincoli, inoltre, permette di sfruttare il vincolo a proprio vantaggio.
Se è il componente più lento a determinare la velocità del sistema, tutti gli altri componenti avranno del tempo libero.
Avere quindi risorse disponibili da dedicare ad altre lavorazioni.
Nel concreto: se chi taglia il pane è così veloce, perché non fargli tagliare anche del salame, creando una seconda linea di prodotti?
Mentre i prodotti finali venivano rapidamente consumati, Francesco ha moderato una discussione aperta su come questo esempio e la teoria dei vincoli in generale si possono applicare al nostro lavoro quotidiano.
Teoria dei vincoli applicata allo sviluppo software
La discussione ha coinvolto diversi livelli: innanzitutto, come rendere più efficienti i software che scriviamo.
In certi casi, non è nient’altro che comune buon senso: si apre un profiler, si individua lo step più lento nell’esecuzione di un’operazione, ci si concentra al fine di rendere più efficiente questo step.
Si è poi passati a discutere su come essere più rapidi nel rilasciare un prodotto o una nuova funzionalità, in particolare sfruttando le metodologie agili e l’automazione.
Un sistema di Continuous Delivery riduce i tempi di rilascio, la presenza di test rende più rapida l’individuazione e la soluzione di bug (contribuendo alla qualità oltre che alla velocità). Cicli di feedback frequenti consentono di tarare più rapidamente il prodotto alle esigenze del cliente man mano che si evolvono.
Ancora più in generale: come possiamo intervenire nel lavoro quotidiano per migliorare l’intera azienda?
Tante, troppe le idee interessanti per riportarle in questo articolo, ma un semplice esempio può essere che di fronte a vincoli non eliminabili (una risposta che tarda ad arrivare, una riunione rimandata ecc.), si può sempre sfruttare la capacità di lavoro che andrebbe sprecata. Concentrare le proprie energie su un altro task o dedicare qualche momento in più allo studio o all’esercizio.
Per approfondire ulteriormente, nel paragrafo Riferimenti potete trovare i libri consigliati da Francesco.