Succede spesso di pensare o di sentire frasi come: è un intervento semplice, da “dieci minuti”. Questa forma mentis, anche se funziona in una buona parte dei casi, ha dei risvolti abbastanza pericolosi quando è applicata a progetti che riguardano l’informatica.

 

It’s easy to mislead estimation work and hard to recover from being misled – MAGNE JØRGENSEN

 What We Do and Don’t Know about Software Development Effort Estimation

 

Mettiamo il caso di essere stati invitati a cena a casa di amici che non vediamo da molto tempo e, per l’occasione, passiamo un’ora in enoteca per scegliere una bottiglia di vino d’annata.

Una volta arrivati a destinazione chiediamo di passarci un cavatappi perchè il rosso deve “respirare” un po’ prima di essere bevuto, ma a quel punto scopriamo che il cavatappi si è rotto il giorno prima ed i nostri amici non hanno avuto il tempo di comprarne uno nuovo. Non ci perdiamo d’animo, ci immedesimiamo in Mc Gyver  e riusciamo a trovare il modo per aprire la bottiglia senza che il tappo cada dentro.

Tra un discorso e l’altro è arrivato il momento del secondo e siamo curiosi di assaggiare la produzione di questa cantina che non conoscevamo, ma ci accorgiamo che il vino sa di tappo. Nonostante tutti i nostri sforzi, le aspettattive sono state disattese.

E’ un caso che capita molto di rado nella vita reale, ed il fatto che possa accadere non ci obbliga a portare un cavatappi e una bottiglia di riserva alle cene a casa di amici. Anzi, dopo qualche sera potremmo essere considerati un po’ bizzarri e fissati.

Invece, quando si parla di sistemi complessi, situazioni simili accadono più frequentemente di quanto si creda.

 

Crediti immagine: xkcd – Abstraction

 

Siamo continuamente bombardati da messaggi che elogiano la semplicità di utilizzo delle nuove tecnologie e spesso tendiamo a dimenticare che tutto questo è possibile perchè esistono persone e architetture informatiche che gestiscono la complessità al nostro posto.

 

Technology always requires effort and will fail if not applied in the right way – Matt Asay

Why Even “Simple” Technology Can Be Hard For Developers – Readwrite

 

Per completare un task da “dieci minuti” potrebbero servire delle competenze che si acquisiscono solo dopo anni di pratica e di studio. Senza contare che potrebbe essere necessario eseguire delle (semplici) procedure di cui non si è mai testata l’efficacia e di cui, di conseguenza, non si conosce l’affidabilità.

Durante la fase di design o di implementazione capita spesso di dovere utilizzare delle “scatole nere”, ovvero degli “oggetti ravvicinati del terzo tipo” che promettono di fornire un risultato a seguito di una nostra azione o di una nostra richiesta. Come se non bastasse, ogni “scatola nera” ne contiene altre al suo interno, nello stesso modo in cui è costruita una matrioska.

Queste astrazioni funzionano nella maggior parte dei casi, ma non ci possono garantire una assoluta consistenza. Infatti, una delle competenze che differenzia un informatico esperto da un novellino, è la conoscenza, non solo di queste limitazioni, ma anche dei workarounds che è nessario implementare per aggirarle.

Nella mitologia greca, Cassandra aveva il dono di prevedere il futuro, ma non veniva ascoltata perchè i suoi presagi erano nefasti e non aveva modo di provare inconfutabilmente le sue “visioni”. Alcune volte farebbe comodo possedere delle doti divinatorie, ma putroppo dobbiamo accontentarci di seguire l’intuito e la nostra conoscenza.

 

La conoscenza rende tutto più semplice – John Maeda

Le leggi della semplicità – John Maeda

 

Con questo non voglio dire che mi presenterò a cena con il cavatappi ed una bottiglia di vino di riserva, ma che forse ci ho pensato per un attimo prima di uscire di casa.

 


 

 


Immagine di copertina: Andrea Bordoni – Generata con Apophysis fractal flame editor