Secondo il dizionario Garzanti, ottimizzare significa “perfezionare un procedimento, un impianto e simili, in modo da ottenere il massimo rendimento finale”. Volendo rimanere in termini generali, si può partire dalla considerazione che per ottenere un certo risultato si può procedere in infiniti modi diversi, alcuni dei quali saranno meno dispendiosi di altri. In tale senso generale, ottimizzare significa scoprire il modo meno dispendioso per giungere al risultato. Una grande branca della matematica si dedica alla soluzione di simili problemi generali.
Ridurre gli sprechi
Se si va ad analizzare un qualsiasi processo produttivo, si possono facilmente trovare una serie di sprechi, quali ad esempio burocrazia, incomprensioni, tempi morti, etc. La riduzione di questi sprechi porta ad una ottimizzazione del processo, come esemplificato dal metodo Lean e dal Toyota Production System.
Gli sprechi spesso non sono così evidenti. Ad esempio solo con l’aumentare del costo del carburante e col peggiorare delle epidemie influenzali ci si sta rendendo conto di che spreco sia il dover far spostare milioni di persone ogni giorno per far svolgere loro un lavoro che potrebbero fare anche comodamente a casa. Le nuove tecnologie permetteranno di ridurre questo spreco globale tramite il telelavoro.
Altri casi di sprechi avvengono quando non si colgono tutte le possibilità che una certa situazione permette. In questo caso il pensiero creativo e la ricerca possono permettere di sfruttare al meglio gli strumenti già esistenti. E’ il caso ad esempio delle centinaia di satelliti che fotografano ogni pochi minuti il nostro pianeta. Sfruttando algoritmi adeguati, si potrebbe usare quel flusso di informazioni per monitorare il territorio, per esempio per rilevare sul nascere gli incendi, o per trovare dispersi in mare, etc.
Gli sprechi nelle aziende informatiche
In informatica si parla di ottimizzazione solo in termini di codice o di sistemi, finalizzata a ridurre il tempo impiegato ad eseguire determinate operazioni. Tuttavia nelle aziende informatiche si assiste spesso non solo alla non ottimizzazione del codice (molti programmatori poco qualificati non sanno progettare codice veloce e riutilizzabile), ma anche e soprattutto alla non ottimizzazione del processo di creazione del software.
Gli sprechi più comuni sono:
- una comunicazione frammentata e con troppi passaggi intermedi, che crea incomprensioni tra il cliente e gli sviluppatori, costringendo questi ultimi a riscrivere il codice varie volte, applicando correzioni su correzioni e rendendo del tutto non manutenibile il programma realizzato;
- la parte commerciale utile solo al reperimento delle commesse, che propone al cliente mari e monti in tempi brevi e costi ristretti, quando la parte tecnica sa che i tempi ragionevoli sono altri;
- ritmi serrati di lavoro per rispettare le scadenze, a detrimento della qualità del prodotto;
- dover definire schede di test per dimostrare che il prodotto corrisponde ai requisiti (il cliente spesso non è soddisfatto, ma avendo approvato requisiti e test, è costretto a concludere l’acquisto, solo per trovarsi poi costretto a chiedere modifiche – a quello stesso fornitore, l’unico che sa com’è progettato il software – con ulteriore spreco di denaro e tempo);
- necessità di personale apposito che faccia test continui per controllare la corrispondenza alle schede di test;
- un management poco attento e reattivo ai problemi reali, interessato solo alla massimizzazione del profitto;
- una struttura ipertrofica e dispendiosa, quando il lavoro reale è svolto solo da pochi sviluppatori (che il cliente potrebbe assoldare privatamente, con grande risparmio).
Tutto ciò è noto da decenni, e le soluzioni sono esemplificate dal manifesto Agile ed implementate nelle metodologie che ne discendono, come ad esempio Scrum, tuttavia si continua imperterriti a non cambiare modo di lavorare.
Sfruttare l’informatica per ridurre gli sprechi
L’informatica, se ben utilizzata, può invece aiutare ad ottimizzare i processi. Il modo più evidente è l’automazione: fare un bilancio societario al giorno d’oggi richiede meno di un decimo di tempo di quanto occorresse cinquanta anni fa. Un programma di gestione ben fatto (associato ad esempio ad un sistema di vendita online) può permettere di sfruttare tecniche di produzione Just In Time, riducendo sprechi e tempi morti. Gli esempi delle possibilità offerte dall’informatica sono innumerevoli, dal marketing alla gestione del personale, dal telelavoro alla gestione dei clienti, della fatturazione e del bilancio, per arrivare alla robotica o al tuning con avanzate tecniche statistiche e matematiche .
Un aspetto spesso trascurato è invece l’aiuto che il lavoro di analisi e creazione del software può dare per meglio mettere a fuoco e razionalizzare i processi produttivi. Spesso nelle aziende c’è una conoscenza empirica e sottesa dei processi produttivi, senza che siano mai stati definiti esplicitamente, razionalizzati e schematizzati. I processi basati sulle consuetudini, se da un lato possono portare vantaggi poiché testati da anni di pratica, dall’altro pongono rischi e nascondono sprechi. Si pensi ad esempio a cosa avviene in caso di malattia di una figura chiave, o all’assunzione di un nuovo impiegato: in mancanza di una sistematizzazione esplicita (e scritta) del funzionamento del processo e delle conoscenze necessarie, i tempi di recupero o di apprendimento sono altissimi.
Poiché per creare un software occorre modellare la realtà aziendale ed i processi produttivi, vale la pena di sfruttare l’occasione per ottimizzare e razionalizzare tali processi, migliorare la qualità e ridurre gli sprechi. Ne può risultare un aumento della produttività, un miglioramento delle condizioni lavorative, una maggiore soddisfazione di impiegati e clienti, e maggiori opportunità di crescita.