La Grande Nicchia.

Dopo il mio post su Microsoft, sono stato accusato di avere una visione elitaria dell’informatica. A sentire i soliti cultori dell’informatica per tutti, e del tutto per tutti, qualsiasi cosa che sfugga ad un utente qualsiasi dovrebbe essere bandita, in quanto fa sentire inferiori gli utenti che per scelta non ne capiscono una cippa. Vorrei rispondere a questa idiozia in due fasi, la prima dedicata al discorso “nicchia”, la seconda dedicata al discorso “informatica in se’”.

Per prima cosa, vorrei parlare della storia delle “nicchie”, perche’ il nomignolo “nicchia” viene oggi assegnato a qualsiasi parte della professione che non sia approcciabile dal bimbominkia, ovvero a qualsiasi parte dell’informatica che richieda un qualche genere di competenza reale.

Immaginiamo che ad un certo punto ci sia una grande penura di professionalita’, ovvero che improvvisamente milioni di persone non sappiano fare un cazzo di niente. Si tratta di persone che si sono iscritte a scuole che avevano come obiettivo l’insegnamento o il concorso per il posto statale, e che si sono scontrate col fatto che il posto statale non e’ piu’ cosi’ semplice da avere, e la grande tetta non potra’ crescere all’infinito.

Insomma, milioni di persone non sanno fare un cazzo. Sanno pero’ vivere nella propria casa, dunque sanno cucinarsi un pranzo. Diciamo che sanno fare un piatto di spaghetti col pomodoro, le uova sode e le patate lesse. Forti di questa conoscenza, siccome sui giornali si legge che il settore del catering e’ in crescita, tutti loro si buttino sul catering, proponendosi come cuochi.

Cosi’, il mercato si riempie di milioni di persone che cucinano spaghetti al pomodoro, uova sode e patate lesse. Decine di giornali parlano di cucina, e insegnano gli ultimi dieci trucchi per cucinare spaghetti al pomodoro, fanno articoli sulla nuova pentola speciale per le uova sode, e sul nuovo termometro capace di tenere la bollitura ideale per le uova stesse. Per non parlare dei nuovi densimetri per le patate lesse.

Insomma, in pochi anni si crea l’idea che la cucina consista nel cucinare spaghetti al pomodoro, uova sode, patate lesse. Finche’ in un ristorante entra un tizio e dice “vorrei una pasta alla carbonara”. E la risposta che gli viene data e’ “e’ una cosa di nicchia”. Allora il nostro uomo chiede una minestra in brodo, e ancora gli si dice “e’ una cosa di nicchia”.

Insomma, quando un mercato viene inquinato da pseudoprofessionalita’ , le quali si sostengono mediante il numero (se tutti fanno spaghetti al pomodoro, uova sode e patate lesse, questa e’ la cucina. ), cio’ che ne risulta e’ che tutto il resto diventa nicchia.

Non importa se la “nicchia” indica “tutto il resto della cucina del mondo”: se “tutti” fanno solo spaghetti al pomodoro, uova sode e patate lesse, allora quella e’ la cucina. E il resto (qualche milione di altre ricette) e’ “nicchia”. Tutto e’ “nicchia”, perche’ altrimenti bisognerebbe ammettere che , se quella e’ cucina, chi sa fare solo spaghetti al pomodoro , uova sode e patate lesse NON E’ UN CUOCO.

Lo stesso e’ capitato con l’informatica. Ad un certo punto un certo numero di persone che non sapeva fare un cazzo ha deciso di riciclarsi in questo mondo. Dalla loro parte avevano l’equivalente della pasta col pomodoro, le uova sode e le patate lesse. Sapevano formattare un PC, sapevano installarci un sistema operativo ad uso domestico e sapevano farci due o tre cose in piu’ rispetto all’utente medio.

Questa gigantesca massa di persone ha creato un’editoria ad hoc che non fa altro che spiegare loro come si fanno le due o tre cose che loro sanno fare, in diecimila salse diverse. Ovviamente, c’e’ tutto il resto dell’informatica.

Ci sono i sistemi industriali, una “nicchia” che manda avanti TUTTE le fabbriche del mondo. Ogni cosa che avete di fronte viene quasi sempre da un’industria, e questa industria fa uso di sistemi di controllo industriali, che vengono programmati e costruiti. Cosi’ come c’e’ la “nicchia” del Gas&Oil, che produce “solo” tutto la benzina, i fertilizzanti, il cemento chimico che usate. Allo stesso modo esiste il mondo della simulazione numerica, che viene usata per simulare gran parte dei processi troppo costosi da prototipare. Si tratta di “nicchie” che non sono “nicchie”, perche’ di fatto costituiscono la maggior parte dell’informatica: perche’ i nostri non lo sanno?

Non lo sanno perche’ essenzialmente lavorano solo con persone ed aziende cui basta cio’ che sanno fare, esattamente come i nostri cuochi dell’esempio prima cucinano spaghetti al pomodoro, uova sode e patate lesse a persone che di fatto non hanno grandissime esigenze nel campo del gusto.

Ma c’e’ un altro problema: che si ttratta di settori ove fanno sul serio. Anni fa mi capito’ di lavorare in un progetto con una nota azienda chimica. Nessuno metteva in dubbio le mie capacita’, ma il cliente pretese la supervisione di un ingegnere con quindici anni di esperienza. Come mai? Eh, perche’ se il cluster di cui parlavo si fosse fermato, un impianto andava demolito e ricostruito da zero.

Quando facevo pre-sales nel mondo del supercalcolo, mi toccava di avere conversazioni di questo genere:

  • Cliente: noi siamo chimici-fisici, facciamo calcolo di traiettorie ed altre piccole simulazioni su molecole piccole ma “strane”. Sa, tutti si concentrano sulle grandi molecole, ma su quelle piccole c’e’ ancora molto da sapere.
  • Uriel: uhm. interessante: usate delle hermitiane, o altro?
  • C: in genere usiamo le librerie scientifiche taldeitali.
  • Uriel: quanto “in genere”?
  • C: beh, la dottoressa taldeitali preferisce usare hermitiane.

Qual’era la differenza, e perche’ tutte queste domande? Perche’ in un caso i signori avevano bisogno di storage in abbondanza, mentre nell’altro avevano bisogno di CPU. Mi capitavano anche dei discorsi del genere:

  • Cliente: il nostro problema e’ di avere una vasca cubica larga circa mezzo metro con due liquidi di densita’ diversa, uno sottostante l’altro. La vasca viene colpita da un oggetto a Mach 5, e vogliamo calcolare il comportamento della superficie di separazione tra i due liquidi, con una risoluzione di 10-E04, diciamo i dodici millisecondi dopo l’impatto.
  • Uriel: in quanto tempo volete eseguire questo calcolo?
  • Cliente: abbiamo circa venti giorni per ogni simulazione.
  • Uriel: provo a farmi un’idea della complessita’, e vediamo quante cpu servono.

Il problema era che , a conti fatti, stiamo parlando di una roba alle differenze finite che in definitiva costa circa 300 TFLOP. La versione precedente del problema, che comprendeva un proiettile a Mach3, ne costava circa 120. Qual’e’ il problema? Ancora una volta, che bisogna avere un’idea di cosa stiamo facendo, oppure si vende il sistema sbagliato.

In definitiva, esistono tantissimi campi molto verticali, nel settore industriale. Cosi’ come nel campo dell’informatica medica, e del biomedicale. Ed in qualsiasi altro campo dell’applicazione industriale.

Alcuni miei colleghi che lavorano nel campo del finance si trovano ad implementare algebra lineare come se piovesse. Anche in quei casi, viene chiesta loro una determinata simulazione, e questa simulazione deve rappresentare il concetto che viene richiesto di analizzare. Anche in questo caso, occorre una competenza tecnica specifica nel campo della finanza per sapere di cosa si stia parlando, altrimenti si finira’ con lo scrivere algoritmi inconsistenti.

Morale della storia: esiste un sacco di informatica, spesso molto ben pagata, che va oltre le solite due o tra cazzate che il tecnico di provenienza domestica sa fare. E non e’ affatto un settore “di nicchia”, sono semplicemente settori per i quali occorrono competenze. Gia’, quelle competenze che il nostro eroe dell’informatica domestica ha sempre evitato, perche’ bisognava studiare troppo.

Sfortunatamente si tratta di campi nei quali non esiste nulla di intuitivo: una persona che decida di buttarsi su SAP R3 sa fin dall’inizio che non ci sara’ NULLA che possa aiutarlo, nulla di intuitivo, nulla che gli possa permettere di improvvisare. D’altro canto, poiche’ i corsi di SAP “costicchiano”, chi li supera raramente rimane senza lavoro, e specialmente raramente viene pagato poco. Il guaio e’ che bisogna studiare, e parecchio: uno dei corsi piu’ duri che ho fatto parlava si SAN (Storage Area Network) ed era di IBM. Quanto ho dovuto studiare , fa ancora parte dei miei incubi. Anche perche’ il corso lo avrei dovuto pagare anche nel caso mi bocciassero.

Ovviamente il nostro informatico domestico mi rispondera’ “si’, ma chi ha bisogno di hexabyte di spazio? E’ tutta roba di nicchia.” VCerto. Una nicchia che comprente quasi tutte le grandi corporate, con un fatturato complessivo grande svariate volte il PIL italiano, e buona parte delle imprese di media dimensione e degli enti governativi. E di lavoro, se siete certificati, ne trovate: certo, dovete firmare dei contrattini ove promettete che il cliente non perdera’ MAI dei dati.

Lo stesso dicasi dei mainframe. Se ne usano pochi: sono “solo” tutte le banche e le assicurazioni del mondo, quasi tutti gli enti governativi occidentali, quasi tutte le grandi industrie e tutte le corporate. Cosa volete che sia, e’ una “nicchia”.

Morale della storia: esiste la tendenza a chiamare “nicchia” dei settori sufficientemente grandi da sfamare intere nazioni occidentali. Essi vengono chiamati “nicchia” perche’ le competenze richieste superano quell’informatico domestico che pretende l’informatica occuparsi solo di quel che fa il PC di casa, o al massimo quello della segretaria. Queste “nicchie”, pero’, sono molto ben pagate, danno molto lavoro, e specialmente sono molto, molto grandi. La pura e semplice verita’ e’ che spesso chi le chiama “nicchie” ne e’ escluso perche’ manca di competenze. Tutto qui.

Secondo problema. Il lavoro dell’informatico.

Sebbene possa sembrare strano, il lavoro dell’informatico e’ essenzialmente un lavoro di verbalizzazione, dunque un lavoro nel quale la parte del cervello normalmente dedicata al linguaggio lavora molto. Il problema e’ capire che cosa, esattamente, fa l’informatico. Prendiamo un esempio molto “operational”.

Prendiamo un concetto espresso in maniera euristica: voglio cancellare tutto cio’ che non uso da piu’ di un mese.

Dunque, dobbiamo iniziare a fare due conticini e pensare alla cosa in maniera logica.

  1. Devo trovare i file che non sono piu’ acceduti da piu’ di un mese.
  2. Su questi file devo operare una cancellazione.

A questo punto, su unix diro’ qualcosa come

find /path -type f  -atime  +30 -user “ME”  -exec rm -f {} ;

In generale, nel fare questo, sto semplicemente facendo un lavoro di verbalizzazione: find /path dice “DOVE” devo cercare , “-type f ” dice che sto cercando files, e non cartelle o altro, -atime +30 dice che voglio files acceduti da piu’ di 30 giorni, -user che intendo agire solo sui file d un certo utente, e il resto dice che ci devo applicare una cancellazione brutale.

Di per se’ non ho fatto altro che verbalizzare una richiesta in una lingua che potrei chiamare “posix 1.003″ , e di fatto devo farlo per poter dare alla macchina un ordine. Poiche’ tutto il lavoro dell’informatica consiste nell’ottenere macchine che fanno quanto desideriamo, tutto il lavoro e’, fino alla complessita’ massima, sempre un lavoro di verbalizzazione ; semplicemente avremo grammatiche sempre piu’ complesse, quando non addirittura delle metagrammatiche (come capita con i descrittori di semantica, xml & co) . Se poi andiamo all’architettura, dovremo chiederci per prima cosa come mettere insieme dei sistemi che siano capaci di capire e di eseguire alcuni ordini. Se il mio ordine dice di fare qualcosa sulla rete, quello che mi serve magari e’ un firewall o un router, e quando dovro’ tradurre la funzione che ho in mente non faro’ altro che verbalizzarla nel linguaggio di quel dispositivo.

In definitiva, quindi, si tratta ancora di scegliere linguaggi e poi verbalizzare in quei linguaggi.

Il fatto che si tratti di un lavoro di verbalizzazione fa si che esso sia strettamente legato alla scrittura: se fate caso al comando di prima, ogni singolo simbolo di quel comando e’ necessario a fare cio’ che voglio: qualsiasi parte io rimuova, otterro’ cose molto diverse.

Quanto questa tendenza a verbalizzare con precisione le cose diventa una deformazione professionale, diventa difficile parlare con noi informatici. Innanzitutto, non sopportiamo i riassunti. I casi sono due: o esiste un comando piu’ breve per fare quella cosa li’, e nel nostro caso il nostro comando e’  ridondante, oppure non esiste il concetto di “riassunto”: qualsiasi simbolo io tolga al comando, ho detto una cosa diversa. Quando un informatico parla, la cosa peggiore che possiate fargli e’ di riassumere o togliere delle parole al suo discorso: lui ha parlato con la precisa intenzione di rappresentare esattamente il suo pensiero; togliendo dei pezzi state dicendo qualcosa d’altro, e anche esprimendolo con parole diverse state dicendo qualcosa d’altro.

In definitiva, quindi, quando si costruisce qualcosa in questo mondo non si fa altro che “verbalizzare con esattezza una richiesta che viene espressa in linguaggio umano, e verbalizzarla in un linguaggio che un singolo dispositivo (o un insieme ) capiscano”. E se siete architetti, anche scegliere i linguaggi e i dispositivi.

Tutto questo, ovviamente, ha poco a che fare con il concetto di “facile” cosi’ come viene associato da molti utenti alle interfacce grafiche. Quando il classico utente bleso mi dice “sulla mia meravigliosa piattaforma faccio click-click e fa la stessa cosa”, la mia risposta e’ che  cosi’ facendo non hai conoscenza del backend. Ma il problema e’ che ti sei perso la gran parte del lavoro dell’informatica, ovvero capire la macchina. Del resto, la produttivita’ di un sistemista Unix che scrive programmi shell e’ ancora imbattuta presso i professionisti del clicco “facile”: la possibilita’ di verbalizzare e’ per forza di cose superiore alla semplice attivita’ manuale di cliccare su un simboletto geroglifico. Non si sta usando una delle funzioni piu’ elevate dell’intelletto, ovvero la verbalizzazione: la scimmia vuole la banana e allunga la mano, punto.

Questa e’ la ragione per cui mi viene da ridere quando il solito fanatico di apple mi dice che lui “ha UNIX”. Si’, avrai Unix, ma compri un bel sistema di backup, quando avevi gia’ find e tar e potevi scriverti il tuo bel “timemachine” in una ventina di righe di shell script. Ma per l’utente apple usare find e tar non e’ nemmeno fattibile: egli si vantera’ di avere uno unix, peccato che del sottosistema posix non sfrutti una cippazza di nulla, perche’ scrivere un comando lo costringerebbe a verbalizzare le richieste che ha da fare alla macchina, e questo va oltre le sue capacita’ mentali.

Nel “semplificare” l’usabilita’ della macchina si sta evitando all’utente la fatica di verbalizzare i propri comandi definendo con efficacia quello che si desidera. Il risultato e’ un utente per forza di cose “stupido”: qualsiasi scimmia sa allungare la mano verso l’immagine della cosa che desidera, ottenendo un risultato forfettariamente simile a quello che voleva. A patto di non avere richieste precise e complesse nello stesso momento.

Ed e’ per questo che apple si concentra sul design minimal: non puo’ andare oltre perche’ se tentasse di dare funzionalita’ complesse l’interfaccia grafica costringerebbe l’utente a verbalizzare con esattezza le richieste : cosi’ il design minimal non fa altro che ridurre la complessita’ delle richieste. Ma questo produce , nei fatti, un instupidimento del cliente. Instupidimento, ovviamente, in termini informatici.

E la cosa non e’ cosi’ assurda come sembra: ai suoi negozi apple riserva la sontuosa percentuale del 5% del margine sulle vendite di materiale Apple. Se contiamo che l’assistenza tecnica viene fatta da appositi centri (a Bologna c’era ZeroUno, se non ricordo male), potete capire di cosa vivano i negozi apple: di assistenza software.

Questo, da solo, basterebbe a sfatare la leggenda secondo la quale MacOSX si guasterebbe meno o avrebbe bisogno di minor manutenzione: per via delle politiche commerciali della casa madre, infatti, i negozi apple possono vivere solo perche’ la quantita’ di assistenza sul software (recupero dati, reinstallazione del sistema, riconfigurazioni varie) e’ enorme. Nel mondo Windows, un helpdesk NON puo’ piu’ vivere senza fare anche vendita, nel mondo Apple e’ il contrario, e molti negozi si limitano ad ordinare online i prodotti per i clienti, perche’ guadagnano proprio di installazioni e riparazioni. Ma il fatto che il negozio viva di installazione e di riparazione testimonia proprio il fatto che MacOSx  non sia ne’ cosi’ facile da installare ne’ cosi’ facile da manutenere.

La maggior parte del mondo Apple vive di pregiudizi nei confronti di windows: a parte il fatto che durante il periodaccio di windows loro avevano System7, che andava in bomba col segnale -11 molto piu’ di windows , dopo l’ introduzione di Windows XP al pubblico sulla stabilita’ dovremmo discutere, visto che quei begli schermi grigi con al centro un rettangolo grafite che ti parla in cinese e inglese non e’ che sia una novita’.

Il fatto che l’ utente apple sia tenuto in uno stato di NON-competenza si nota proprio dalle leggende che attribuisce al proprio sistema. Essi hanno gridato alla novita’ mentre Jobs sbolognava loro (e continua a farlo) delle “innovazioni” che venivano da un suo progetto FALLITO negli anni ‘90, che era NeXTStep. Il dock, il prezioso file browser, tutti i begli effetti che sembrano “nuovi”, sono presi da un progetto che ha 20 anni. Perche’ loro non lo sanno? Perche’ essendo gente che ama l’interfaccia grafica, non sono degli informatici in senso fine del termine: sono solo degli utenti, e come tale la loro cultura informatica scarseggia.

Quando mi dicono che Apple si basa su Unix, e che ha “il kernel di freebsd”, per esempio, omettono semplicemente di dire che non sanno fare con quel kernel niente di niente. Certo, quel kernel potrebbe usare IPFW, ma nessun utente medio usa altro che la patetica interfaccia per il firewall che permette di scegliere tre o quattro opzioni in croce, non fa traffic shaping, bridging e altro.(1)

Quando mi dicono che loro , sotto, hanno uno UNIX completo (intendendo dire che hanno quasi tutti i comandi Posix) , stanno dicendo che IO lo saprei usare, perche’ ho imparato su macchine NON Apple: loro, che sono stati educati alla “semplicita” che si legge “stupidita”, non lo sanno usare.

Ma ammettiamo pure che abbiare sotto un kernel “di FreeBSD” , faccio presente che quel kernel permette di fare snapshotting del filesystem usando lo spazio non utilizzato. Mi si dica quale utente Apple sta usando questa feature del “prezioso kernel di FreeBSD” che pretende di usare. Cosi’ come il kernel di FreeBSD supporta in pieno SCTP/IP: qualche utente apple, per favore, mi spieghi come lo sta usando. Non esiste neanche uno straccio di interfaccia per configurarlo, ammesso che Darwin sia il kernel di FreeBSD, cosa che NON e’ perche’ si tratta di un Mach , quello stesso Mach che Jobs usava nel suo fallimentare progetto NeXT.E cosi’, per semplice mancanza di cultura informatica, gli utenti apple stanno comprando pezzi di un progetto fallito di quasi vent’anni fa, dipingendolo come una novita’ assoluta, e appare loro nuovo perche’ sono dei semplici utenti. Per costituzione mentale essi non sono adatti all’informatica, perche’ rifiutano di verbalizzare in una sintassi scritta le cose che vogliono fare.

Ripeto: l’utente apple e’, appunto, un semplice utente. La sua mentalita’ e’ l’opposto rispetto alla mentalita’ dell’informatico, dal momento che essi rifiutano di verbalizzare con esattezza i comandi che intendono impartire alla macchina. Apple lucra su questo, vendendo un “timemachine” in un sistema che ha gia’ tar, ha gia’ cron e ha gia’ find, e addirittura potrebbe fare snapshot del disco (se fosse davvero un kernel moderno di freebsd, intendo(2)) e vendendo “applescript” su un sistema che ha sia bash, ksh che perl!

Essi stanno vendendo un sottosistema unix a gente che non lo usa, che non lo sa usare e che per formazione non lo sapra’ mai usare. Gli stanno propinando per novita’ i rimasugli di un sistema , NexT, che ha fallito 20 anni fa, e in generale si tratta di features che il progetto GNUStep aveva gia’ portato su Linux. Il kernel che stanno vendendo, per motivi di licenza di UNIX; e’ ancora il vecchio Mach, con alcune ottimizzazioni prese da FreeBSD 3.1 , i quale  non brilla di performance come Mach, e non brilla di modernita’ come FreeBSD 3.1. Quasi tutte le features fornite da questo sistema sono ignote all’utente, che si vanta di possedere qualcosa che non usa, in un inutile e pacchiano sfoggio di velleita’ inutili.

MACOSx potrebbe essere un ottimo sistema se finisse in mano ad utenti capaci di usarlo, e alcuni miei colleghi sistemisti ne fanno un uso appropriato, ed in effetti lo sfruttano per quel che e’. Ma in mano all’utente Apple, di tutte le presunte feature di MacOSX non resta nulla, per la semplice ragione che l’utente Apple ha bisogno di un’interfaccina grafica per sapere se si trova in rete; incapace di digitare un ifconfig, ne’ di leggerlo : non si capisce allora perche’ darglielo.

Ma specialmente, non si capisce perche’ vantarsi di averlo.

Uriel

(1) Sotto FreeBSD bisogna ricompilare il kernel per fare questo. Vorrei conoscere un utente apple che abbia mai ricompilato dai sorgenti il kernel Darwin, per favore. E che non si chiami Jobs di cognome.

(2) Le feature di FreeBSD a livello di comunicazione interprocesso e di virtual machine sono prese da freeBSD 3.1. Se considerate che siamo alla versione 7, e che la versione 3.1 risale a 6 anni fa, capite quanto sia “moderno”.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *