steve's

Oltre il giardino. Del codice.

Ott
29

Presidente: Lei è d’accordo con Ben? Pensa che possiamo stimolare la crescita con incentivi temporanei?
Chance: Fintanto che le radici non sono recise, va tutto bene, e andrà tutto bene, nel giardino.

Il surreale film del 1979 “Being there” (in Italiano “Oltre il giardino”) interpretato, come si dice, magistralmente da Peter Sellers è troppo noto per doverne fare un riassunto. Il film parla della volontà di trovare modelli a tutti i costi, del ruolo della televisione, del vuoto di valori e di altro.
Ma a me piace soprattutto la metafora del giardino. O meglio, quella che tutti – tranne Chance Gardiner – interpretano come una metafora dello Stato e della sua cura.

Qui da me tutti hanno un casa col giardino. Però il rapporto col giardino (e anzi con la natura in generale) è molto diversificato. Almeno tre categorie sono facilmente riconoscibili:
1. estetica: prato inglese, statue, alberi di rappresentanza (magnolia)
2. funzionale: orto + frutteto, niente verde inutile
3. negazionista: cemento e muri; poi eventualmente vasi
Solo che io non mi ritrovo in nessuna di queste categorie. E si vede dal fatto che tutti quelli che passano guardano, scuotono la testa e mi dicono gentilmente: “Ma ti serve aiuto per tagliare tutta questa boscaglia?” La boscaglia in questione sarebbe il mio giardino. Che è fatto di tante piante diverse, ognuna con una storia, una curiosità, un modo di crescere e di lottare con le altre, una personalità, uno stile. Ci sono tracce di piante precedenti, promesse di piante future. Alcune le ho portate io da lontano, altre me le hanno regalate, altre sono nate da sole. Piante che mi ricordano persone, luoghi, momenti.

Qualche tempo fa mi sono accorto che anche per il rapporto con il digitale valgono più o meno le stesse categorie di sopra: chi lo vede come un accessorio di moda, chi come un utile strumento, chi fa finta che non esista. Non c’è possibilità di dialogo tra queste visioni così diverse, e ognuno guarda il giardino dell’altro con disprezzo nemmeno troppo celato.
Poi c’è chi il giardino non lo vuole per niente, ma è felice di visitare quello degli altri. Più in generale, si potrebbe dire che ci sono i nomadi-cacciatori-raccoglitori, che navigano e prendono quello che gli serve, e gli stanziali-allevatori-coltivatori, che circoscrivono uno spazio e ne controllano lo sviluppo. I primi hanno uno sguardo, come dire?, grandangolare; i secondi montano un macro. Oppure: lo sguardo dei nomadi percepisce le differenze, quello dei coltivatori le crea (un po’ come lo sguardo di Ciclope, avete presente?).
All’interno di questa metafora, programmare è coltivare alberi digitali. I programmi, come gli alberi, sono organismi che se va tutto bene crescono, si sviluppano. Hanno una vita propria (ebbene si) e a volte non fanno quello che uno si immaginava che facessero. Restano piccoli, o esplodono all’improvviso; intrecciano le radici con altri alberi, sfruttano lo stesso terreno, si fanno ombra tra loro. Gli alberi, come i programmi, anche quando muoiono vengono riusati per fare altro, da noi o da altri organismi. Si riproducono con i semi, o, al limite, diventano humus per altri alberi.
Nella coltivazione dei programmi non si parte dal nulla: infatti gli alberi non si seminano, si piantano alberelli giovani (e si, c’è la questione dell’opensource…). O meglio, veramente qualcuno molto bravo e un po’ presuntuoso lo fa, ma è difficile e lungo scriversi tutto da zero; più facile utilizzare librerie, interpreti e compilatori.
I programmi si potano: si tolgono rami secchi, o si indirizza lo sviluppo in una certa direzione, per avere una certa forma finale o per avere un certo quantitativo di frutti. Si innestano con rami di altre specie perché la struttura deve essere robusta e resistente. Si curano le malattie, si eliminano i parassiti (i bug…).

Non è facile coltivare un albero. La difficoltà più grande non è la tecnica spicciola (tagliare, zappare intorno alle radici) ma la visione d’insieme. Per esempio io ho piantato un acero troppo vicino alla casa e troppo vicino ad un giovane castagno. Per i primi quattro cinque anni, l’acero è restato più o meno uguale. Poi improvvisamente ha cominciato a crescere. Il risultato è che il castagno, che è più lento, è cresciuto storto cercando sole e aria, e l’acero fa ombra ai pannelli solari sul tetto. Ma quando ho piantato il giovane acero era alto quaranta centimetri, me l’ero riportato da una passeggiata nello zaino. Ora sarà alto quindici metri e non accenna a fermarsi. Non ho saputo “vederlo” da grande, nel contesto dello sviluppo del resto del giardino. Gli esperti me l’avrebbero detto subito: non lì. Oppure dovevo tagliargli la cima dopo due-tre anni per farlo allargare più in basso.
La progettazione e lo sviluppo di un software ha le stesse difficoltà. Bisogna impostare la struttura in modo che sia solida e resistente, scegliendo il linguaggio o il framework adeguato, andando a vedere cosa hanno fatto gli altri nei loro giardini. Poi bisogna sapere vedere in avanti, immaginarlo crescere, decidere da che parte piegarlo, tagliare delle aree morte o che daranno fastidio ad altri software. E durante tutta la sua vita bisogna tenerlo pulito dai bug, controllare che non ci siano vermi che ne rodono il tronco, parassiti che inseriscono uova che esploderanno più avanti.

A che serve coltivare alberi? Beh, dipende. Alcuni sono belli, altri fanno ombra, altri portano frutti o legna.
A chi va insegnato a coltivare alberi? In linea di principio, a tutti; come tutti, secondo me, dovrebbero saper scrivere un racconto, disegnare o suonare uno strumento. Perché è fonte di un piacere immenso – quello di vedere un organismo crescere – e perché permette di condividerlo con gli altri.
Bisogna essere professionisti, avere un giardino perfetto? No, non tutti. Basta anche un limone sul terrazzino. Ma essere in grado di apprezzare un albero quando lo si vede, quello si; e non solo “uh quant’è bello”, ma saper vedere attraverso e indietro, cos’è, da dove viene, come è cresciuto, come crescerà.

E la programmazione? Anche quella va insegnata a tutti i bambini? Qui bisogna stare attenti a quello che si scrive, e siccome ne ho scritto pure troppo altrove, passo. Qui mi accontento della metafora, che è utile quando fa riflettere da un punto di vista nuovo e suggerisce idee.

Però anche in questo caso mi ritrovo (spesso) ad essere l’unico appassionato dalla boscaglia digitale e a partecipare amorevolmente a tutta la complessità dei suoi organismi, piantando qui, potando là, e poi godendomi il risultato. Non lo faccio (più) in maniera quotidiana, nel senso che intervengo solo marginalmente nelle scrittura di codice sorgente, che scrive chi è molto più bravo di me. Mi appunto ancora delle idee, o ripesco degli schemi di anni fa in attesa del momento in cui ci sarà tempo e risorse per applicarli. Vado in giro a curiosare per i vivai e riporto qualcosa a casa; oppure immagino giardini che poi altri dovranno coltivare.

Chi passa mi dice ancora: ma vuoi una mano per cancellare tutto questo pasticcio? Ma non era meglio fare il rivenditore di Moodle?

Comments

Comments are closed.