0x00 – Esadecimale

Un progetto nato dall'idea di esplorare cosa significa imparare l'informatica.


0x01 – Introduzione

La tecnologia sta avanzando.

Sotto molti aspetti, questa è una buona notizia. Tutto però in questo mondo ha un costo, anche le cose belle. Il costo di questa buona notizia è che, in questo avanzamento, per una serie di concause, la tecnologia sta diventando sempre più lontana e complessa da capire.

Sono due i punti di vista che possiamo avere quando pensiamo ad una tecnologia:

Per rendere resilienti al tempo le conoscenze codificate in una tecnologia è dunque necessario proteggere entrambi i punti di vista. Il problema nasce quando si considera che nel contesto delle tecnologie digitali, a causa di ragioni economiche, culturali e di mera complessità del software, si è molto disincentivati dall’imparare come si costruisce, partendo da poco, del buon software.

Si incentiva invece l’utilizzo di linguaggi, librerie, framework, e più in generale di astrazioni di alto livello che nascondono tanti dettagli implementativi per favorire uno sviluppo più veloce. Non importa dove impariamo. Non importa chi ci insegna. Sia all'università che nei bootcamp che nel lavoro, la storia è sempre la stessa: non si impara quasi mai, fino in findo, come si costruisce il digitale. Ci si limita solo nell'utilizzarlo, e, al massimo, nel descriverlo.

Capire il perché di tutto ciò non è difficile: la mente umana è profondamente attratta dalle astrazioni. La costruzione di una tecnologia è un processo molto difficile e frustrante che richiede tanto tempo ed impegno. Le astrazioni sono viste dalla mente come strumenti per liberarsi da tutta questa frustrazione e difficoltà. Risulta molto più comodo limitarsi ad imparare come utilizzare una tecnologia, piuttosto che imparare come costruirla, i principi su cui si basa, e perché deve essere costruita in un certo modo e non in un altro. La mente umana è pigra e vuole risparmiare energie.

L'ignoranza in campo informatico è comprensibile ed accettabile quando lavoriamo in un campo che non è direttamente collegato con l'informatica. Se siamo dei medici, degli avvocati, degli psicoterapeuti, e via dicendo, è più che giusto limitarsi ad utilizzare la tecnologia, senza investigare il suo funzionamento interno. Il problema si manifesta invece quando sono proprio le persone che si definiscono informatici, che insegnano l'informatica, e che in generale lavorano nel campo informatico, a limitarsi al solo utilizzo della tecnologia. Questo fenomeno provoca un corto-circuito pericoloso.

C'è una frase che gira molto nei contesti informatici e che riassume questo spirito.

"Non c'é bisogno di re-inventare la ruota"

Il problema è che la didattica dovrebbe proprio fare questo. Dovrebbe insegnare i principi che fanno funzionare le ruote, e dovrebbe fare vedere come costruire semplici ruote.

Cosa succede ad un campo complesso quale quello informatico, quando il sistema educativo non riesce più a formare dei "veri esperti" del settore?

Questo progetto nasce con l'intenzione di muoversi in una direzione opposta a questo movimento inerziale, per cercare di dare più strumenti a coloro interessati a capire queste cose e non perdere la possibilità di decidere in modo consapevole sul futuro della tecnologia. Nello specifico, questo progetto nasce con l'intenzione di costruire tante ruote. Le ruote più importanti, quelle che hanno permesso all'informatica di avanzare così velocemente.


0x02 – Il Progetto

L'obiettivo del progetto consiste nel capire in profondità le cose del dominio digitale ed informatico, e dunque in particolare le principali idee che formano la teoria matematica dell'informatica, assieme alla pratica, artigianale ed ingegneristica, della costruzione di buon software.

L'interesse finale non è verso la costruzione di un prodotto da vendere, o di un servizio da erogare. Non ci sono né scadenze e né obiettivi facilmente formalizzabili. L'obiettivo finale è la comprensione totale del concetto stesso di tecnologia. Un obiettivo chiaramente idealistico, che non potrà mai essere raggiunto del tutto, ma che rappresenta un utile punto di riferimento a cui tendere.

L’approccio scelto vuole sviluppare la nostra abilità di interagire con le astrazioni e le tecnologie da entrambi i punti di vista:

La filosofia sottostante si basa su una semplice idea: per capire veramente una astrazione, ed il ruolo che ha nella costruzione di una particolare tecnologia, dobbiamo imparare sia come utilizzarla che, soprattutto, come costruirla. Anche quando non è facile. Anzi, specialmente quando non è facile.

Questa strada, se seguita con autentico interesse, ha il vantaggio di aprire la mente a nuovi modi di relazionarsi con la tecnologia e dunque a nuovi modi di pensare.


0x03 – L'implementazione

Sono tante le modalità che possono essere scelte per portare avanti questo progetto. Per adesso, sto utilizzando il mezzo del video.

Il video ha tanti vantaggi. Permette di catturare un insieme di idee e processi di ragionamento complessi, superando la distanza fisica e temporale. Registrandomi mentre lavoro con una algoritmo oggi, spiegando come funziona, e facendo vedere come implementarlo in codice, permetto a tutti coloro interessati la possibilità di imparare, finché il video sarà disponibile, a prescindere dal luogo in cui si trovano, fisicamente e temporalmente. Queste caratteristiche si rivelano specialmente utili per imparare a scrivere software.

Sto inoltre utilizzando YouTube come piattaforma su cui caricare questi video. Ho due canali, uno completamente in italiano e uno completamente inglese:

Il materiale creato è pubblicato open-source sotto licenza MIT su GitHub nelle seguenti repositories:

Da notare che l'utilizzo di questi servizi di hosting gestiti da grandi società non è l'ideale per la sopravvivenza del progetto a lungo termine. Per adesso, è una scelta pragmatica che sta funzionando.

Rispetto alle tematiche, cerco di affrontare tutte quelle tematiche vicine ai sistemi digitali, che richiedono conoscenze molto approfondite e specifiche sul funzionamento della macchina. Gli argomenti principali che tratto sono:


0x04 – Il Futuro

Non è mia intenzione fare promesse troppo specifiche rispetto a cosa aspettarsi da questo progetto. Attualmente ho un lavoro full-time come consulente e trainer, e terminato il lavoro devo dedicare la mia attenzione a tante cose diverse di giorno in giorno. Devo anche considerare la mia salute e dedicare il giusto tempo al riposo.

Detto questo, nelle poche ore a mia disposizione utili per portare avanti questo progetto, sto lavorando alla creazione di materiale più strutturato per imparare l'essenza dell'informatica. L'obiettivo è quello di trovare il giusto equilibrio tra il potere dei modelli teorici e l'inevitabile importanza della pratica quotidiana.

Molto spesso infatti, nell'esplorazione di campi così vasti come il campo informatico, si è portati a studiare solo determinate aree. Chi va all'università si concentra di più sulla parte teoria matematica. Chi va a lavorare tende ad interagire solamente con un numero limitato di tecnologie, a seconda della particolare posizione e delle aspettative attuali del mercato, e dunque non è in grado di apprezzare mai il vero potenziale tecnologico e teorico offerto dall'informatica.

Nasce quindi il bisogno di creare qualcosa di nuovo. Qualcosa che prende spunto dai tanti modi diversi di approcciarsi all'informatica, al fine di unirli tra loro per sintetizzare una visione globale sulle fondamenta del pensiero informatico. Visione che può poi essere utilizzata per orientarsi meglio in questo campo.

Oltre alla creazione di contenuto più strutturato, sto inoltre organizzando la creazione di spazi digitali gestiti al di fuori del dominio delle grandi corporazioni, in modo da permettere un maggiore controllo e difesa sul contenuto creato. Aspetto fondamentale da considerare per garantire la propria indipendenza di espressione e condivisione di idee. Anche qui, il focus è duplice: la creazione di spazi digitali come esempio alternativo, e la creazione di materiale didattico che insegna come costruire e matenere tali spazi alternativi.

0x05 – Contatti

Se sei interessato al mio progetto, mi puoi scrivere la tua email qui sotto. La utilizzerò solo ed esclusivamente per comunicare aggiornamenti ed informazioni rispetto allo stato di avanzamento del progetto esadecimale.


Per terminare, una lista di link utili per conoscere meglio il mio lavoro: