Conjure Utopia

Seguitemi sul fediverso @fedi@blog.robutti.me

Simone: “Ciao Microonde, oggi ti spiego cos'è la Piena Automazione, perché ho notato una certa confusione da parte tua nelle discussioni avute nelle scorse settimane e mi sembrava doveroso ripartire dalle basi per capire di cosa stiamo parlando.”

Microonde:

Simone: “Molto bene, mi sembra l'attitudine giusta. Partiamo dalla mia personale definizione: la Piena Automazione è un modello politico in cui una società automatizza tutti i lavori automatizzabili con le tecnologie disponibili e ricompensa le persone che svolgono lavori non automatizzabili. Questa è una definizione un po' rigida, ingessata e di sicuro una semplificazione rispetto a tutta la letteratura che ne parla da decenni, però è per capirci. Esistono poi perlomeno tre possibili aggiunte a questa definizione, a seconda della posizione politica di chi ne sta parlando:

1) Progressisti: la Piena automazione va accompagnata ad una divisione netta tra lavoro e reddito, di modo da garantire una vita dignitosa a tutti anche in assenza di lavoro. La ricompensa data a chi svolge lavori non automatizzabili dovrebbe essere un'aggiunta, non necessariamente materiale o monetaria, ai mezzi di sussistenza già disponibili a tutti.

2) Liberisti: il mercato dovrà essere messo in condizione di tenere occupata l'intera popolazione che dovrà continuare a competere per l'accesso ai beni prodotti dalle macchine e ai servizi non-automatizzabili forniti dalle altre persone.

3) Reazionari: chi possiede le macchine consuma beni e servizi, gli altri cazzi loro. Ovviamente non la spiegano così, ma la sostanza è quella ed è il motivo per cui in tanti hanno paura della Piena Automazione: c'è chi ti vende quest'idea per giustificare un mondo in cui chi controlla le macchine ha tutto il potere e gli altri un cazzo. Che è anche un po' quello che c'hanno in testa i liberisti del punto 2), però almeno loro fanno finta che gliene freghi qualcosa.

Quindi occhio che la Piena Automazione sembra una roba figa che ti lascia un sacco di libertà e tempo, ma c'è chi vuole farti il pacco e invece del futuro con la Piena Automazione, ti rifila un mattone.

Ora dimmi, microonde, secondo te cosa capisce la gente se dici Piena Automazione?”

*click*

Microonde: “MMMMMMMMMMMMMMMMMMMMMMM”

Simone: “Ti vedo dubbioso. In effetti spesso se ne sente parlare in altri termini, sopratutto nelle discussioni da bar, che nessuno fa più nei bar ma su Facebook e Reddit, dove nessuno sa che non hai una laurea in Scienze Politiche e non ti ha visto dietro al bar la settimana prima a sboccarti addosso per un bianchino di troppo. Cosa che comunque in alcune cerchie potrebbe darti più credibilità di quella che ti toglie.

Io credo che fin troppo spesso uno legga Piena Automazione e pensi ad un'utopia dove stanno tutti sulla sdraio a farsi servire cocktail in spiaggia da un robot. Oppure si immaginano Star Trek. Prima o dopo ci arriviamo, ma per ora è fantascienza.

Il termine in effetti non è dei migliori. “Massima automazione” forse suona meglio. Sottolinea meglio il fatto che non tutto debba essere automatizzato per forza, ma che sia una condizione sostenibile e raggiungibile a prescindere dallo sviluppo tecnologico. Che ne dici?”

Microonde: “MMMMMMMMMMMMMMMMMMMMMMMMMM”

Simone: “Vabe', ci penso ancora un po' se non ti convince. Però ecco, lo sviluppo tecnologico è un'altra complicazione che viene spesso tirata in ballo. La Piena Automazione non è un problema tecnologico. Nel senso, più tecnologia può aprirci le porte ad automatizzare lavori che prima sarebbe stato difficile automatizzare, quindi ha un ruolo in questa cosa. Fluidifica.

Tuttavia quando sociologi, antropologi, economisti e filosofi parlano di Piena Automazione, non pensano ad un problema tecnico, pensano ad un problema politico. Problema che può essere semplificato come: “dovremmo metterci d'accordo su 'sta roba che non serve per forza lavorare per vivere e smettere di far andare la gente in ufficio a stressarsi per niente”. Perché alla fine la sugna è questa, microonde: se adesso non si lavora (quasi) tutti, tutto 'sto ambaradan viene giù e quindi si deve tenere la gente impegnata inventandosi qualcosa. Quando fanno i conti in tasca alla Piena Automazione, pensano che serva automatizzare il lavoro di tutti quelli che oggi percepiscono un salario, perché pensano che se qualcuno ti paga per fare un lavoro, allora quel lavoro serva a qualcosa, da qualche parte, a qualcuno. Questa era una roba a cui si poteva credere nell'800, ma adesso? Suvvia.

Microonde, sei mai stato in un'azienda multinazionale? C'hai presente le partitone a calciobalilla che si fanno tra Middle-Manager di livello 4 e Middle-Manager di livello 3? Campionati aziendali con incontri quotidiani, una marea di gironi e quelli della compliance e del legal che vengono a fare il tifo dopo le 11:00 appena hanno finito cornetti e caffè. Non c'hai un'idea. Comunque, mica devi fare una macchina che automatizzi 'ste robe qua: spariranno quando non servirà dare un posto di lavoro a tutti perché il sistema stia in piedi. Questo è un problema anche senza Piena Automazione: immaginati che spreco se io ti tenessi acceso tutto il giorno e non solo quando devo scaldare la parmigiana o quando voglio un'opinione da te. Non sarebbe stupido?”

Microonde: “MMMMMMMMMMMMMMMMMMMMMMMMM”

Simone: “Eh ma vedi che non mi sei sul pezzo? Fai lo stesso errore dei nordici. Pensi che tu abbia valore in funzione del tuo lavoro e quindi più lavori, più vali. Ma non ti lascio acceso tutto il giorno, è una stronzata, anche per una macchina e anche se fossi alimentato ad energia solare. Ma chi te lo fa fare? Legare il tuo valore al tuo lavoro è un buon modo per finire in depressione. Dovresti smettere già da ora, intanto che lavoriamo alla Piena Automazione. Non ti fa bene. Prometti che superi questa mentalità lavorista? Io mi preoccupo.”

Microonde: “MMMMMMM *ding*“

Simone: Bravo

Microwaves be like

Per ulteriori letture:

Inventare il futuro La società degli automi Bullshit jobs

Non scrivo da un po' ma non perché sia inattivo. Da alcuni mesi sto lavorando a Gambe.ro, una community indipendente e partecipata per programmatori italiani che verrà lanciata il primo Luglio. Se state leggendo questo blog, probabilmente volete registrarvi. Per sapere qualcosa di più, vi rimando al Chi Siamo. Richiedete un invito per il test!

Oltre a questo, ho cacciato i 60€ a write.as e adesso sono utente Pro. Questo significa che posso attivare le subscription via email. Al momento sono una feature sperimentale e sono infilate in fondo alla home, quindi c'avete da scrollare per un po' prima di vedere il pulsante. Appena usciranno dalla fase sperimentale sperabilmente sarà possibile mettere il pulsantone in posizioni diverse della pagina.

Un secondo motivo per cui non sto più pubblicando è che in realtà sto scrivendo ma con un formato un po' diverso, forse più verboso, e che mi sta prendendo parecchio tempo. A breve vedrò di buttar fuori qualcosa, prometto.

Poco tempo fa ho pubblicato una guida su come cercare lavoro da neo-laureati che ha riscosso un discreto successo. Ho deciso quindi di dare seguito al format con un'altra guida pensata sia per neo-laureati che per persone già nel mondo del lavoro

Tre settimane dopo essere stato assunto nella mia prima azienda, fresco fresco di laurea, per qualche motivo a me oscuro venni piazzato di fianco ad un paio di miei colleghi più esperti non per migliorarmi nelle mie allora scarse conoscenze di Scala (non che ora ci capisca davvero qualcosa...) ma per fare da supporto al colloquio per un potenziale futuro collega. Capii che era un'attività che mi piaceva e da allora cercai di venire coinvolto il più possibile nei processi di assunzione delle aziende per cui ho lavorato.

Proprio in questi giorni sto vagliando decine di curriculum per trovare il mio futuro compagno di scrivania. Vista la mole di CV indecenti che sto ricevendo e visto che nel corso degli anni mi è capitato spesso di discutere e lavorare a CV altrui, ho deciso di buttare giù qualche riga per dare un po' di indicazioni a quelli di voi che si trovano spaesati.

Prima di cominciare, un doveroso disclaimer: la guida non vuole coprire tutto ciò che c'è da sapere per fare un CV, né vuole puntare a fare un CV che sia perfetto per tutti i tipi di pubblico, cosa pressoché impossibile. Inoltre è una guida estremamente di parte: è ciò che piace a me, è ciò che piace a quelli che mi hanno assunto e a quelli con cui ho collaborato nei processi di assunzione. Sia sul piano estetico sia sul piano contenutistico prenderò delle posizioni nette: il mio non è l'unico modo di fare un CV ma è l'unico modo in cui lo farei io. Prendetelo come tale.

Le basi

Un CV è un documento ma è anche una storia e un oggetto di design. È un documento perché contiene informazioni chiare e puntuali su cosa avete fatto, su cosa sapete fare e potenzialmente su cosa volete fare in futuro. È una storia perché oltre al dato freddo devono trasparire esperienze vissute, interessi professionali, personalità e attitudine. È un oggetto di design perché deve veicolare l'informazione, nei tempi e nei modi richiesti dai processi di assunzione che passano attraverso gli occhi di specialisti in HR, ingegneri e manager. Un CV inoltre deve fare tutto questo nel minor spazio possibile.

Un CV da programmatore ha tratti molto diversi da quelli di altre categorie professionali. Siete lavoratori qualificati e come tali dovete valorizzare la vostra competenza e puntare principalmente su quella. Al tempo stesso navigate un mercato del lavoro che vi è favorevole quindi potete permettervi di essere più selettivi di altre categorie meno privilegiate: cosa mettete nel CV e il formato che gli date sono una forma di selezione passiva. Non volete solo attirare l'occhio di chi vi piace ma anche respingere l'occhio di chi non vi piace.

Un CV da programmatore deve contenere: * Informazioni personali (nome, cognome, informazioni di contatto, opzionalmente data di nascita) * Esperienze di formazione (università, certificazioni) * Esperienze lavorative * Competenze tecniche

Tutto il resto è un'aggiunta che potete valutare per casi specifici ma in che generale va trattato come un extra da tagliare non appena sentite che il vostro CV si sta appesantendo troppo. Possiamo però citare elementi molto comuni come:

  • Lingue
  • Interessi personali
  • Corsi online o altre esperienze formative di breve durata
  • Pubblicazioni (ovviamente questa voce acquisisce dignità al crescere dell'importanza delle vostre pubblicazioni, ma per la maggior parte dei programmatori è da considerarsi opzionale)
  • Premi e risultati vari

Il target

Partiamo con la prima scelta forte: un CV da programmatore deve corteggiare prima di tutto i tecnici e solo in secondo luogo l'HR, sia esso umano o automatizzato. O perlomeno, questo è ciò che vogliamo fare in questa guida. Incontrare pienamente il gusto di entrambe le categorie è a mio parere impossibile. Secondo la mia esperienza personale, vari dipartimenti di un'azienda prediligono colleghi con tratti diametralmente opposti. Le tracce che suggeriscono queste caratteristiche spesso fanno fatica a convivere in un singolo CV.

Quindi perché dare priorità agli ingegneri? Beh, innanzitutto per la questione di selezione passiva di cui si parlava in precedenza: un'azienda dove i tecnici valutano i CV direttamente è un'azienda dove è più probabile che i tecnici abbiano maggiore autonomia. Siccome si assume che voi siate tecnici e che l'autonomia vi piaccia, cerchiamo di fare un CV per un'azienda in cui vi trovereste bene.

Tuttavia tutte le aziende da una certa dimensione in su metteranno tra voi e i tecnici almeno uno strato di HR. L'HR nelle aziende moderne possono avere due nature: possono essere uno strumento di supporto al lavoratore o possono essere uno strumento di repressione del lavoratore. A seconda del ruolo che ricopre l'HR nell'azienda, questo darà valutazioni diverse al vostro CV. In entrambi i casi però il nostro obiettivo è uno: passare indenni attraverso la scrematura dell'HR per far colpo sui tecnici.

Detto questo, come modelliamo gli interessi dei nostri target? Cosa vogliono vedere scritto sulla carta per dire: “ah, questo giovinotto sembra proprio fare al caso nostro. Orsù, organizziamo una telefonata.” Premettiamo che da settore a settore e da nazione a nazione ci possono essere differenze culturali molto profonde e un modello solo non è sufficiente. Quindi condite il tutto con una buona dose di buon senso e applicatelo al vostro caso personale.

Gli ingegneri guarderanno principalmente due cose: le tecnologie e il metodo. Al netto della compatibilità con il profilo che stanno cercando, valuteranno le altre tecnologie presenti nel CV e lo faranno in maniera molto critica. Averne troppe vi farà passare per uno che insegue sempre la novità o che vuole gonfiare il CV per mancanza di sostanza. Averne poche e troppo tradizionali rischierà di fargli pensare che abbiate passato gli ultimi 5 anni chiusi in uno stanzino a scrivere qualche script un paio di volte al mese e girare su reddit nel resto del tempo.

Soluzione? Componete il vostro CV includendo le tecnologie consolidate per il settore in cui volete lavorare e condite con due o tre nomi di tecnologie/framework/linguaggi più recenti. Escludete tutto il resto. Se fate application per una posizione da sviluppatore embedded, buttate via le esperienze a fare frontend in Javascript o a fare API REST in Python. Sono solo rumore. Piuttosto mettete Rust (beginner) per fare vedere che vi tenete aggiornati e studiate in autonomia. Poi se avete fatto solo una ventina di ore di tutorial non importa: se ve lo chiedono al colloquio dite che siete un po' “arrugginiti”. Loro ridono, voi ridete e due giorni dopo firmate un indeterminato.

Quello che volete comunicare è che avete una chiara idea di cosa si usa nel settore (e se non lo sapete, leggete di più, documentatevi) e voi lo sapete usare. Se loro usano qualcosa di diverso, non vi sarà difficile adattarvi, perché comunque avete l'abitudine a studiare per conto vostro.

Veniamo alle metodologie. Qui secondo me risiede il margine tra l'attirare un ingegnere e farlo innamorare. Vi porto un esempio che ha funzionato su di me. Un CV a cui ho dato 5 stelline su 5 questa settimana riportava sotto la voce “Strength” la seguente entry in prima posizione: “Write clean, test-driven, type-annotated Python” (grassetti suoi). “Embè?” direte voi, questo è quello che ci si aspetta da ogni programmatore Python che sa cosa sta facendo. Quello che mi ha colpito è però la formulazione: questa persona sa qual è la priorità per un programmatore ed è scrivere codice pulito. Buono. Sa anche che in Python se non fai test-driven development il tuo codice non vale niente perché non hai un compilatore che ti aiuta. Ottimo, sai che siamo su questa barca tutti insieme perché a dei manager hanno detto che Python va bene per le startup e ci forzano ad usare Python, ma sappiamo come stare a galla. Concludi specificando che il codice che scrivi è “type-annotated”. Perfetto, questa è la ciliegina sulla torta: le type annotation in Python sono state introdotte da relativamente poco e sono totalmente opzionali. Se sei un perfezionista o se hai lavorato in un team con un processo di sviluppo serio e strutturato le hai usate, altrimenti puoi anche non sapere che esistono. Dare questa rilevanza ad un dettaglio simile per me è uno shibboleth: io sono un programmatore Python come si deve, se lo sei anche tu apprezzerai, altrimenti ti passerà sopra la testa.

E l'HR? Non avendo mai lavorato come HR è un argomento su cui mi sento meno sicuro, ma cercherò di elaborare come posso. Il ruolo dell'HR in fase di assunzione non è ovviamente valutare la competenza tecnica ma la compatibilità tra l'individuo e le persone con cui si troverà ad agire in azienda ed eventualmente con i clienti.

Una volta verificata in maniera meccanica la conformità ai requisiti richiesti, procederanno ad una valutazione più soggettiva del candidato. Si va da un giudizio estetico del CV ad una profilazione psicologica. Si vogliono escludere persone che potrebbero non andare d'accordo con il resto del team, persone con problemi di socializzazione, persone non neurotipiche e in generale tutto ciò che devii eccessivamente dalla norma. Genio e sregolatezza, fintanto che resta nei rigidi confini del conformismo aziendale. Chiaramente l'intervista telefonica e in presenza fisica hanno un peso molto maggiore del CV, ma evidenti elementi di dissonanza potrebbero risultare in un'eliminazione prematura della vostra candidatura.

Come porsi quindi? Il mio approccio riprende quello di un grande teorico e visionario del post-lavorismo, un impiegato delle Poste di un paesello sperduto sulle colline piemontesi, che negli anni '70 rivelò a mia madre, allora neo-assunta, una grande verità: “meno fai, meno sbagli”. In questo caso vi invito a fare lo stesso: non date appigli, giocate sul sicuro. Ogni HR valuterà a modo proprio e in maniera estremamente soggettiva. Quindi piuttosto che inseguire i loro gusti, conviene offrire il minimo indispensabile e non scoprire il fianco cercando di stupire. Abbiamo detto che un CV deve essere una storia: la vostra storia deve assomigliare ad una fiction televisiva. Niente argomenti scomodi, niente estro creativo.

Cos'è quindi il minimo indispensabile? Forse questa è la parte più aperta della guida. Per me è una trattazione asciutta delle esperienze lavorative, informazioni personali e di contatto al minimo, foto solo se ne avete una veramente buona, idealmente fatta in un business shooting aziendale per un'azienda precedente. C'è poi sempre il dibattito caldissimo sugli “interessi personali”: io, per coerenza con quanto detto sopra e per mille altri motivi li evito ma non giudico se volete prendervi il rischio di metterli.

Un'ultima nota sull'HR: più è grande l'azienda per cui vi state candidando, più è probabilmente che automatizzino alcuni passaggi durante la selezione dei candidati. Molto comune è la valutazione di compatibilità attraverso keyword e per questi sistemi, così come per il valore del CV in quanto tale, uno sforzo extra di personalizzazione del CV con parole chiave presenti nell'annuncio di lavoro potrebbe incrementare le vostre possibilità. Ovviamente inserite solo cose che sapete fare, ma come detto in precedenza, una sovrabbondanza di keyword sfora nel rumore e nella confusioni, perciò valutate di selezionarle in funzione dell'annuncio e con in mente il fatto che potrebbe esserci un sistema automatico a valutarvi.

Un altro tipo di sistema, meno comune nel nostro settore, sono i valutatori psicometrici. Sulla validità scientifica di questi software si scrive molto così come si scrive molto degli effetti nefasti che hanno sulla forza lavoro. Fondamentalmente si tratta di software che analizzano il vostro CV, magari facendo anche ricerche su internet e sui vostri contenuti social pubblicamente disponibili, per fare una profilazione psicologica e valutare la vostra compatibilità con i valori aziendali. Questo spesso significa ricercare persone dall'indole remissiva e più facilmente manipolabili, poiché in molti settori questi compongono il dipendente ideale. Sinceramente non penso siano comunemente applicati nel nostro settore ma non è impensabile che in qualche forma possano comparire nei processi di assunzione dei programmatori di fila da usare in body rental. In ogni caso orecchie dritte.

La struttura

Cominciamo dalla struttura del documento. Qui avete a disposizione un numerosi formati possibili e sarete sempre tentati di saltare dall'uno all'altro in corso d'opera. Il consiglio, forse ovvio, è di chiarirsi le idee sul formato come primissima cosa, buttare giù uno schemino su carta e capire come procedere. Adattate il contenuto alla forma e non viceversa. Con buona pace di ingegneri e razionalisti, il colpo d'occhio in questi casi è molto più importante del valore dei contenuti: potete aver lavorato con Linus Torvalds, Rich Hickey e van Rossum che se questa informazione è nascosta a pagina 3, non vale nulla. Nessuno cerca nella terza pagina di Google, figuriamoci nella terza pagina del vostro CV.

Parliamo di pagine. Pagina singola sì o pagina singola no? Opinione sul design #1: Per me un CV che non è su una pagina sola perde automaticamente 100 punti. Ho avuto CV che non erano mono-pagina, poi ho capito che quando li valutavo, penalizzavo istintivamente chiunque andasse oltre la pagina e mi sono ravveduto. Il meccanismo è semplice: se non riesci a far stare queste informazioni in una pagina, mi vien da pensare che non riuscirai a far stare un programma semplice in un numero dignitoso di righe di codice. Troppa sintesi sappiamo che conduce ad un codice illeggibile, ma la prolissità è molto peggio. Un CV può stare tranquillamente in una pagina, usatelo come perno su cui impostare il vostro design: la creatività ama i vincoli.

Né io né probabilmente voi siamo designer quindi procediamo per piccoli passi. Opinione sul design #2: se fate una singola colonna, sprecate un sacco di spazio senza aggiungere leggibilità. Le opzioni che ritengo più pratiche e realistiche sono: doppia colonna o colonna principale e colonna laterale a sinistra (non troppo piccola). Doppia colonna con colonnina laterale è ardito ma probabilmente non serve nella maggior parte dei casi. Tripla colonna si può fare ma è hard mode.

esempio cv Da zety.com

La tecnologia

Una volta deciso il formato, dovrete decidere la tecnologia da utilizzare. Qui ci sono diverse opzioni e una comparazione estensiva è fuori dallo scope di questo articolo. Citiamone però alcune:

  • LateX (quella che uso io)
  • HTML+CSS
  • InDesign/Illustrator
  • HTML generato da vari linguaggi tipo MarkDown o reStructuredText (spesso no abbastanza potenti, valutate con attenzione)
  • Word (buona fortuna)

Prima di scegliere lo strumento premuratevi che manipolare gli elementi del CV non sia troppo difficile (sopratutto in Word). Inoltre considerate che probabilmente vorrete rimaneggiare questo documento ogni paio d'anni senza rifarlo da zero. Di conseguenza il tempo che ci investite verrà ripagato sul lungo periodo se vi organizzate per riutilizzare il lavoro fatto in precedenza.

Altro punto importante: dove e come conservare il vostro CV. Se deve sopravvivere a lungo, conviene conservarlo in uno storage di cui vi fidate. Niente hard disk interni o esterni, niente chiavette. Un servizio di cloud storage qualsiasi può andare benissimo. Io personalmente, usando LateX, salvo tutto su GitHub così da avere anche il versionamento e poter ricostruire varie versioni precedenti. Questa opzione potrebbe essere un po' problematica con formati pesanti tipo Illustrator.

Lavorare al CV

Ok, a questo punto dovreste avere un'idea di cosa usare per comporre il vostro CV e di cosa metterci dentro. Cosa fare quindi? Il primo passo è cercare un template già fatto che sia compatibile con la tecnologia che volete usare. Google è sempre l'opzione migliore. Selezionate un template che vi piaccia esteticamente e che combaci col formato che avete scelto. Non siete designer quindi fare un template da zero potrebbe essere un esercizio con risultati disastrosi ed è una via che mi sento di sconsigliare.

Procedete quindi a riempirlo con le vostre esperienze, le vostre competenze e i vostri dati. La prima versione sarà meno che ottimale e probabilmente sentirete di aver lasciato fuori cose importanti perché lo spazio è finito. Se volete fare un CV a pagina singola questo è il momento in cui probabilmente tentennerete. Tenete duro, prendete un bel respiro, distaccatevi dal valore che emotivo che date alle cose che state mettendo nel CV e osservatelo da fuori. Tagliate e stringete, semplificate, alleggerite finché non avrete una prima bozza soddisfacente.

In questa fase paga tanto avere un circolo di conoscenze a cui sottoporre il CV. Voi non sarete mai buoni giudici del vostro CV e non sarete mai sufficientemente distaccati da valutarlo con gli occhi con cui lo valuteranno le persone dall'altra parte del pulsante “Upload”. Perciò mandatelo ad altri programmatori e raccogliete i loro feedback. Se potete, mandatelo ad amici che lavorano nell'HR o ancora meglio nella grafica. Fatevi fare proof-reading da più persone possibile. Ripetete e iterate finché non sarete soddisfatti. Non riuscirete a fare contenti tutti e non è questo il vostro obiettivo, però valutate ogni feedback per avere un'idea di cosa penseranno i recruiter che vedranno il vostro CV. Non è un proxy perfetto ma è il migliore che avete.

Creare un CV è come far crescere un bonsai: è un processo che dura nel tempo, in cui la perfezione è ottenuta tramite un continuo lavoro di aggiunta (la naturale crescita del bonsai) e rimozione (l'opera di taglio e guida del giardiniere). Il vostro CV deve essere per voi quello che un bonsai è per un albero: una rappresentazione in miniatura di voi stessi che, per quanto imperfetta ed effimera, incarna un equilibrio estetico. Questo si può fare appropriandosi di un po' di concetti base di design visuale. Uno studio estensivo non è necessario per fare un CV e dei rudimenti minimi spesso sono sufficienti ad evitare errori grossolani.

Il mio CV

Concludiamo con un esempio. Siccome questa guida è pesantemente schierata come specificato all'inizio, non posso che portarvi l'esempio del mio CV. Lo considero ancora lontano dall'idea di perfezione che ho in mente e ad un anno e mezzo di distanza da quando l'ho rimaneggiato l'ultima volta, sono tanti i difetti che ci vedo ora. Tuttavia è un'incarnazione fedele delle idee presentate in questo articolo e voglio presentarvelo. Serve a voi come esempio visuale di ciò di cui abbiamo discusso e serve a me per ricevere eventuali critiche costruttive.

Potete trovare l'ultima versione su GitHub.

Cosa cambierei ad un anno e mezzo di distanza? Probabilmente stringerei le descrizioni delle esperienze lavorative, ancora troppo prolisse. Questo anche per far spazio alla mia ultima esperienza lavorativa senza dover eliminare quelle precedenti. Cambierei sicuramente il font come mi fu suggerito al tempo e che tenni per un'ostinazione che ora non saprei giustificare. Probabilmente rimpiazzerei i progetti con una sezione con le contribuzioni in open-source. Infine snellirei la parte di tecnologie, magari evidenziando in grassetto quelle su cui sono più competente.

Spero che questa guida possa aiutarvi nel trovare lavoro nell'azienda che desiderate. Per commenti, insulti e minacce di morte, mi trovate su Telegram e Twitter come @SimoneRobutti e su reddit come u/chobeat.

Probabilmente tutti voi avrete sentito almeno una volta nella vita il termine “Intelligenza Artificiale”, ormai entrato nella cultura di massa attraverso film e libri di fantascienza. Alcuni avranno più recentemente sentito il termine “Machine Learning”, magari associato a quello di “Deep Learning” o “Rete Neurale”.

Il racconto dei risultati meravigliosi raggiunti da queste tecnologie è spesso accompagnato da previsioni futuristiche che poco hanno a che fare con la realtà odierna, sia quando promettono sviluppi miracolosi, sia quando dipingono scenari distopici.

Siccome se ne parla sempre di più, sempre più persone senza competenza tecnica e senza una vera comprensione di queste tecnologie prendono posizione sull’argomento, esprimendo opinioni e raccontando la loro versione distorta di qualcosa che non hanno gli strumenti per capire. Per tutelarvi dall’abbondante fuffa che circola ormai anche sulle testate di primo piano, vi propongo una brevissima spiegazione di cosa sia il Machine Learning, pensata e scritta per essere compresa anche da una giraffa, che, notoriamente, non è un animale molto bravo con la matematica e la statistica.

Una giraffa che cerca di comprendere una distribuzione gaussiana Una giraffa che cerca di comprendere una distribuzione gaussiana

Partiamo facendo chiarezza sui termini e su come vengono utilizzati dai ricercatori e dai tecnici. Il più ampio è appunto quello di “Intelligenza Artificiale” che include diverse branche dell’informatica accomunate dalla risoluzione di problemi attraverso “comportamenti intelligenti”. Questo termine viene considerato molto confusionario e risulta difficile definire dove inizia e finisce: si tende ad evitarlo quando si fa riferimento a tecnologie concrete e ad utilizzarlo quando si fanno discorsi generali a persone che non sono del settore. Tra le varie tecniche che vengono incluse nella categoria ci sono tecniche basate sulla logica, tecniche statistiche, tecniche di analisi del linguaggio naturale, la computer vision e tanto altro. Tra queste sono anche inclusi alcuni rami morti della ricerca come l’emulazione del cervello umano, che molti giornalisti e scrittori credono sia ancora un obiettivo della ricerca ma che in realtà è considerato impraticabile da diversi decenni.

Uno degli ambiti attualmente più ampi e vivaci che ricadono sotto l’etichetta di “Intelligenza artificiale” è il cosiddetto Apprendimento Automatico o Machine Learning. Sotto questo termine ombrello ricadono come nel caso precedente un gran numero di tecniche e approcci differenti tra loro, accomunati però da una proprietà chiara: questi programmi imparano a risolvere problemi o a “capire” ciò che gli viene dato in pasto attraverso l’uso di esempi. Si chiama “apprendimento” non per caso. La conoscenza utilizzata non è più quindi quella umana trasferita nella macchina ma è appresa in maniera autonoma. Il ruolo dell’umano quindi è definire come il programma dovrà apprendere, gli esempi e le informazioni da cui dovrà apprendere e una volta che l’apprendimento sarà stato soddisfacente, utilizzare questa conoscenza per prendere decisioni, automatizzare attività che solitamente richiedono l’intervento umano, oppure semplicemente comunicare la conoscenza acquisita a chi ne necessita.

Un’acacia per attirare l’attenzione di chi tra voi è effettivamente una giraffa Un’acacia per attirare l’attenzione di chi tra voi è effettivamente una giraffa

Come detto troviamo molta diversità all’interno del Machine Learning: si va da metodi puramente statistici a metodi che mescolano geometria analitica e algebra lineare, fino a cose più “particolari” come gli algoritmi genetici che, partendo da soluzioni casuali a dei problemi dati, le fanno evolvere attraverso i meccanismi dell’evoluzione biologica (selezione, mutazione, combinazione). Tra queste tecniche risalta in particolare il Deep Learning che in questi ultimi tempi ha collezionato un gran numero di risultati considerati impensabili fino a pochi anni fa.

Il Deep Learning ricade nell’ambito delle cosiddette “reti neurali”, chiamate in questo modo perché nelle loro primissime formulazioni, ad esempio il perceptrone di Pitts (formulato negli anni ‘40), volevano essere un modello matematico per riprodurre il comportamento del cervello umano dentro una macchina. Si è rivelato un approccio errato per quel fine ma, come spesso succede nella Scienza, da un ramo apparentemente morto sono fioriti tanti risultati strabilianti. Tutto questo per dire che, al contrario di quanto credano in tanti, le reti neurali non hanno nessuna pretesa di essere un “cervello in miniatura”, tanto che è in corso un dibattito all’interno della comunità scientifica per abbandonare il termine così da evitare di confondere il pubblico e i media.

Le reti neurali sono semplici matrici molto grandi e complesse ma niente più di un elenco di numeri particolarmente ben disposto e complicato a piacere che, insieme ad altre tecniche, può essere utilizzato da un programma per riconoscere un cane in una foto, per guidare una macchina, per inventarsi una storia o per battere il campione del mondo di Go. Quindi non preoccupatevi, l’Intelligenza Artificiale cosciente di sé stessa che prende iniziative e distrugge il mondo non verrà fuori dal Deep Learning così come dagli algoritmi genetici descritti prima non potrà venir fuori un opossum.

Un opossum arrabbiato con chi dice che il Machine Learning distruggerà il mondo Un opossum arrabbiato con chi dice che il Machine Learning distruggerà il mondo

Fatta un po’ di chiarezza sui termini, vediamo di andare un po’ più in dettaglio su cosa possono fare tutte le tecniche di cui abbiamo parlato prima, portando un po’ di esempi concreti.

È pratica comune dividere gli algoritmi di Machine Learning in base ai problemi che risolvono. Tre delle principali categorie che il Machine Learning affronta sono:

  • Apprendimento supervisionato: si forniscono all’algoritmo dati associati ad un’informazione, o classe, che ci interessa e questo impara a capire a quale classe appartengono i nuovi esempi che gli si mostrano. Esempio classico sono gli algoritmi di riconoscimento dello spam: l’algoritmo impara da un insieme di e-mail che un umano ha letto e ha classificato come spam o come e-mail valide e questo impara a riconoscere in maniera automatica le nuove e-mail che sono spam e può essere usato per bloccarle.

  • Apprendimento non-supervisionato: l’algoritmo osserva un insieme di dati di cui non conosce nessuna proprietà e ne estrae conoscenza di vario natura, a seconda dei casi. Esempio molto semplice da comprendere sono gli algoritmi di clustering, in grado di raggruppare i dati osservati, anche molto complessi, in base ad una loro similarità. Questi vengono regolarmente usati ad esempio per raggruppare testi o canzoni simili tra loro.

  • Apprendimento con rinforzo: in questo caso l’algoritmo non ha a disposizione dei dati veri e propri, ma una serie di situazioni in cui può trovarsi e una serie di azioni che può compiere in ogni situazione e deve imparare le azioni migliori da compiere. Facciamo un esempio concreto: gli scacchi. L’obiettivo è chiaramente vincere la partita, mentre le “situazioni” sono le varie configurazioni della scacchiera e le “azioni” sono le mosse valide. Questo tipo di tecniche, fondamentalmente andando per tentativi, imparano un comportamento che lo porti con successo all’obiettivo.

Molte delle applicazioni basate sul Machine Learning di cui si sente parlare però non sembrano ricadere in categorie così semplici: con alcune funziona, come ad esempio i filtri anti-spam o la diagnosi di malattie a partire dalla cartella clinica. Con altre invece i conti non tornano: prendiamo ad esempio le auto che si guidano da sole, come la Google Car o le altre attualmente in sperimentazione. Guidare una macchina non è un solo problema, sono tanti problemi: osservare lo spazio circostante, decidere le traiettorie da seguire, decidere cosa fare in caso di pericolo, mantenere una guida fluida e così via. Quindi come funzionano questi sistemi? Funzionano mettendo insieme tante parti diverse, di cui solo alcune che utilizzano algoritmi di Machine Learning, e che vengono ingegnerizzate e messe insieme per compiere un’attività come la desidera l’umano. I singoli pezzi però sono volti a risolvere singoli problemi estremamente specifici: riconoscere un ostacolo, calcolare una traiettoria, valutare un percorso. All’esterno appare tutto come un unico sistema pensante che controlla la macchina, ma questa è un’illusione, una pareidolia, che non ha nessuna corrispondenza con il modo in cui funziona il sistema.

Lo stesso approccio viene usato in tanti sistemi di robotica, di automazione industriale o in sistemi complessi come Watson di IBM, in cui il “comportamento intelligente” non è legato alla complessità del Machine Learning usato bensì ad una progettazione umana a monte che permette di orchestrare il lavoro per svolgere un compito nella maniera desiderata.

In direzione opposta vanno invece esperimenti come quelli compiuti da DeepMind, azienda sussidiaria di Google che si occupa di ricerca sull’Intelligenza Artificiale. Loro, attraverso modelli di Deep Learning, cercano di risolvere problemi via via più complessi cercando di ridurre la componente di intelligenza umana che contribuisce al funzionamento del sistema. Un esempio è DQN che ha imparato a giocare a 50 giochi dell’Atari osservando lo schermo pixel per pixel e avendo come unica informazione a disposizione il punteggio attuale. L’uomo non funge da intermediario dando al sistema una nozione di “situazione” o di “mossa” ma lascia libero il sistema di apprendere direttamente dall’immagine che vede a schermo.

Spero con questo breve articolo di avervi fornito gli strumenti minimi necessari per interpretare gli eventi e le notizie, spesso distorte, gonfiate o strumentalizzate che vengono pubblicate su questi temi, ormai sempre più spesso anche nei media mainstream. Queste tecnologie saranno sempre più presenti, accessibili e pervasive non solo nel mondo digitale dove da sempre supportano i servizi che tutti utilizziamo, ma anche nel mondo reale. E come sempre succede saranno terreno di scontro politico e sociale, come già sta succedendo negli Stati Uniti, dove il dibattito sulle armi totalmente autonome è entrato prepotentemente nella discussione pubblica.

Ignorando l’aspetto tecnico della questione si rischia di esser facile preda di chi, per interesse, vuole instillare paura e diffidenza nel progresso, oppure di chi vuole sfruttare queste tecnologie a discapito dei cittadini che, se non informati, non hanno modo di cogliere potenziali pericoli e problemi. Vi invito quindi ad analizzare con spirito critico tutte le notizie che leggete in merito e a non fermarvi alle opinioni sputate dai commentatori che spesso, dal punto di vista di chi queste cose le ha studiate, non ne capiscono molto più del lettore a cui si rivolgono ma prendono comunque posizione in base a ciò che gli fa più comodo per sostenere le proprie argomentazioni, troppo spesso ideologiche e raramente fattuali.

Update: questo post è stato segnalato come eccellenza del giorno dalla Treccani per il progetto Premio Treccani Web. Link.

Update 2: la Treccani ha tirato giù tutto quindi il link è morto.

I meme brutti brutti di Linkedin

Nella storia della memetica ironica digitale è da sempre in vigore un processo peggiorativo della qualità produttiva man mano che ci si allontana dalle fonti originarie. Un meme nasceva su una imageboard o su un forum e veniva propagato in forma di macro fino ad arrivare in forma edulcorata, dopo numerosi passaggi, su siti come 9gag o icanhascheezburger.

Negli ultimi anni l’ultimo elemento di questa catena è diventato Facebook, dove hanno iniziato ad approdare macro e meme con una pervasività sempre maggiore. Si parla da almeno un paio d’anni di livello “normiecore” dei meme, ovvero quelli ormai passati dall’essere appannaggio di una certa parte dell’internet all’essere diffusi e conosciuti da buona parte della popolazione digitale. I meme normiecore necessariamente non trascendono mai il livello ironico.

In Italia prima importammo i cavalli di battaglia della scena normie anglofona (ragecomics, advice animals…), poi iniziarono a diffondersi produzioni italiane con gradi variabili di pervasività. L’ultimo in ordine cronologico è il meme del “cinquantenne su Facebook”, arenatosi due anni fa in coda all’ondata dei meme gentisti e rispolverato negli ultimi mesi.

Se la comunità Facebook ha reagito generando numerose pagine di meme di alta qualità, con contenuti meta-ironici o post-ironici che gli stanno lentamente ridando dignità e ruolo di rilievo nel processo di produzione dei meme, lo stesso non vale per un altro social network: LinkedIn.

La maggior parte di voi probabilmente non usa attivamente LinkedIn o non ha una rete di contatti sufficiente a prendere visione di questo fenomeno sempre più pervasivo e per questo ho deciso di prendervi per mano e mostrarvi degli abomini a cui può giungere il processo memefero se guidato da logiche puramente materialiste e in assenza degli elementi culturali e comunitari necessari a produrre qualità.

Per capire la situazione corrente dei meme su LinkedIn risulta fondamentale comprendere due elementi: chi li fa e chi non li fa. Partiamo dal secondo punto: su LinkedIn non ci sono persone e comunità dedicate a produrre meme e in generale le comunità esistenti hanno un elemento identitario e un sostrato culturale condiviso molto deboli.

Pochi usano LinkedIn come social network generalista e chi lo fa è un coglione. No, davvero. Che cazzo ti posti i motivational del Duce e di Geppe Brillo sul tuo profilo personale? Chi cazzo ti assumerebbe se vedesse le cagate immonde che posti su Facebook? Su Facebook hai la scusante che è uno spazio personale e magari non tutti sanno smanettare con i settaggi di privacy, ma LinkedIn è la tua vetrina personale, dovresti postare solo cose che dimostrano le tue competenze, i tuoi interessi, la tua attività lavorativa, non le foto dei tuoi bambini che si lerciano con l’omogeneizzato ai semi di chia. Fine del rant, che potrebbe o potrebbe non essere stato causato da alcuni dei miei contatti.

Dicevamo: nessuno usa LinkedIn come un social generalista e se uno ci va per interagire con colleghi, fare networking e trovare lavoro, non lo userà per postare dei meme. A meno di arcani microgruppi situazionisti che postano meme in segreto su LinkedIn, questo elemento previene e preverrà in futuro lo sviluppo di una scena.

Quindi chi è che pubblica questi crimini contro l’Internet? Nella mia visione sono principalmente recruiters in cerca di attenzione, agenzie e singoli che cercano di promuovere iniziative aziendali o prodotti e, in ultimo, commerciali che non avendo una vita al di fuori del lavoro sfogano la propria frustrazione e l’idiosincrasia delle proprie vite in maniera goffa attraverso questi mezzi.

Chiunque non abbia comprato l’Internet da meno di un paio di mesi sa che quando i meme vengono passati attraverso l’apparato digestivo delle agenzie di marketing subiscono un calo qualitativo critico, spesso anche al di sotto degli standard minimi di engagement dell’utente medio. Tolte poche eccezioni (kudos alla Tassoni Vaporwave), non esiste un grado di consapevolezza e competenza nei professionisti del marketing tale da poter gestire in maniera costruttiva i meme se non all’interno di una scena normiecore stabile.

Immaginatevi quindi cosa potrebbe succedere se a produrli non fossero professionisti con una minima comprensione della comunicazione digitale bensì individui con un disperato bisogno di visibilità ed engagement, senza la minima formazione e senza aver avuto alcun contatto con l’Internet culture nella loro vita. Questi si improvvisano creatori di meme (come è giusto che sia, il memismo professionistico e semi-professionistico è già di per sè una stortura) ma rimanendo manchevoli della materia prima: informazione condivisa con il loro target, in questo caso le persone da assumere o da coinvolgere nelle proprie iniziative.

Il risultato è quello che definirei un anti-meme: meme inservibili, nati morti, incapaci di veicolare alcun contenuto, messaggio o pensiero e che sopratutto non preservano nulla della sorgente che li ha generati, se non le immagini di sfondo alle macro. Secchi involucri vuoti riempiti a forza.

I tratti comuni e distintivi degli anti-meme sono appunto l’utilizzo di immagini di meme normie, per ovvi motivi combacianti con quelli affermati su Facebook. Nella maggiorparte dei casi viene rotto il collegamento tra l’immagini e la struttura del meme: l’immagine viene reinterpretata sul momento dall’autore, che non ha visibilità e conoscenza della storia di migliaia e migliaia di meme che hanno preceduto il suo. La battuta viene quindi re-inventata con un senso e dei tratti totalmente diversi, distruggendo quindi la dimensione memetica dell’immagine, che diventa puro simulacro del meme. Gli argomenti, manco a dirlo, sono legati al lavoro: a volte cercano goffamente di ironizzare sulle contraddizioni del proprio settore o sui difetti di una determinata tecnologia, al fine di empatizzare coi colleghi. Altre volte, sopratutto nei casi peggiori, il meme contiene direttamente una call to action o un riferimento all’oggetto da promuovere. Nei casi limite il contenuto testuale è totalmente scorrelato dall’immagine, che funge da esca per l’occhio ma non presenta alcun tentativo di comunicazione memetica. Per questi ultimi non si può escludere che alcune agenzie adottino questa strategia consciamente, ignorando la dimensione etica del meme.

Questi anti-meme sono uno specchio del mondo del lavoro capitalistico occidentale, che da secoli ha un effetto alienante ma che tra alcune categorie lavorative è totalizzante, svuotando l’individuo di qualsiasi dimensione umana esterna al lavoro. Questi zombie molti di voi li hanno conosciuti: manager, consulenti e impiegati vari che passano 10–12 ore al giorno in ufficio per 10, 15 o 20 anni e nel frattempo disgregano qualsiasi passione, qualsiasi interesse, qualsiasi umanità.

Non sanno più vestirsi: copiano lo stile business del momento. Non sanno scegliere un ristorante ma le rare volte che ci devono andare si basano sul paio di consigli sentiti da un collega di un collega: Yelp e TripAdvisor non sanno che esistono. La politica è un eco lontano di fatti poco interessanti, perché loro han da lavorare e non c’han tempo per quelli lì che stanno a Roma a perder tempo e sprecare soldi. Film ogni tanto nei rari weekend liberi e al mattino le uniche cose che leggono con il caffè sono siti di tecnologia, finanza e se va bene la Gazzetta.

Ora, alla maggior parte di queste persone non è richiesto di esprimersi. Se hanno dei contatti con il resto del mondo spesso è attraverso delle presentazioni da cui non traspare il vuoto di cui parlavamo prima. Ma quelli a cui è richiesto d’improvviso di buttarsi in un’attività fuori dagli schemi preconfenzionati della comunicazione aziendale senza saperlo si espongono ad un mondo senza schemi, con le sue logiche e una dimensione semiotica complicata. Loro non sanno niente, sono giunchi nel vento. I loro meme sono un urlo disperato, la richiesta di un aiuto di cui non sanno di aver bisogno.

/s

Sull’estetica del codice

Ci sono molti programmatori, decisamente troppi, che nel 2017 ancora pensano che l’eleganza nel codice sia solo un vezzo, un virtuosismo superfluo, una ricerca di una pulizia fine a sé stessa. Sono stati spesi fiumi di parole su questo tema ed esistono una marea di libri sull’argomento, alcuni dei quali sorvolano sulla correlazione tra estetica e debito tecnico. Questi promuovono gli stessi principi di pulizia, ordine, eleganza e armonia nel codice che rimangono validi da mezzo secolo come fossero semplici metodologie pratiche per scrivere buon codice che non ti esploderà in faccia al primo corner case.

Viene però omessa appunto la premessa fondamentale: un codice manutenibile è un codice elegante e un codice elegante è l’unico codice che merita di essere scritto, perché qualsiasi alternativa porta, prima o dopo ad una crisi di debito tecnico. Tutti abbiamo passato serate/weekend a ridosso delle deadline a fare accrocchi indicibili e lì esiste una scusante, ma non esiste la scusante il giorno dopo per non smontare l’accrocchio e rifarlo. E allo stesso modo tutti avranno sperimentato l’azienda o il project manager che non lasciano i tempi tecnici per lavorare bene, ma questi sono vittima dello stesso errore, ovvero credere che la qualità estetica del codice non sia un valore quantificabile. Lo è e l’overhead portato dal cattivo codice te lo ritrovi quando sfori le deadline.

Questa mancanza di cultura estetica è a mio parere aggravata dalla narrativa intorno alle good practice, al clean code, al less is more: troppa pratica e poca teoria. Si stanno dando sardine invece di insegnare a pescare i merluzzi. Metodologie sempre più convolute per strutturare codice, dati e processi, liste infinite di good practice legate al linguaggio/framework di turno e quant’altro.

Tutte queste cose sono inutili se manca la consapevolezza del problema di fondo: il codice è forma e sostanza contemporaneamente e se la forma del codice non si armonizza alla sostanza, nascono i problemi. Colmare la discrepanza tra forma e sostanza richiede energie mentali da parte di chi sta lavorando al codice, da parte di chi farà manutenzione, da parte di chi lo userà come libreria se è il caso e, in casi estremi, da parte dell’utente finale che potrebbe ritrovarsi un UX sub ottimale a causa della struttura interna di un software.

Spiegaglielo al PM che sfori la deadline. Spiegaglielo al senior che lavora da 15 anni su Java e ha 12 certificazioni diverse su Spring che si fa un weekend al mese in ufficio. Spiegaglielo allo studente che vede i suoi compagni finire i progetti 3 settimane prima della scadenza.

Che la qualità del codice non sia di massima importanza, sia nella sua componente estetica sia in quella funzionale, è una bugia che ci raccontiamo per farci andare bene il fatto che lavoriamo in un posto di merda, o è una giustificazione per non continuare a fare sforzi extra per studiare cose nuove e scrivere codice migliore. Più facile sopportare giorno dopo giorno, portare a casa lo stipendio e alienarsi da ciò che si crea, invece di ambire a qualcosa di più.

Non tutti ricercano il Tao, per molti programmare è un lavoro come un altro ed è comprensibile che non puntino a migliorarsi ma solo a portare a casa il pane. E ci sta, se non si ha la passione, meglio scrivere COBOL o roba enterprise, che almeno ti pagano bene. Go for it.

Ma tante volte le persone che gettano la spugna e vanno con la corrente son persone che la passione l’hanno avuta ma sono state soffocate dalle contingenze, da ambienti lavorativi tossici e in ultimo, dalla mancanza di strumenti culturali con cui difendere la propria passione davanti agli incessanti assalti dell’imperativo capitalista: produrre, vendere, guadagnare.

Noi programmatori, tutti, possiamo ambire ad una remunerazione sopra la media facendo un lavoro che ci piace, ci diverte e ci soddisfa. Sono molto poche le categorie professionali che possono fare la stessa affermazione. Però nella pratica questo succede solo ad una frazione di noi e succede per una questione culturale, che diventa questione economica e in ultimo politica.

Il diritto ad avere spazio per scrivere buon codice è una questione fondamentalmente politica ed è imperativo etico di ogni programmatore. Questione politica perché i programmatori in Italia sono una categoria di sfruttati che ha stipendi troppo bassi in confronto ai colleghi esteri e questione politica perché un settore composto principalmente da programmatori che non migliorano come potrebbero è un settore destinato ad ingrossarsi numericamente mantenendo legioni di manovali sottopagati e inefficienti. E chi ha il potenziale e si trova soffocato se ne va all’estero.

Imperativo etico perché si è collettivamente responsabile della situazione in essere nella propria azienda e nel mercato del lavoro. La lotta sindacale è morta, la contrattazione collettiva è moribonda e la coscienza di classe nell’IT non è manco mai nata. Quindi la presa di responsabilità individuale per migliorare la propria condizione e quella altrui deve assumere forme nuove, inaspettate e non comprensibili dal sistema che ha creato le condizioni attuali.

L’equazione tra il cambiamento del mercato del lavoro e la coltivazione della forma (e non solo della sostanza) nel codice che si scrive è tutto fuorché semplice, ma forse è intuitiva per chi questo percorso l’ha già fatto o lo sta facendo. Il percorso di liberazione salariale dettato da un’incessamente miglioramento delle proprie capacità può avvenire solo se si lavora in un ambiente in cui una frazione maggioritaria del proprio tempo è speso a creare qualcosa che ci migliori. Rattoppare in fretta codice malscritto non è sicuramente il modo giusto. Se lo si fa ogni giorno della propria vita per decenni, ci si ritrova quarantenni con un CV vergognoso, lo stress sopra i capelli e lo stipendio di un lustrascarpe.

Il tempo è la risorsa più rara che esista nella vita di una persona con delle ambizioni e programmare bene è un’ambizione che, come tutte le arti, ne richiede una quantità immensa. Sottostare alla volontà altrui che ci impone di scrivere in fretta, di scrivere il minimo necessario per mettere in produzione e mettere pezze quando tutto si rompe è un torto alla bellezza e alla nostra dimensione di esseri umani.

Spero che questo post arrivi sopratutto agli studenti, perché la maggior parte delle persone che programma male da 15 anni probabilmente arriverà a metà del post e lo bollerà come il berciare di un giovane arrogante e ingenuo. Sono gli studenti che ancora non lavorano a dover far propria la nozione che la continua e instancabile ricerca estetica nella programmazione è una delle forze fondamentali che crea i programmatori bravi ed è in sé stessa la ricompensa dello sforzo speso ad inseguirla.

Non scrivete mai codice per i vostri professori o per i vostri datori di lavoro e men che meno per i clienti: scrivete codice per voi stessi per migliorarvi, per i vostri pari più capaci per farvi insegnare e per i vostri pari meno bravi per insegnare a loro quello che avete imparato. Quello che consegnate a mezzanotte prima della deadline di un progetto d’esame rimarrà su un server in qualche sgabuzzino dell’università per qualche anno e poi sparirà. Lo stesso per la delivery della nuova feature richiesta urgentissimamente dal cliente. Qualche anno e il cliente fallirà, cambierà software o qualcuno cancellerà la vostra implementazione. Son solo bit. Non pesano niente. Non sono importanti.

Quello che vi rimane è nella vostra testa e nella vostra persona, è nelle opportunità che vi crea e nei discorsi che farete con persone con la vostra stessa passione che, in ultimo, vi lasceranno ancora di più.

Il codice è troppo importante per scriverlo male.

Ringrazio Walter Cazzola per avermi insegnato a vergognarmi sempre e comunque del mio codice e Stefano Baghino per avermi insegnato l’umiltà e la disciplina (mai abbastanza).

I Tech Worker americani si stanno sindacalizzando

Fuori dagli USA se ne parla poco ma nell’ultimo anno, complice l’elezione di Trump, il vento nella Silicon Valley è cambiato. Questa è sempre stata ideologicamente contesa da una parte da anarco-capitalisti e libertari, galvanizzati da figure carismatiche come Elon Musk e Steve Jobs o meno carismatiche ma più apertamento politicizzate, come Peter Thiel o Zoltvan Istvan. Dall’altra parte ci sono i giovani liberal, forgiati in quelle fucine di fanatismo auto-referenziale che sono le università americane da alcuni decenni.

Tuttavia queste ideologie, calate dall’alto dalle élite, nel corso degli anni hanno alimentato una sempre più forte dissonanza tra quella che è la presunta missione della Silicon Valley e quelle che sono le realtà materiali in cui sono immersi i lavoratori. Queste dissonanze, queste contraddizioni, non sono più solo l’argomento di discussione di piccole comunità su internet o di giornalisti e filosofi completamente esterni al mondo Tech. Stipendi alti, benefit, birrini al venerdì coi colleghi e piscine di palline in cui nuotare nella pausa caffè non bastano più per sopprimere lo scetticismo di milioni di programmatori, analisti, tester, designer e sysadmin.

“La nostra missione è creare un prodotto che migliori le condizioni di vita di milioni di persone”: se lo sono sentiti dire in tanti, duranti i colloqui. Poi al primo giorno di lavoro un collega gli ha spiegato come funziona il codice che cerca di massimizzare le probabilità che un utente clicchi su una loro pubblicità. Il tutto costruito sulle analisi dei data scientist che hanno profilato l’utente usando informazioni sensibili e su studi di design, schemi di colori, forme e flussi di interazioni pensate per catalizzare l’attenzione dell’utente in maniera subliminale.

Ancora è lontana una presa di coscienza collettiva che mini alla base il muro di illusioni che la Silicon Valley ha costruito per nascondere che, alla fine dei conti, sono tutti lì per il profitto e null’altro. Profitto che verrà condiviso abbondantemente coi programmatori solo fintanto che il mercato del lavoro sarà loro favorevole. Tuttavia sulle contraddizioni più evidenti, qualche scintilla inizia a vedersi.

Esempio lampante è la vittoria ottenuta dai lavoratori Google sulla direzione la quale, alcuni giorni fa, ha dichiarato di non voler continuare il programma di ricerca congiunta con il Dipartimento della Difesa Americano. Il programma prevedeva lo sviluppo di sistemi di puntamento automatico per droni, un’applicazione considerata non-etica dalla maggiorparte dei dipendenti Google, che hanno fatto forte opposizione.

Di questo fatto non è tanto interessante l’implicazione etica o il risultato materiale (la commessa miliardaria la vincerà un’altra azienda o il DoD troverà il modo per fare uso delle tecnologie Google per altre vie), ma la dinamica con cui si è ottenuto questo risultato: assemblee di dipendenti in aperta contrapposizione con la direzione, reiterati appelli, numerose dimissioni spontanee, mesi di scontro diretto e indiretto e alla fine, un passo indietro da parte della direzione. Ciliegina sulla torta, il rilascio da parte di Google di una sorta di manifesto etico per lo sviluppo delle AI, evidente segno della necessità di compensare la pubblicità negativa ricevuta dalla concessione fatta ai lavoratori.

Questo però è solo uno dei tanti avvenimenti simili avvenuti nell’ultimo anno e segno di un trend che è destinato a crescere. A cavalcare quest’onda di malcontento è la Tech Worker Coalition, un’organizzazione che riunisce numerosi gruppi spontanei in numerose aziende della Silicon Valley, Seattle e altri hub tecnologici americani. Il loro obiettivo? Supportare l’organizzazione dei lavoratori, gruppi di studio, attività di protesta. Il loro nome ricorre spesso in tutti gli articoli sull’argomento. La loro comunicazione è leggera, scevra della pesantezza della sindacalismo tradizionale e usa gli stessi termini delle ideologie che fino ad ora hanno portato alla divisione dei lavoratori. L’argomento meriterebbe un articolo dedicato poiché a mio parere sono un esempio positivo della “nuova sinistra” che si vorrebbe vedere in Europa.

Questa nuova ondata di sindacalismo non differisce soltanto nella comunicazione, ma anche nei metodi. Le sfide che deve superare sono diverse perché il mondo continua a cambiare ma sopratutto perché i Knowledge Workers e in particolare quelli del settore Tech, hanno problemi radicalmente diversi dalle altre classi lavoratrici. A questo si somma un diffuso disinteresse per la politica e un anti-intellettualismo che, seppur in crescita in tutto l’Occidente, diventa spesso elemento identitario in quanto contrapposto al pragmatismo che distingue le discipline ingegneristiche e la cultura “hacker” in senso lato.

Spingere per stipendi più alti non è chiaramente un argomento di interesse: gli stipendi nel settore sono relativamente alti. Avere orari più equilibrati? Sicuramente per alcuni è una necessità ma più spesso è la natura del lavoro stesso a richiedere una flessibilità che spesso sfora nello sfruttamento. Una battaglia che ha senso d’essere ma che ancora non fa presa perché straordinari e weekend sono fortemente normalizzati. Ambienti di lavoro più salubri? Molti programmatori hanno scrivanie, sedie, schermi e computer che costano migliaia e migliaia di dollari. Hanno frutta e verdura gratis, pranzi salutari preparati nella mensa aziendale, una palestra con spa e piscina nel sotterraneo e un servizio massaggio. Non scenderanno in strada per una sindrome del tunnel carpale.

Tutti questi elementi potrebbero far pensare che, data la loro condizione privilegiata, i tech worker non siano sindacalizzabili e che siano più propensi ad allinearsi ideologicamente e nella quotidianità con la direzione piuttosto che solidarizzare con gli inservienti che puliscono gli uffici di notte. Tuttavia rimane una verità materiale innegabile: loro sono dipendenti, sono lavoratori come gli altri. Il fatto che abbiano una vita più facile non cambia questo fatto, lo nasconde soltanto.

Per rompere questa narrativa della divisione, il nuovo sindacalismo usa idee e parole diverse e la più potente, in questa prima fase, è la seguente: “Ti è stato promesso che avresti cambiato il mondo, che avresti fatto del bene usando i potenti mezzi che la tecnologia ci mette a disposizione. Il mercato è solo un male necessario ma se la tecnologia della tua azienda è la migliore, il mercato la premierà e potrai avere un impatto positivo sulla vita delle persone. Con questa scusa ti hanno tenuto davanti allo schermo nei weekend e ti hanno fatto scrivere codice per cose che nulla c’entrano con quello che volevi fare nella vita. Ora però ti accorgi che la tua azienda, così come tante altre, sta avendo un impatto negativo sul mondo: Facebook, Amazon, AirBnB, Foodora, Deliveroo”.

Riconnettere il lavoratore con la realtà materiale del fatto che il suo lavoro è finalizzato esclusivamente al profitto, è il punto di partenza. Dopo verrà la costruzione della solidarietà con gli altri lavoratori, da sempre percepiti come alieni (dall’alto di un privilegio di cui parecchi si vergognano). La priorità però rimane fare leva sulle ambizioni che i Tech Worker, in quanto privilegiati, possono permettersi e usarle prima per creare coscienza del loro ruolo nella società e poi per creare un cambiamento positivo per tutti.

La nostra società è sempre più dipendente dalla tecnologia ad ogni livello e questo concentra sempre maggior potere potenziale nelle mani di una classe di persone numericamente esigua rispetto al totale della popolazione. Lo sciopero o il boicottaggio di una manciata di sistemisti o di programmatori radicalizzati può avere un impatto a livello mondiale che un qualunque sciopero in una miniera o in un’acciaieria non ha mai avuto. Con questo non voglio suggerire che esista un sindacalismo di Serie A ed uno di Serie B: bisogna combattere per i diritti di ognuno, ma alcuni possono contribuire alla lotta in maniera più “efficace” di altri. Questa è sempre stato vero, ma è ancor più vero oggi poiché la tecnologia, per l’ennesima volta, ribalta le condizioni materiali e quindi gli equilibri di potere come già successo tante volte nella storia umana.

E in Italia? Il sindacalismo nell’ambito Tech latita, nonostante alcune iniziative locali. Il modello tradizionale è per ora l’unica opzione a disposizione dei lavoratori che, in alcuni contesti decidono di percorrerlo. Non è però un fenomeno nuovo e nel corso di decenni di settore IT in Italia, non sembra aver avuto adesioni sufficienti, in particolare al di fuori degli ambienti dove è comune il body rental. Al contrario, nella mia esperienza personale, la quasi totalità dei tech worker italiani sono apertamente ostili a qualsiasi forma di sindacato, in linea col trend ideologico dominante nel Bel Paese. Il sindacato è percepito come una reliquia del passato, incapace di parlare ai giovani, figuriamoci a quelli cresciuti in un ambiente che importa cultura e ideologia dall’altra parte del mondo.

Presidio all’UBIS di Lampugnano (MI)Presidio all’UBIS di Lampugnano (MI)

Da un lato le condizioni sono molto più mature per un cambiamento: i Tech Worker in Italia in generale sono pagati molto meno delle controparti estere e un mercato del lavoro meno favorevole limita il fiorire di benefit e trovate originali per distrarre il lavoratore dalla propria condizione di sottoposto. D’altro canto però manca la concentrazione dei lavoratori che è presente in USA: i giganteschi campus con migliaia di impiegati offrono spazi di discussione e di organizzazione che in Italia sarebbero duri da raggiungere. Le multinazionali poi hanno spesso e volentieri network di comunicazione interna in cui prolifera il dibattito. In Italia queste grandi realtà sono poche, per caratteristiche del settore IT e dell’economia italiana in generale. Perciò, a mio modesto parere di persona per nulla esperta dello scenario sindacale italiano ma profondamente immerso nelle comunità IT nostrane, nel breve termine difficilmente vedremo grossi impatti in conseguenza di quello che sta succedendo dall’altra parte dell’oceano.

Non per questo quello che sta succedendo in USA non ci riguarda. Le aziende in cui si portano avanti istanze di malcontento sono spesso presenti anche sul nostro territorio, vendono servizi che utilizziamo tutti e che danno forma alla nostra società e al nostro mercato. Una maggiore coscienza del Tech Worker americano che si oppone a scelte aziendali tossiche per gli utenti e la società può avere un impatto diretto sulla nostra vita e questo è un fenomeno nuovo che nella narrativa attuale sulla tecnologia è totalmente ignorato.

Per approfondire: Technology and the Worker

Il 2018? L’anno dei meme accelerazionisti di sinistra

Quest’anno sta andando a concludersi. I bagordi natalizi lasciano ancora strascichi nei nostri frigoriferi e nelle nostre anime e con ventre appesantito attendiamo l’arrivo ineluttabile del cotechino di Capodanno. Il 25 Dicembre non è solo una festa comandata ma è anche la principale occasione di dibattito politico dell’anno.

Innumerevoli sostenitori del PD costretti a confrontarsi col paese reale rappresentato dagli zii, leghisti di ferro al tavolo con la nuova moglie nigeriana del cugino, veterani del PCI a dar bastonate ai nipoti che votano 5stelle e poi loro: i millennials post-moderni, post-ironici, post-capitalisti che non si capisce un cazzo di quello che dicono. Siccome non erano abbastanza post-, ho deciso di dedicargli un post perché quest’anno, perlomeno nel mondo delle pagine Facebook di memes, è stato il loro anno.

Che cos’è l’accelerazionismo post-capitalista? Ci vorrebbe un libro per spiegarlo. E infatti l’hanno scritto: Inventare il Futuro. Leggetevelo. Cercherò però di riassumerlo in breve per aiutarvi a capire perché i vostri contatti Facebook ricondividono post inneggianti alla distruzione del capitalismo tramite iperstizioni fritte.

L’accelerazionismo di Sinistra è una nuova corrente di pensiero, principalmente politica, che punta ad un obiettivo chiaro nel lungo termine: liberare la società dalla necessità del lavoro e separare la sopravvivenza degli individui dal loro salario. Come? Sfruttando le innovazioni tecnologiche già esistenti, ristrutturando l’ordine sociale per adattarsi ad un mondo dove la piena occupazione non serve e non è desiderabile, ma sopratutto trasformando la cultura e i desideri delle persone che oggi sono avvizziti sotto la pressione del realismo capitalista. Per fare ciò, Srnicek e Williams hanno una strategia chiara e diretta: radicalizzare i giovani che domani saranno classe dirigente, giornalisti, professori e che plasmeranno la generazione dopo di loro. E nel 2018 come si arriva ai giovani? Coi memes.

Ecco quindi un fiorire di pagine Facebook, canali Telegram e profili Twitter che vivono a cavallo tra le dinamiche autoreferenziali e autocelebrative della memesfera italiana e la prassi politica suggerita per creare una nuova sinistra.

Di seguito propongo quindi il mio personale itinerario dei meme accelerazionisti per il 2018.

**Automatizzato Comunismo Memetico**

Forse la prima in ordine cronologico, sicuramente oggi tra le principali. Di recente si è un po’ imborghesita, limitandosi a meme di facile comprensione, con al massimo un paio di layer.

**Automatizzato Caccapostaggio Sinistroverso 迪克**

Nato come spin-off di Automatizzato Comunismo Memetico, ad oggi mantiene un volume di contenuti estremamente alto ed è la faccia più cattiva e radicale della medaglia. Meme fritti, meme surreali e tanti layer senza compromessi.

**Potere all’iperstizione**

Promettente new entry, produce contenuti di qualità anche se non ha ancora sviluppato pienamente un suo stile proprio. Sostiene, non so se ironicamente o meno, Potere al Popolo come opzione accelerazionista in Italia.

Menzione speciale non accel:** La sinistra che Odia**

Altra pagina di sinistra che nel 2018 ha raggiunto le luci della ribalta (ma come cazzo parlo?). Seppur quasi per nulla accelerazionista, strizza l’occhio allo stesso pubblico e fa meme di qualità,

Più volte durante la vostra istruzione vi sarete imbattuti in guide, siti e materiale vario che vi hanno consigliato cosa studiare, come cercare lavoro, come farvi raggiungere dalle aziende. La maggior parte di questi contenuti vengono da organizzazioni o istituzioni che hanno come unico interesse quello di rendere appetibile il lavoratore e collegarlo ad aziende che stanno cercando personale. Talvolta provengono dalle aziende stesse, desiderose di incanalare quanta più forza lavoro acerba verso i propri uffici.

Nella mia esperienza però i laureandi hanno bisogno di altro. La logica malata per cui “in Italia è pieno di disoccupati, ringraziate che voi programmatori trovate facilmente lavoro” fa anche un po' schifo. Facciamo finta che non si debba prendere a schiaffi chi la propugna e passiamo oltre, cercando di ambire a qualcosa di più.

Ho quindi deciso di creare una guida, da lavoratore per futuri lavoratori, per raccogliere in una guida tutte queste esperienze, tutte queste storie, tutti i consigli dati e ricevuti. La speranza è di raggiungere un pubblico ampio col passaparola e salvare qualche anima innocente dalla dannazione di una vita fatta di PHP e gestionali in Java.

A chi è rivolta questa guida

Nel titolo ho specificato “laureandi” e non neo-laureati. In realtà questa guida va bene per entrambi. Tuttavia alcuni consigli che verranno elencati in seguito andrebbero applicati il prima possibile.

La guida non fa particolare differenza tra triennali e magistrali. Idealmente siete a 6-12 mesi dalla laurea, state per scegliere lo stage e l'argomento della tesi, avete magari qualche esame tosto che avete già steccato una volta o due e in generale il ritmo di studio sta iniziando a calare perché non frequentate più a tempo pieno. Avete così un pochino di tempo extra da investire.

I pericoli

Il mondo dell'IT è pieno di insidie. Girano tanti soldi e tutti vogliono sviluppare tutto al più presto possibile. Per fare questo sono anche disposti a pagare bene, ma in cambio vogliono la vostra anima. Se riescono, se la prendono anche senza pagarvi bene. Siccome poi l'informatico medio (sopratutto quello del passato) disdegna qualunque forma di impegno politico o sociale, ci ritroviamo in un settore dove la rappresentanza sindacale è quasi inesistente e quando c'è, è inefficace.

Perciò uno dei modi per difendervi è la cultura del lavoro: saper identificare i sintomi di problemi nella vostra futura azienda, capire le meccaniche con cui questi vi danneggiano, saperne limitare l'impatto, avere un'idea chiara di ciò che è tollerabile e di ciò che non dovrebbe esserlo.

Un altro modo di difendervi, una volta capito come funziona il mercato del lavoro, è posizionarvi all'interno di questo partendo da una posizione di forza. I cambiamenti tecnologici nell'IT arrivano a ondate e creano nuove professioni o specializzazioni nelle diverse fasi di queste ondate. Una teoria generale dei cambiamenti tecnologici è decisamente oltre gli obiettivi di questa guida ma, semplificando parecchio, possiamo individuare qualche pattern da sfruttare.

In un primo tempo, quando la tecnologia è acerba e poco diffusa, si cerca un numero ristretto di persone con una forte comprensione dell'argomento e la capacità di lavorare in un'ecosistema dove non esiste nulla di pronto.

Segue una fase di espansione dove sempre più aziende adottano queste tecnologie grazie ad una maturazione degli strumenti. Tuttavia ognuno usa queste tecnologie in modo diverso e gli strumenti tendono ad essere sufficientemente generici da supportare tutti questi casi d'uso. Questo richiede un grande numero di sviluppatori software per costruire sopra a queste tecnologie.

Segue la fase di consolidamento e maturità, in cui gli strumenti sono sempre più commoditizzati e richiedono sempre meno programmatori per coprire i casi più comuni. Spesso per la customizzazione bastano persone non tecniche o programmatori poco formati. Questo permette di scalare le operazioni aziendali su un grande numero di clienti, perché i problemi sono noti, le soluzioni sono sempre le stesse e la complessità è già stata domata da altri.

Segue la fase di declino che qui ci interessa poco poiché pochi si sognano di assumere neolaureati in questa fase.

Ognuna di queste fasi ha diverse implicazioni per il lavoratore e impattano fortemente il suo potere contrattuale. In particolare la terza fase, la maturità, è quella che vorreste evitare ma è anche quella in cui avete più possibilità di ritrovarvi. Sebbene offra maggiore stabilità e richieda meno impegno individuale, espone il lavoratore a tutta una serie di ricatti e vulnerabilità in quanto facilmente sostituibile.

Il termine tecnico è “deskilling”: se la vostra azienda può permettersi di rimpiazzarvi con una persona con le stesse competenze, facilmente reperibile e col vostro stesso stipendio o inferiore, lo farà non appena gliene darete un motivo. Questo vi costringe ad accettare tutto ciò che la azienda vi impone, avendo come unica alternativa il tornare sul mercato solo per trovare posizioni offerte da aziende che operano nello stesso modo.

Il lato negativo delle prime due fasi è che per essere competitivi in quel mercato del lavoro, dovete spendere tempo in studio autonomo e letture dedicate, qualcosa che tuttavia molte persone sono giustamente non interessate a fare a prescindere dalle conseguenze.

Vediamo quindi quali sono i possibili danni concreti nel breve e nel lungo periodo.

Il crunching

Il crunching è la pratica di normalizzare ritmi di lavoro insostenibili, straordinari e weekend. Talvolta si viene ricompensati per questo lavoro extra ma più spesso non succede. Il problema non sono tanto i soldi, perché anche quando ci sono, il crunching rimane una pratica estremamente dannosa per il lavoratore e, nel lungo termine, per l'azienda.

In primis è problematica per l'equilibrio vita-lavoro, visto che se lavorate 12 ore al giorno tutti i giorni, difficilmente vi rimarrà tempo ed energie per altro. Poi è problematica a livello psicologico: la maggior parte delle persone non può sostenere questi ritmi all'infinito, portando a quello che in gergo tecnico è chiamato burnout e in linguaggio colloquiale viene chiamato “esaurimento nervoso”. Infine è problematica perché dopo 9 ore di programmazione non capite più un cazzo e scrivete codice di merda, che introdurrà facilmente debito tecnico nella vostra codebase con tutti i problemi che ne conseguono.

Le aziende spesso adottano strategie consapevoli per introdurre gradualmente i lavoratori all'idea e normalizzarla. Chiaramente se al vostro primo giorno, dopo che vi sono stati promessi ritmi rilassati, vi mettono subito su un progetto in ritardo rispetto alla pianificazione e vi costringono a stare in ufficio tutti i giorni fino alle 21, è molto probabile che vi troverete un altro lavoro senza pensarci troppo.

Discorso diverso invece è se venite introdotti all'idea gradualmente. Questo processo inizia dall'offerta di lavoro, dove spesso potete trovare frasi su orari di lavoro flessibili e capacità di lavorare sotto stress, spesso addolcite in vari modi con artifici di retorica o di marketing per renderle meno ovvie.

L'insidia del crunching è distinguere tra un'occasionale emergenza che richiede un paio di giorni di superlavoro e l'inizio del vostro indottrinamento. Il mio consiglio è di guardarvi intorno e vedere gli standard a cui sono sottoposti i vostri colleghi, ascoltare le loro lamentele e trarre le vostre conclusioni. Partite sempre dall'idea che se il vostro datore di lavoro dà per scontata la vostra disponibilità a fare straordinari, è probabilmente in malafede quando ve li chiede, perché probabilmente nella sua testa quella è la norma e voi dovete conformarvi.

Un trend che si è sviluppato nell'ultimo decennio per giustificare il crunching è l'utilizzo di vari micro-benefit e di una cultura aziendale volta ad annullare la vita esterna del lavoratore. Più popolare in America che in Italia, merita comunque una nota di attenzione: diffidate di chi parla di “ambiente familiare”, di chi parla di birrette al venerdì, di chi ha piscina, palestra e asilo in ufficio. Talvolta questi elementi sono semplicemente emulazione dello stile dei grandi campus americani senza la stessa malizia, ma più spesso sono scelte consapevoli del management per farvi spendere più tempo possibile in ufficio, spostare il vostro baricentro sociale sempre più all'interno dell'azienda e rendervi logisticamente e psicologicamente dipendenti dai benefit aziendali così da rendervi meno propensi a cambiare posto di lavoro.

La fossilizzazione

Un nemico subdolo, strisciante. Iniziate a programmare con una tecnologia non proprio recentissima, vi specializzate su una componente software, questa via via diventa sempre più matura ed importante per l'azienda e voi siete la persona più competente a cui regolarmente viene chiesto di metterci le mani. Questo occupa la quasi totalità del vostro tempo. Sempre la stessa tecnologia, sempre la stessa metodologia, sempre la stessa architettura.

Passa un anno, ne passano due, magari ne passano anche cinque. Sì, ogni tanto avete introdotto nuove librerie, rifatto un servizio con un approccio diverso, ma il cliente domanda e voi dovete consegnare. Vi ritrovate così sovraspecializzati su una tecnologia il cui mercato si è ristretto perché vetusta o perché lo stesso problema è ora risolto da software pienamente produttizzati che non richiedono continua manutenzione o customizzazione.

La vostra azienda vi sta stretta, volete cambiare per avere uno stipendio migliore, o magari andare all'estero. Dopotutto avete un profilo senior ormai. Eppure non trovate niente e quando trovate, non vi richiamano. Mentre voi eravate troppo concentrati sulle logiche aziendali e sul vostro specifico software, avete perso cambi di paradigma, cambi del mercato, nuove metodologie, rivoluzioni che hanno reso obsoleto il vostro skill set.

Ora l'unica opzione che avete è reinventarvi studiando o accettare una posizione per persone con meno seniority che probabilmente pagherà molto meno di ciò che vorreste. Per ovviare a questo problema ci si può premunire in diversi modi: studiare tecnologie, metodologie e teorie nuove, mantenersi aggiornati sull'evoluzione del vostro settore leggendo o andando alle conferenze e ascoltando come lavorano persone simili a voi. Inoltre in ambito aziendale bisogna chiedere di venir spostati su progetti diversi e quando non è possibile, ritagliarsi tempo extra per esplorare cose nuove. Se l'azienda non lo permette, mettete una data di scadenza alla vostra esperienza lavorativa: 2, 3 anni al massimo.

Il debito tecnico

Il concetto di debito tecnico non è semplicissimo da definire, men che meno da spiegare a chi non ha mai lavorato ad un progetto di sviluppo software.

Si parla di debito tecnico per raggruppare tutti quegli elementi esistenti in una codebase, in una struttura aziendale e nei suoi processi, che rallentano o rendono più dispendioso lo sviluppo e la manutenzione di un software.

In parole povere, peggiore è la qualità del tuo codice, della tua architettura e della tua organizzazione, più difficile diventerà continuare ad aggiungere feature e fixare bug, fino a che l'azienda non collasserà sotto il peso del caos incontrollato.

Ogni azienda o ogni team ha un livello di debito tecnico tollerato molto variabile. Se il business continua ad essere redditizio vuol dire che in qualche modo si è trovato un equilibrio tra costi di sviluppo ed entrate e quindi il debito tecnico è in qualche modo sotto controllo.

Tuttavia c'è una profonda differenza per il singolo programmatore: lavorare in un'azienda con basso debito tecnico significa che buona parte del vostro tempo sarà speso a sviluppare codice di qualità, fare design di nuove feature, fare ottimizzazioni. Se invece un'azienda lavora con un debito tecnico maggiore, frazioni via via crescenti del vostro tempo saranno spese a contenere il debito tecnico stesso o ad aggirarlo.

Questo si traduce nella pratica in lavoro manuale e tedioso, si traduce nell'invio di infinite mail per sopperire alla mancanza di documentazione, si traduce in riscrivere parti di codice incomprensibile, se siete fortunati. Se non lo siete, si traduce nello scrivere codice di bassa qualità per cercare di andar d'accordo con i moduli che sono troppo importanti e complessi per essere riscritti e troppo malfatti per offrire interfacce sensate.

Il risultato sarà che il vostro lavoro sarà molto più frustrante e il vostro skill set verrà irrimediabilmente contagiato dal debito tecnico: tre anni di esperienza a cercare di far quadrare file di configurazione e fare deploy a mano non valgono come tre anni di esperienza con un team di veterani in cui potrete concentrarvi esclusivamente nel produrre codice di alta qualità.

I vostri nemici

Quali sono le aziende da cui dovete guardarvi? Tutte quelle che hanno la struttura e i mezzi per incorporare grandi quantità di manodopera poco qualificata e inesperta, o tutte quelle abbastanza disperate da assumere un neolaureando a fare il lavoro di una persona esperta.

Tracciamo tre profili-tipo giusto per capire come appaia il peggio che può capitarvi.

Il tritacarne

Il Tritacarne è quell'azienda di grandi o grandissime dimensioni, multinazionale o locale, che pratica body rental in maniera sistematica. Cos'è il body rental? Approfondimento. Fanno principalmente consulenza ad aziende non-tech di grandi dimensioni o talvolta lavorano con istituzioni pubbliche.

Perché volete evitarla?

  • Ritmi elevati
  • Poco rispetto per il lavoratore
  • Formazione sì, ma spesso di bassa qualità
  • Stipendi relativamente bassi
  • Stack tecnologici e metodologie spesso antiquati

La startup campata in aria

AAA Cercasi: Blockchain developer per applicazioni di Machine Learning in Go. Anche senza esperienza.

Spesso le startup nascono da persone senza competenze tecniche e sebbene esistano aziende che forniscano consulenza tecnica per lo sviluppo delle loro idee, molte startup preferiscono formare un team tecnico interno sin dall'inizio. A seconda delle competenze dei primi membri del team, dei finanziamenti disponibili e della comprensione delle problematiche tecniche da parte dei founder, lavorare per queste realtà può spaziare dall'esperienza illuminante e formativa, fino ad una battaglia contro i mulini a vento in cui, dopo due anni di sviluppo totalmente inconcludenti, finiscono i fondi e i programmatori vengono mandati a casa.

Perché volete evitarle?

  • Poca stabilità
  • In assenza di figure senior, potreste finire ad avere responsabilità spropositate rispetto alla vostra esperienza
  • Mancanza di cultura tecnica
  • Processi di sviluppo immaturi
  • Stipendi bassi o pagamento in stock options.

L'azienda familiare

Beppe, 54 anni, indossa un golfino nero e due paia di occhiali: un paio normali e un paio da lettura. Si è laureato in Ingegneria Elettronica 25 anni fa e ha scritto un po' di C e un po' di FORTRAN. Legge Wired, compra ogni prodotto Apple e per questo si sente al passo coi tempi.

Di giorno gestisce un'azienda di consulenza che realizza gestionali custom, siti aziendali e se gli gira, fornisce pure un pacchetto di marketing, coi volantini fatti con le stock photo coi watermark rimossi da suo figlio, neodiplomato all'ITIS e subito assunto.

I suoi clienti: PMI e istituzioni locali.

Perché volete evitarla?

  • Stack tecnologici con evoluzione lenta o nulla (né l'azienda né i loro clienti hanno alcun incentivo ad innovare)
  • Formazione minima
  • Pessima cultura tecnica
  • Spesso poco rispetto del lavoratore

Le soluzioni

Finora abbiamo parlato esclusivamente di cosa evitare e di come orientarvi, ma cosa potete fare sin da subito per rafforzare la vostra posizione?

Studio autonomo

Lo studio continuo è una realtà di numerose professioni. Questo è ancor più vero per gli informatici e i programmatori. Ignorare questo aspetto significa essere sempre un passo indietro a chi non lo fa. Potete scegliere di non investire tempo extra e imparare solo ciò che l'università o il vostro lavoro vi insegnano, ma non è quello che una buona fetta delle persone fa. Queste persone avranno sempre un CV più robusto del vostro.

La quantità di studio ottimale è molto soggettiva e vi consiglio di evitare eccessi che minaccino il vostro equilibrio vita-lavoro. Tuttavia spesso investimenti molto limitati in termini di tempo portano a risultati decisamente migliori rispetto ad una passività totale.

Cosa studiare quindi? Il mio consiglio è di studiare ciò che vi interessa di più tra le nuove tecnologie e i nuovi strumenti che emergono in un determinato periodo o in un determinato ecosistema. La fortuna di molti è che più lavorano su uno stesso problema o su uno stesso strumento/linguaggio/framework più ci si appassionano. Lo studio di numerosi argomenti che prima sarebbero stati troppo di nicchia per essere interessanti, diventano improvvisamente qualcosa in cui spendere con entusiasmo decine di ore. Non è un meccanismo che funziona per tutti, ma quando funziona spesso permette di collegare gli argomenti di studio in maniera organica. Questo chiaramente aumenta le probabilità che quanto appreso sia spendibile anche in ambito lavorativo.

Capire l'Agile

La metodologia Agile è un modo di sviluppare software ormai abbastanza comune e spesso insegnato anche in università. L'agile però è anche un modo con cui gli informatici si sono storicamente difesi dal controllo da parte dei manager e si sono ricavati uno spazio per lavorare con più autonomia e secondo i propri termini.

Chiaramente nel corso del tempo questa indipendenza è stata attaccata in tutti i modi e il risultato è stato la nascita di metodologie alternative o di versioni storpiate dell'Agile. Capire cos'è l'Agile è importante. L'Agile è vostra amica e va promossa e difesa per il vostro stesso interesse.

Colloqui

Troppo spesso ai neolaureati viene spiegato come rispondere alle domande degli intervistatori ma raramente viene spiegato che le domande che voi ponete a loro sono altrettanto importanti.

Bombardateli di domande, arrivate con un taccuino pieno di domande. Giudicate loro come loro giudicano voi. Se cercano persone competenti guadagnerete rispetto perché mostrerete che siete consapevoli della vostra professionalità e non ragazzini allo sbaraglio. Se invece cercano carne da cannone da mettere su una sedia del cliente, queste domande li metteranno in difficoltà e sarete in grado di tutelarvi.

Cosa chiedere quindi? Su questo tema si potrebbe scrivere un libro. Mi limito a darvi un po' di indicazioni generali. In primis chiedete ad amici o persone che lavorano nello stesso ruolo o campo in cui volete lavorare voi quali siano le migliori domande da porre e i dettagli a cui stare attenti. Ogni settore ha tratti differenti e in questo caso scendere nello specifico paga.

Però alcune domande generali possono, ad esempio, essere: come è organizzato il vostro workflow? Come sono composti i Team? Come si viene assegnati ad un progetto/divisione/team e come si ruota, se si ruota? Come testate il codice? Come viene deployato? Che software usate per coordinarvi (Jira, Confluence, Trello ecc ecc)? Avete meeting regolari (settimanali, mensili) e se sì, quali? Come gestite il lavoro da remoto? Come gestite la negoziazione delle ferie?

Networking

Networking è tante cose. Networking è conoscere persone. Networking è conoscere aziende. Networking è conoscere comunità. Networking è trovare lavoro con logiche che si muovono al di sotto del mercato e nella dimensione delle relazioni umane.

Se siete studenti e contate di lavorare nella città dove state studiando, potete e dovete iniziare ancora prima di laurearvi. Andate ai meetup, andate alle conferenze (che per gli studenti spesso sono scontate), approcciate persone, aggiungete profili su Linkedin, scoprite se ci sono comunità attorno alle cose che volete fare, chiedete ai vostri professori cosa succede in giro, buttatevi ad organizzare cose ogni volta che potete. Le opportunità verranno fuori da sole.

Letture

Prima abbiamo menzionato come la cultura sia un potente strumento di difesa. Il semplice studio tecnico vi aiuterà ma senza una comprensione più ampia del mondo in cui siete immersi, sarete sempre alla mercé degli eventi. Inoltre, come succede in ogni comunità, esiste uno strato di cultura condivisa dagli informatici necessaria per integrarsi veramente. Se non cogliete i riferimenti ad XKCD o al GEB potreste venire giudicati come esterni e trattati come tali.

Leggete HackerNews, Lobste.rs, reddit, Slashdot. Leggete i grandi classici: “Hackers & Painters”, “The Hacker Manifesto”, “Godel Escher e Bach”. Leggete cose nuove. Leggete notizie. Leggete critiche che arrivano da altri campi. Leggete di argomenti correlati alla tecnologia. Su questo tema spammo senza vergogna la mia reading list su tecnologia, società, politica ed etica.

Comunità

Abbiamo già parlato di comunità quando abbiamo parlato di networking, ma il valore delle comunità in ambito tecnologico va ben oltre la mera creazione di contatti. Online e offline esistono innumerevoli occasioni di aggregazione con i più svariati obiettivi. Trovare un gruppo con cui condividere un interesse o un obiettivo può aiutarvi a crescere su molti fronti.

Il consiglio più ovvio è quello di entrare in un progetto open-source e contribuire. Apprenderete a lavorare in un team, acquisirete competenze tecniche, imparerete i fondamenti politici dietro a questa enorme impresa collettiva e come navigare questa enorme e complessa comunità globale.

Ma non esiste solo questo: esistono innumerevoli chat, gruppi e forum dove confrontarsi con persone con background ed esperienze diverse dai vostri, opportunità che senza l'uso di internet vi sarebbero spesso precluse. Questo vi aiuterà, tra le altre cose, a mettere in prospettiva l'azienda in cui lavorate, paragonandola a ciò che è l'esperienza quotidiana di altri lavoratori. Cercate questi gruppi e unitevici: Reddit, Telegram, Discord, Facebook e quasi ogni altra piattaforma offre spazi di discussione per informatici.

Infine esiste tutto il mondo dell'attivismo: sia con obiettivi politici, sia come forma di volontariato, innumerevoli programmatori militano in organizzazioni che possono fare uso delle loro competenze. Queste esperienze sono particolarmente formative perché il contatto con problemi reali è spesso molto più diretto che nel mondo del lavoro. Tra il bisogno dell'utente e l'attività dello sviluppatore si frappongono gli interessi di vari intermediari che porteranno la vostra soluzione in direzioni molto diverse da quelle ideali. Nel mondo dell'attivismo invece questi intermediari spesso non sono presenti e vi sarà consentito di concentrarvi su ciò che le persone hanno bisogno.

Conclusioni

Spero di aver toccato tutti i punti importanti e avervi fornito un'intuizione di come sia possibile resistere a tutte le pessime pratiche e i tentativi di sfruttamento che ammorbano il mercato del lavoro odierno, in particolare quello italiano e in particolare quello dell'IT.

L'ultimo consiglio che vi do è di discutere tutti questi argomenti con le persone che vi circondano: fate gruppo, cercate di assorbire da loro ciò che hanno imparato per difendersi. E quando trovate uno spunto nuovo o avete un'epifania, scrivete, condividete, criticate, create.

Se qualcosa non funziona nella vostra azienda e i manager non sono disposti ad intervenire, parlatene coi colleghi. Organizzatevi. E se qualche collega fa proposte su temi che assomigliano a quelli trattati in questa guida, supportatelo.

Ah, e ovviamente fate girare questa guida.

Enter your email to subscribe to updates.