domenica 2 aprile 2017

Elogio della semplicità

Chi mi conosce sa quanto io ami la semplicità. In tutti i campi, ma particolarmente in quello informatico. Perché, al contrario di quanto molti potrebbero pensare, aiuta, sia gli utilizzatori, che i progettisti ed i realizzatori. Meno i commerciali ed il marketing; è questo, credo, il problema.

L'ho già proposto nel post sull'IoT (l'internet delle cose), il concetto che aggiungere ciò che non è indispensabile ad un sistema lo rende più vulnerabile agli inevitabili problemi della tecnologia, soprattutto se non si ha un "piano B" nel caso di malfunzionamenti. Ma non è solo questo. A mio modo di vedere, l'utilità della semplicità si vede soprattutto in due casi.

Il primo è quello degli utilizzatori. L'utente medio di uno strumento informatico non legge istruzioni o manuali, non ha competenze basilari, è assillato dalla fretta. Per questo è importantissimo che ciò che gli si presenta davanti (l'interfaccia) sia immediatamente chiaro da comprendere, e soprattutto richieda il minimo delle azioni. Lungi da me con questo scoraggiare la presenza di manuali e affini, anzi! Tuttavia, alla semplicità di uno strumento corrisponderà la semplicità del suo manuale, e ne minimizzerà l'utilizzo.
In definitiva, dovendo scegliere, l'utente medio preferirà uno strumento semplice da usare rispetto ad uno più complicato.

Il secondo caso è quello di coloro che gestiscono i sistemi informatici. Davanti ad un problema, l'investigazione (troubleshooting) beneficia della minore quantità di possibili sorgenti di errori. A seconda dei sintomi, è possibile andare più direttamente a cercare l'elemento responsabile. Se fosse necessario effettuare delle prove, meno elementi da testare significa meno tempo sprecato. Per contro, è facile capire come mai davanti ad un sistema molto complesso, in cui cercare il problema comporta tempi lunghi e conoscenze estremamente approfondite, molte volte si preferisce un banalissimo riavvio... sempreché funzioni, e soprattutto non impedisce che il problema si presenti di nuovo!
A questo proposito, all'università ho ricevuto una sorta di "illuminazione" quando mi hanno insegnato il metodo di programmazione "orientato agli oggetti" (object-oriented), che infatti da qual momento è diventato l'unico di cui mi servo (in realtà non sono un programmatore in senso stretto, e nel campo sistemistico è difficile che possa essere usato). In sostanza, in alternativa al metodo classico, che prevede sequenze logiche di istruzioni e funzioni generiche, si è pensato di suddividere i problemi in entità logiche (gli oggetti) che definiscono al loro interno le operazioni che possono essere eseguite su di essi, rendendole disponibili per l'utilizzo di altre entità logiche. In questo modo, rendendo l'oggetto "responsabile" delle proprie operazioni, si è sicuri che esse siano definite una volta per tutte, siano normalmente più semplici, e quindi sia molto più facile trovare e correggere gli errori semplicemente osservando il loro comportamento.

La sostanza di tutto questo discorso è che personalmente preferisco utilizzare strumenti che facciano poche cose, ma le facciano estremamente bene. Parlando di programmi software, preferisco dei programmi piccoli (spesso sono costituiti da un singolo file eseguibile) che riesco a provare facilmente, e di cui dopo mi fido ciecamente, piuttosto che suite di megaprogrammi che promettono cose incredibili, ma per cui è necessario spendere giornate per imparare come fare anche le cose più banali. Magari per effettuare un'operazione neanche troppo complessa ne devo usare 3 o 4 uno dopo l'altro, ma vi assicuro che cercare di ottenere lo stesso risultato con un solo programma che non conosco bene, è molto più stressante.

Per ultimo, userò una battuta che ha fatto pochi giorni fa il mio amico e collega Stefano: in sostanza ha detto che non userebbe mai un touch screen al posto del volante, in un'auto. Mi sbilancio e credo che potremmo essere tutti d'accordo: quando c'è la vita in gioco, molto meglio il caro, vecchio piantone meccanico che non un sistema fatto di sensore, trasduttore, collegamento, convertitore, motore, alimentazione, etc; più diretto, più sicuro.

Nessun commento:

Posta un commento