La confessione di uno specialista con fondamenta CS fragili
Quando andavo all’universita, pensavo di essere piuttosto bravo. Senza nemmeno rendermi conto di quanto fossero importanti i fondamenti di informatica, ero solo ossessionato dal prendere buoni voti.
A modo mio seguivo seriamente anche i corsi di indirizzo, e avevo persino vinto gare di programmazione interne e concorsi di capstone design. Quando i miei compagni si bloccavano per errori di codice, davo consigli da bordo campo sentendomi superiore. Ma a dirla tutta, quello che costruivo allora era roba da dilettanti.
Collegare un vero database (DB) mi sembrava troppo difficile, cosi salvavo i dati in file di testo (.txt) separati da virgole (,). E invece di usare un Raspberry Pi, che richiede controllo a livello di sistema operativo, ripiegavo su Arduino, che funziona con poche righe di codice. I professori elogiavano quei risultati che sembravano convincenti solo in superficie, e io mi illudevo che fossero la prova delle mie vere capacita.
Il colloquio superato a memoria: l’inizio della tragedia
Ma nel momento in cui mi sono buttato nel mercato del lavoro, quella sicurezza senza basi si e frantumata. Le candidature venivano respinte una dopo l’altra. Il titolo di un premio in una competizione non riusciva a nascondere quanto fossero fragili le mie fondamenta di informatica.
Piu cresceva l’ansia, piu mi fissavo con una conoscenza di facciata. Capire poteva aspettare: io memorizzavo risposte modello come una macchina, solo per superare i colloqui. Le “100 domande tecniche piu probabili” copiate dai blog erano diventate il mio libro di testo.
Quando il recruiter mi chiedeva “Qual e la differenza tra TCP e UDP?”, rispondevo come un distributore automatico. “TCP e orientato alla connessione e garantisce affidabilita, ma e piu lento; UDP e senza connessione, piu veloce, ma meno affidabile.”
In realta non sapevo affatto cosa fosse un pacchetto, ne come avvenisse davvero il 3-way handshaking. Eppure, in modo ironico, proprio quella memoria meccanica mi permise di ingannare i colloquiatori, ottenere buoni punteggi e trovare lavoro. Pensavo fosse fortuna. Non immaginavo che fosse l’inizio della tragedia in cui avrei pagato in una volta sola i debiti accumulati in quattro anni.

Sopravvivere da full stack in un piccolo team
Il posto in cui sono entrato era un team di piccole dimensioni. Li non esistevano divisioni rassicuranti come “frontend” o “backend”.
Dal primo giorno mi sono trovato davanti a uno stack tecnologico che arrivava addosso come uno tsunami. Pensavo che sarebbe bastato cavarmela bene o con Java o con JavaScript. La realta, invece, era lo schermo nero del terminale Linux via SSH, container Docker di cui non capivo la natura, pipeline GitLab CI/CD, e poi Spring Boot, Vue.js, Redis… Le tecnologie che da studente avevo rimandato con un “lo imparero dopo” o liquidato con un “posso farne a meno” hanno iniziato ad assediarmi da ogni lato.
Quelle nozioni snocciolate al colloquio non servivano a nulla nel lavoro reale. O meglio, per essere precisi, non sapevo come applicarle. Per capire perche il container Docker che avviavo continuasse a morire (OOM), o perche Redis si mangiasse la memoria, avevo bisogno proprio di quelle conoscenze di fondamenti di informatica che avevo imparato a memoria per i colloqui.
Un castello costruito sulla sabbia
Alla fine ero diventato uno sviluppatore che copia e incolla codice a caso (Ctrl+C, V). In qualche modo le funzionalita giravano, ma io non avevo idea del perche.
Non conoscendo i principi nascosti dietro la comodita offerta dai framework, non avevo alcuna capacita di risolvere i problemi quando qualcosa andava storto. Stavo costruendo un castello traballante con framework scintillanti su un terreno reso instabile da fondamenti di informatica fragili.

Re: Booting, tornare al punto di partenza
Per questo ho deciso di tornare davvero all’inizio. In quel momento mi sembrava piu urgente rispondere alla domanda fondamentale “come fa esattamente il computer a capire ed eseguire il mio codice?” piuttosto che aggiungere subito un altro portfolio luccicante.
Questo blog e il resoconto spietato di uno specialista con solo un diploma che ricostruisce da zero i propri fondamenti di informatica. Non mi limitero a elencare comandi Linux o guide di installazione di Docker. Voglio invece raccogliere il processo con cui mi pongo domande come queste e provo a trovare una risposta.

Oltre localhost
L’obiettivo finale e costruire e controllare con le mie mani Linux, Docker, CI/CD e perfino l’ambiente cloud. Voglio uscire dalla serra sicura chiamata localhost e diventare un ingegnere capace di sopravvivere anche in un ambiente server duro e selvatico.
A chi, come il me del passato, dice “l’ho studiato all’universita, ma non me lo ricordo”, spero che questo percorso possa diventare un piccolo punto di riferimento capace di far scattare quel momento in cui si esclama: “Ah, quindi e questo che il professore intendeva davvero!”