Come i giapponesi nel pacifico

Da qualche giorno osservo un mio collega, grande utilizzatore di Linux. Abbiamo lo stesso medesimo laptop (ovviamente di origine aziendale), e ci abbiamo installato Slackware in contemporanea.

Un giorno gli ho messo in mano un cd di installazione, e lui è partito a razzo, non aspettava altro che una scusa per mettere anche sul computer di lavoro il suo sistema operativo preferito.

Meno male che c’è lui, perchè questo simpatico Toshiba si è dimostrato molto meno linux-friendly del precendete Fujitsu, e senza il suo apporto non avrei nemmeno la scheda di rete funzionante.

Ora, la scheda di rete è una cosa irrinunciabile, però i problemini erano tanti, e io mi sarei accontentato di avere le funzionalità minime, e magari addirittura aspettare di cambiare pc.

Lui invece si impunta, se c’è qualcosa che non va, e che non si risolve immediatamente con le soluzioni canoniche : “ah si, devo abilitare questo.. devo installare il modulo.. il primo risultato di google dice..” non lascia perdere. Piuttosto non ci dorme la notte, ma deve risolverlo. Si ci incarognisce come un pitbull idrofobo.

Questo tipo di combattimento ad oltranza, senza condizioni, mi fa pensare ai giapponesi sperduti negli isolotti del pacifico che continuavano la seconda guerra mondiale quando questa era finita da un pezzo.

A differenza dei suddetti poveracci, questo atteggiamento, nell’informatica, risolve.

Io invece non entro in modalità Giapu con Linux, perchè? La mia indole non è molto diversa: sono ben conosciuti, a chi mi sta intorno, i miei episodi di insonnia fino a chè quel pezzo di codice non gira come dovrebbe. Anche perchè, diavolo, se non riesco a fare girare qualcosa di cui ho testato ogni linea il motivo è di certo che sono idiota, e questo merita la vittoria o il seppuku.

Quindi perchè a me capita con Java, e non con Linux? Io credo che la differenza stia nel fatto che con Java ho un’idea d’insieme di come funziona la piattaforma e quindi, anche se non ho la più pallida idea della fonte di un problema specifico, ho sempre la percezione che con la giusta dose di ragionamento, raccolta informazioni e smanettamento, arriverò a scoprirlo. Con Linux invece, con conoscienze limitate, non ho la visione dell’insieme, la mia lotta ad oltranza col problema non può assumere una direzione ben precisa. Non che non abbia in mente delle strade d’indagine, ma c’è differenza tra l’indagine e l’analisi.

Ciò che fa desistere il giapponese dentro di me, di fronte al sistema operativo, non è un nemico troppo forte, è la percezione di non conoscere nemmeno la mia isoletta, teatro dello scontro. Prima devo conoscere l’isola, altrimenti non posso imbastire la mia resistenza, ed è quello che finisco sempre a fare, studiare l’isola. Guerra posticipata fino al raggiungimento delle conoscienze necessarie per far passare lo sforzo previsto da “inevitabilmente infinito” a “numero enorme e non quantificato” che invece permette l’inizio delle ostilità.

L’altro giorno, in un momento catartico, tracciavo il parallelo tra un sistemista e un medico. Non per miei problemi di salute, quanto per un volo pindarico.

Le affinità tra questi due sono eccellenti : lavorano su un sistema complesso, usano la logica per effettuare una diagnosi, sanno che la vittoria non è mai conclusiva, è solo un “alla prossima volta”.

Eppure tra molti medici che conosco io non vedo l’atteggiamento da giapponese. Forse perchè vivo in Italia e quindi non sono nemmeno invogliati/in condizione di… ma sorvoliamo sulla sanità.

Stranamente l’atteggiamento del medico assomiglia molto più al mio atteggiamento verso Linux, che a quello verso Java (o quello verso Linux del mio amico) : “Ah, boh, proviamo questo, se non va lasciamo perdere, se la cosa si dimostra critica cambiamo computer/formattiamo.” diventa “Ah, sarà questo, facciamogli fare questa cura, poi si vedrà.”

Eppure è più importante che un medico salvi una persona (o anche solo che risolva un problema non critico, ma condizionante) piuttosto che un sistemista salvi un’installazione. No? (e qui giù sul basso valore della persona nella società moderna.. ma non è questo il punto :) )

Perchè quindi, il medico non è un giapponese? Si possono elencare molte attenuanti, ma quella che concerne questo parallelo è questa :

Il medico conosce molto meno dell’uomo di quanto il sistemista conosca del sistema, visto che l’uomo è più complesso e molto meno ben documentato.

Eppure, questo dovrebbe comportare un numero maggiore di tentativi, di raccolte dati (vari tipi di analisi, di test), di pensiero analitico. Mentre il principale difetto che riscontro nell’approccio del medico verso la diagnosi, rispetto al sistemista, è una limitata fase di studio, e una breve, debole analisi dei dati.

Il medico guarda le analisi (e chiamiamoli dati, non analisi! L’analisi la dovrebbe fare lui!!), ci pensa qualche -secondo- e dice : “hm, probabile che sia…”, o magari, se proprio siamo fortunati “hm, probabile che sia… oppure …., facciamo delle altre analisi così escludiamo una o l’altra”.

Ora, io non sono forse così geniale come un medico, ma, in molti casi, forse ci vuole più di qualche secondo per valutare tutti i fattori. Capisco che non voglia farsi vedere indeciso, ma, tranne nei casi più ovvii, un sistema complesso richiede più ragionamento, anche solo per decidere il prossimo test a cui sottoporlo.

Inoltre, visto che non esiste un JUnit per il corpo umano, sottoporre una persona a una terapia e poi vedere i risultati, ha dei tempi molto lunghi. Quindi, in un certo senso, è fondamentale una “big analysis up front”. Stranamente invece vengono barattati mesi di terapia, per risparmiare alcune ore di esami aggiuntivi e qualche mezz’ora di analisi dei dati.

Il TDD per gli esseri umani, come per i sistemi operativi, è una strategia che è sconsigliabile, mancano gli strumenti per accelerare il feedback e gli effetti collaterali dei tentativi di cura, spesso creano nuovi problemi, o influenzano il problema originale.

Un esempio di un medico giapponese è (sfortunatamente solo nella finzione) Dr. House, dell’omonima serie. Io lo adoro.. è un fanatico di Unix applicato alla medicina.

Fa i suoi tentativi, quando è l’unico modo di discriminare e procedere nel suo pensiero logico, ma vive sapendo che il suo mestiere è fondato sull’analisi attenta di tutti i dati a disposizione, di tutti i più reconditi sintomi.

Chi ha visto la puntata dello spasmo intestinale troppo veloce per essere percepito ad occhio nudo capirà : lui aveva ragionato su tutte le alternative, anche le più improbabili, aveva raccolto più dati possibile, aveva escluso tutto tramite il suo affilato cervello e la risposta che aveva trovato non era stata la soluzione.

Quindi ha ricontrollato i dati alla luce dell’ultima ipotesi che aveva resistito prima di essere smentita e ha ridiscusso il dato che l’aveva smentita, trovando che in verità, nascostamente, la confermava. Perchè la soluzione c’è -sempre- direbbe lui. Perchè nella battaglia di un medico con il sistema complesso la soluzione è la diagnosi, non la cura. Una malattia può essere incurabile, ma deve essere diagnosticabile, in tutte le sue meccaniche. Se non le si conosce, bisogna studiarle, da non dormirci la notte, per affilare a sufficienza il processo logico, da escludere tutti i falsi positivi, ed avere la soluzione al mistero.

Ciò che separa il -lavoro- del sistemista da quello del medico è che un sistemista, se trova la causa, ha anche la cura, mentre il medico ha di fronte a sè una quantità di cause incurabili. E fin qui, sono disposto ad accettare un amen.

Ma io temo che ciò che separa il sistemista dal medico è la voglia di dipanare i misteri dei sistemi complessi, a prescindere, quindi il medico si arrende prima di aver sfruttato tutta le sue possibilità.. non è giapponese.

Comments

Complimenti per l’articolo e per il blog!
Posted by Dzamir on 05/11/2007 03:18:26 PM

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s