Lavoro nel mondo della consulenza informatica.

No, non sono uno sviluppatore. E non posso definirmi tale. Mi piacerebbe potermi definire uno sviluppatore, ma non sempre (o meglio, quasi mai) possiamo fare quello che vorremmo.

Mi sono sempre definito, peccando di presunzione, uno “sviluppatore web”. Questo fino a quando non ho iniziato ad avvicinarmi in modo approfondito alla programmazione a basso livello, iniziando a studiare dapprima RUST per circa un anno e, poi (e arriviamo ad oggi) C grazie al corso di @antirez.

Questa immersione nell’informatica e nella programmazione a basso livello, inframezzata dalla mia parentesi lavorativa giornaliera, ha causato delle crepe nelle mie sicurezze, prima come programmatore e poi come sognatore, come uomo.

Come nascono queste crepe e come si sviluppa questo pensiero

Questa insicurezza nel mio modo di vedere la programmazione e questo processo di autocritica iniziano quando più di un anno fa ho iniziato a imparare come si programma in RUST e sono proseguite quando ho deciso di iniziare a capire come funziona il linguaggio in C, grazie al corso di Salvatore Sanfilippo.

Ho potuto “verificare” con mano due aspetti:

  1. Confrontando le mie competenze con quelle di Salvatore, mi rendo conto subito di avere un bagaglio culturale veramente risicato rispetto al suo.
  2. Quando ho iniziato a seguire le sue lezioni, sin dalla prima intorno alla metà di maggio, ho iniziato a ripetermi ogni giorno che più il livello di un linguaggio di programmazione si alza meno lo sento “mio”.

Per quanto riguarda il primo punto, c’è poco da dire: Sanfilippo è uno dei migliori sviluppatori italiani (se non il migliore). Per il secondo punto invece, ogni giorno faccio una riflessione lavorativa, che porta sempre alle stesse domande:

  • fare lo sviluppatore web mi piace?
  • mi piace fare grafica?
  • mi piace ascoltare i clienti, con le loro richieste?
  • sto realizzando qualcosa che sia veramente specializzata e specializzante? Oppure è un continuo lavorare su CMS, fare fix CSS e accrocchi di ogni tipo?

Per tutte queste domande la risposta continua ad essere ogni giorno sempre e solo: “NO”.

Disclaimer: non sto dicendo di voler smettere di fare informatica e tantomeno di voler smettere di fare il programmatore.

Quello che però affronto ogni giorno nel mio lavoro ha sempre più a che fare con la semplice consulenza e sempre meno con lo sviluppo puro:

es. sposta questo div di 20px più giù, il testo degli h2 lo vorrei rosso… o ancora: il sistema invia le mail ma io non le ricevo, vorrei un alert quando clicco il pulsante x.

Personalmente, vedo questi lavori come particolarmente alienanti perché sento di non contribuire a nulla di “importante”.

Tradotto: faccio quello che migliaia di sviluppatori web fanno ogni giorno senza alcun beneficio concreto per la loro crescita culturale nel mondo dell’informatica e della programmazione. E vorrei crescere. Mi percepisco come stagnante a livello di apprendimento della programmazione e l’unico “stimolo” evolutivo che ho è la pratica esecrabile del framework hopping.

Quando voglio imparare qualcosa di nuovo (e credetemi ne sento il bisogno molto spesso) vado a provare qualche framework web per darmi giusto un po’ di frizzantezza in contrasto alle mie super monotone giornate di lavoro. Framework web basati (e ci risiamo!) o su PHP o su Python. Con tutto quello che ne consegue: sistema di templating aggiornato, sistema di iniezione dipendenze completamente diverso rispetto al framework precedente.

Risultato: parto con il boilerplate, ci smadonno un po’ su, verifico che quel framework NON è portabile sul mio flusso di lavoro e ritorno ad utilizzare e a prestare consulenza su:

  • Joomla;
  • Moodle;
  • Wordpress;
  • Drupal.

E il ciclo ricomincia da capo: tra una consulenza per un tag HTML non chiuso correttamente e un titolo da fare in un grassetto “un po’ più grassetto del grassetto di prima” continuo a fare il mio solito lavoro e soprattutto continuo a parlare con la gente.

C as exit strategy

Dopo aver iniziato il corso ho iniziato a vedere il C non solo come possibilità di apprendimento, ma come possibilità di uscita dal loop nel quale sono.

La sensazione molto positiva, intanto, è quella di poter imparare qualcosa di veramente sensato. Qualcosa che a distanza di 50 anni tiene in piedi il mondo informatico. Qualcosa di altamente specializzato. Qualcosa che sia basilare (inteso come alla base). Qualcosa che sia VERAMENTE programmazione, che sia veramente conoscenza. Perché quello con cui lavoro tutti i giorni non lo è. O perlomeno, se lo è, è comunque fugace, volatile, banale. È qualcosa che una buona AI potrebbe tranquillamente fare al posto di un umano con 0 competenze informatiche all’attivo.

C come spinta verso l’isolamento

Una seconda sensazione molto positiva sul C è la possibilità, una volta padroneggiato veramente (ma veramente!) bene, di giungere all’isolamento.

L’isolamento per come lo intendo io è: “Il poter lavorare su un progetto software senza le ingerenze (o banalmente le richieste) di un cliente non competente.”

Mi spiego: il C è talmente diverso dai linguaggi per il web, è talmente più in basso, che semplicemente non esiste qualcuno che sia un “commerciale” o un cliente che possa avere delle richieste da sottopormi. Perché il C è talmente vicino al linguaggio macchina che la stragrande maggioranza delle persone nel mondo non sa nemmeno che esiste o ancora peggio è convinta che i computer siano solo 0 e 1.

Il mio sogno è lavorare in C, lavorare a basso livello. Non essere costretto a sistemare una griglia CSS “perché il cliente ha detto che vuole la griglia a 3, invece che a 4 com’era la settimana scorsa.” Per me il lavoro vero è a basso livello. Sistemare una griglia CSS non è lavoro, è merda di cavallo.

Il C è l’unico modo per lavorare circondato solo ed esclusivamente di gente che ti può dare qualcosa.

Il C è l’unico modo per imparare ogni giorno.

Il C è l’unico modo per tagliare fuori tutti quelli che: “tanto ci metti 5 minuti”.

Il C è l’unico modo per creare veramente qualcosa, per essere parte del processo che porta alla creazione di un software.

Il C è l’unico che ti può garantire degli interlocutori che ti mettano davanti a dei problemi che sono veramente problemi da risolvere e non capricci del grafico di turno.

Poi, chiaro, non è tutto oro quello che luccica, ma perlomeno, nel processo di lavoro puoi affinare il processo di apprendimento di qualcosa di vero, importante e tangibile.

E io ho a malapena scalfito la superficie e spero di poter andare a fondo. Spero di poter, un giorno, scrivere software “da solo” senza parlare con nessuno.

Ma fino ad allora, non posso (e non voglio) definirmi uno sviluppatore.

Sono solo un tizio che fa consulenza informatica.

Spero ancora per poco.