chobeat

Simone Robutti, ML Engineer, Berlin. Follow me on fediverse @chobeat@write.as

Questo articolo suonerà come una banalità per alcuni e illuminante per altri, ma visto che una buona fetta dei programmatori che ho incontrato nella mia carriera probabilmente ricadrebbe nella seconda categoria, ho pensato di buttare giù due righe per sottolineare un concetto tanto fondamentale quanto trascurato.

Programmatori, sistemisti, ma anche ogni professionista che lavora col computer ha visto negli ultimi 40 anni una completa trasformazione delle interfacce grafiche, con una progressiva semplificazione e razionalizzazione degli strumenti messi a disposizione. Tuttavia negli strumenti complessi come una shell, un'IDE ma anche un editor come può essere Photoshop, la semplificazione si scontra regolarmente col numero elevato di azioni possibili in ogni dato momento. Perciò in questo contesto, semplificare, in passato così come ora, significa mettere un'azione dove gli utenti esperti se lo aspettano.

E gli utenti inesperti? Gli utenti inesperti arrivano con un bagaglio di esperienze e aspettative creato dalle interfacce di strumenti più semplici, dove la fase esplorativa raramente richiede la consultazione di un manuale o di un tutorial. Certo, sanno che da qualche parte ci sarà uno strumento di customizzazione, delle opzioni, magari un pannello per plugin ed estensioni varie.

Tuttavia gli strumenti per professionisti seguono logiche diverse e nel caso degli sviluppatori, queste logiche sono dettate spesso e volentieri dalle aspettative ed opinioni delle stesse persone che sviluppano gli strumenti in questione che sono sviluppatori tanto quanto utenti. La shortcut da tastiera (o vocale, se siete in quell'ambiente lì, dove sto lentamente entrando anche io) è la regina di queste interfacce, perché permette di registrare nella memoria muscolare delle mani una precisa azione, minimizzando il tempo, le battute e lo sforzo mentale necessario per eseguirla.

Il risultato è che l'utenza va a due velocità: quelli che sanno come esplorare i propri strumenti utilizzeranno lo strumento in maniera molto diversa e più efficiente rispetto a chi non sa farlo. Raramente esiste una via di mezzo: una volta appresa la metodologia per memorizzare a lungo termine un grande numero di shortcut, difficilmente ci si ferma.

A questo corrisponde una netta divisione tra chi sa usare le proprie interfacce e chi no: tra voi non saranno pochi quelli che, in ufficio, si mordono le labbra, le dita e altre varie appendici per non sbottare alla lentezza di un collega che torna ad inizio riga usando le frecce. Se non vi è mai successo, probabilmente quel collega siete voi.

Perché è importante imparare le shortcut? Nella mia esperienza, per due motivi: la prima è che riducono il carico mentale per eseguire una data azione, e la seconda è perché vi rendono più efficienti nel compierla. Partiamo da un esempio pratico: la shell. Molti programmatori ci spendono una porzione consistente della propria giornata lavorativa. I sistemisti probabilmente anche di più. Pensiamo ad un caso banale e forse un po' estremo: un junior che non sa usare in scioltezza l'auto-complete. Quante battute spreca ogni giorno? Centinaia? Forse migliaia? E quanto tempo perde a cercare il nome esatto di un file invece che lasciarlo fare alla macchina? Quanta energia mentale? Tutto quel tempo e quell'energia potrebbero esser spese in modo molto migliore se questa persona sapesse premere TAB al momento giusto. Per esempio potrebbero essere spese ad imparare un'altra shortcut.

Ora pensate a quante altre decine o centinaia di azioni ripetitive compiamo ogni giorno per cui esiste una shortcut. Pensate al tempo e all'energia che potreste risparmiare investendo nel padroneggiare i vostri strumenti o nello scoprirne di più potenti. Il tempo che nell'arco della vostra vita potete passare davanti alla tastiera non è infinito, anzi è piuttosto scarso rispetto all'immensità delle cose che ci sarebbero da fare. Imparare a spenderlo meglio vuol dire diventare programmatori migliori, sia al lavoro che, sopratutto, fuori.

Ora, sperando di avervi convinto dell'importanza di razionalizzare i vostri click, come fare per migliorare la vostra situazione? Vediamo di elencare alcuni punti fondamentali per stabilire una spirale virtuosa.

Prima di tutto, la prima cosa che si dice quando si tocca questo tema è che impararsi tante shortcut insieme non serve a niente. Il 90% le avrete dimenticate dopo pochi minuti. Imparatene una ogni due giorni, non di più. E per quei due giorni praticatela attivamente, costruite memoria muscolare, date un contesto alla shortcut così che diventi naturale richiamarla alla memoria quando serve.

Poi scegliete con cura le shortcut da imparare. Partite dalle cose di base: se non usate i tasti HOME e END, oppure il muoversi con ctrl+arrow, partite da quello. Imparate le shortcut del Desktop Environment e del browser. Poi passate alla shell e agli IDE. Il modo migliore per scegliere è, a metà giornata, ripercorrere all'indietro quello che avete fatto e valutare quella che secondo voi è l'azione più comune che avete fatto e che vi ha richiesto di spostare la mano sul mouse o che vi ha richiesto più di tre click.

Quando avrete fatto questo per un po' di volte, probabilmente sarete senza idee. Allora e solo allora avrà senso guardarsi le liste di shortcut dei software che utilizzate per concettualizzare azioni che per voi non erano così ovvie da inquadrare come una “cosa sola”. Esempio stupido: commentare un blocco di codice automaticamente oppure estrarre un valore in una variabile.

Fatelo con costanza e vedrete presto un notevole aumento della produttività. Quando sentirete di aver toccato un plateau in cui le shortcut che imparate finite per non utilizzarle con regolarità perché troppo di nicchia, allora il mio consiglio è di iniziare a guardarvi video di power user che utilizzano i vostri stessi strumenti oppure di confrontarvi con i colleghi che sapete essere sul vostro stesso percorso.

Io ho avuto questa realizzazione relativamente tardi durante la mia carriera universitaria, ma fortunamente sufficientemente presto da risparmiarmi chissà quante ore a battere sulla tastiera per niente. Il vostro tempo è prezioso e le vostra dita anche, così come quelle dei vostri colleghi. Se, una volta imparati un po' di trucchi, vedete un collega che segue gli stessi pattern che una volta avevate voi, indicategli GENTILMENTE i punti che ho toccato in questo articolo.

Che io lo so che poi voi andate lì dopo aver imparato a fare il multi-cursor in Intellij o Sublime e gli fate: “oh bro, guarda che mad trick, bro, te non lo sai fare bro, ke sfiguz xD”. Questo è un buon modo per annichilire qualsiasi volontà di spostarsi su un binario diverso. La padronanza degli strumenti nell'IT è spesso e volentieri causa di comportamenti e attitudini tossiche verso i neofiti. Se non sapete come affrontare la questione, linkategli direttamente il mio articolo.

pink cog

24 Agosto, Berlino. Apprendo e ricondivido con gioia la notizia che la principale forza politica extra-parlamentare italiana ha deciso di scendere a 0 layer e costituirsi in forma solida di partito politico alle prossime elezioni.

Due settimane fa è caduto il Governo Conte e sono state indette le elezioni, a cui il Partito Accelerazionista prenderà parte dopo il pro-forma della raccolta firme. Il nome è ancora provvisorio e si deciderà a breve se chiamarlo Partito Accelerazionista Esplicito, Partito Accelerazionista a 0 layer, Partito Accelerazionista per l'abolizione del lavoro, del gender e del tempo. L'ultimo mi piace, ma è un po' verboso quindi lo terrei solo come nome ufficiale ma con un semplice “Partito Accelerazionista” nel logo, con un bell'ingranaggio rosa nel centro. Considero anche suggestiva di chiamarlo “Partito Accelerazionista di Bibbiano” per guadagnare visibilità politica tramite il principale punto del programma politico della Lega per le elezioni 2020.

Ho già preso contatti con i coordinatori e a breve annuncerò formalmente la mia candidatura. Spero di portare nel Partito le mie competenze in fatto di robottini e mascinlerni e la mia ormai quinquennale esperienza nel venir pagato per lavorare il meno possibile, perché va bene il progressismo ma bisogna anche riscoprire i valori tradizionali dell'Italianità di cui oggi ci si vergogna per colpa del globalismo: il riposo, la pigrizia e la resistenza al sistema attraverso un complicato sistema di pisolini e cartellini timbrati dai colleghi.

Inoltre voglio portare la mia passione per le battaglie del nuovo millennio che l'Italia dovrà affrontare con senso di responsabilità e abnegazione:

  • reddito di esistenza e divano ecosostenibile di cittadinanza per tutti,
  • automazione della creazione dei gender per sostenere un ritmo MINIMO di 40 nuovi gender a settimana su scala nazionale
  • abolizione della depressione per mezzo dell'abolizione del capitalismo. Per non far cadere in depressione lavoristi e liberisti, istituzione di strutture di recupero apposite dove potranno scambiarsi soldi finti in finti uffici, sotto il controllo di personale qualificato.
  • panna vietata nella carbonara che mannaggia a voi gli intolleranti al lattosio li avvelenate a tradimento

Spero condividiate il mio entusiasmo e spero di trovarvi numerosi alle urne a supportarmi. Ricordatevi che non esiste alternativa. Nel mentre ci vediamo su Twitter dove inizierò a postare foto dei miei pasti per andare a conquistare i ¾ dell'elettorato di Salvini. Bacioni e buon riposo.

Ogni programmatrice e ogni programmatore italiano sa che sta venendo truffato nel momento in cui si siede alla scrivania ogni mattina e apre il suo laptop. Lo sa perché ha internet e vede che all'estero funziona diversamente. Nelle serie TV, nei film, nei blog vede gli stipendi d'oro, le tecnologie moderne, le relazioni di potere diverse tra programmatori e manager e vede che, pur facendo lo stesso lavoro, a lui tutti questi privilegi non sono concessi.

Più di altre categorie professionali, tutte egualmente defraudate del proprio tempo, della propria creatività, della propria autonomia professionale e individuale in nome di qualche numerello sulla busta paga del proprio capo, il programmatore italiano è consapevole di questa cosa perché vive costantemente immerso nella contraddizione tra l'internet che racconta gli informatici come la nuova élite di ragazzotti con troppi soldi e troppo potere e la sua quotidianità, fatta di caffè in ufficio alle 8 del mattino, pacchetto di cracker alle 7 di sera e stronzate fatte e disfatte per accontentare un manager che un computer non lo sa neanche accendere.

Non è tutto rose e fiori neanche all'estero, ma quello che ci arriva è che i meno privilegiati tra i programmatori americani, tedeschi, inglesi, cechi, spagnoli, vivono una situazione di maggior privilegio della maggior parte dei programmatori italiani.

E se non siete programmatori ma database administrator, sistemisti, web designer o ancor peggio copywriter, SEO, content moderator, se fate data entry, data cleaning, help desk? Se siete una delle tante categorie che non vengono nemmeno raccontate?

C'è chi si accontenta: in fondo in Italia tutto va male e avere un contratto a tempo indeterminato è già un privilegio. C'è chi nega, facendo conti improbabili sul costo della vita o considerazioni sul meteo e sul cibo in altre nazioni. C'è chi si incazza e studia per capire il perché di questa differenza, che non è semplicemente imputabile alla semplice condizione italiana visto che tante nazioni meno sviluppate hanno un settore tecnologico molto più florido del nostro.

Ecco quindi l'illuminazione: un sindacato. Un sindacato di informatici. Bell'idea. Peccato che ci siano già, e non funzionino se non in piccole realtà. La UIL ci prova e mette una pezza nelle situazioni di consulenza più becera, con gente alle scrivanie trattate come polli in batteria. Però sono irrilevanti politicamente e sindacalmente: il tech worker italiano si sente solo e, giustamente, non crede più nel Sindacato. Senza fini analisi economico-politiche che pur dovrebbero essere digerite da ogni lavoratore, l'italiano è arrivato a sentirsi tradito da quelli che sono i sindacati tradizionali, ormai rigidi zombie che non hanno saputo adattarsi ad un presente rapido e fluido dove le relazioni di potere nel mondo del lavoro cambiano in maniera frenetica e sono difficile da imbrigliare in categorie rigide.

La soluzione deve quindi essere diversa. Vi presento quindi Tech Worker Coalition (TWC), la scintilla che sta accendendo diversi fuochi sotto al culo di Google, Amazon, Microsoft e molti altri giganti del tech. Per avere un'idea di cosa hanno ottenuto, vi rimando ad un mio vecchio post che ne parla. Nel mentre sono successe tante altre cose e ci sono state tante altre azioni su larga scala. Una ricerca su DuckDuckGo vi darà tutti i risultati che volete.

Tuttavia non su tutte queste azioni troverete il cappello della TWC. Perché? Perché non è un sindacato e non è un'organizzazione. Una struttura del genere rischierebbe di far ripetere ai tech worker gli stessi errori di chi è venuto prima, creando un sindacato zombie col machine learning e la blockchain. TWC è una meta-organizzazione: è un gruppo di persone che aiuta le altre ad organizzarsi nei propri termini, con le proprie idee. Non è certo una cosa nuova, sopratutto in Italia, ma è un'idea che va rispolverata e adattata al contesto del lavoro tecnologico con nuove parole e consci del contesto culturale peculiare dell'IT. I rapporti di potere tra sviluppatore e manager non sono gli stessi che esistevano in una fabbrica: si potrebbe argomentare che nel nostro caso siano molto più vantaggiosi per i lavoratori e che uno sviluppatore oggi abbia più leva di 1000 operai ieri. Non è veramente importante ora, perché se non se ne prende coscienza, questa leva è inesistente.

Abbiamo detto che l'informatico in USA se la spassa, quindi perché TWC sta crescendo così tanto se tutto funziona? Beh, innanzitutto perché non tutti gli informatici campano come ci viene raccontato nella serie Silicon Valley. Quelli sono un'élite che non rappresenta le condizioni del programmatore medio neanche in USA. Poi perché buona parte di questi, sopratutto quelli con ritmi di lavoro rilassati, hanno tempo di leggere e capire le implicazioni di quello che producono e si sta sviluppando la consapevolezza che molti dei prodotti tecnologici che ci vengono spacciati come progresso, stanno avendo effetti distruttivi sull'intera società. Non a tutti questa cosa sta bene, non tutti sono apposto con la coscienza sporca e tra licenziarsi come singoli e combattere come lavoratori per far cambiare strada all'azienda, scelgono la seconda. Infine TWC funziona perché non si rivolge solo ad informatici. Anzi, tutt'altro. Nella mia spiegazione li ho messi al centro perché conosco il mio pubblico, ma la TWC è per ogni persona coinvolta nello sviluppo tecnologico.

L'idea è di mettere insieme chi sviluppa software, chi lo mantiene e chi pulisce i cessi per queste persone. Perché la distinzione tra queste categorie esiste solo fintanto che non si trova un modo per mettere 10 immigrati ricattabili e poco istruiti a fare il lavoro di un singolo programmatore consapevole e riottoso. Non è uno scenario che la tecnologia corrente sembra delineare nel breve, ma questa fede nell'impossibilità di semplificare il lavoro intellettuale è l'unica cosa che si frappone tra il programmatore e il declassamento a bassa manovalanza. Declassamento che prima o poi arriva sempre, se la storia è una buona maestra. Su questo la TWC arriva ad una semplice conclusione: costruire solidarietà tra tutti i lavoratori tecnologici è l'unico modo di difendere i programmatori, migliorare le condizioni lavorative di chi fa le pulizie, chi serve i caffè, chi fa data entry in un cubicolo, chi deve moderare ore di video su Facebook di gente che sgozza bambini e picchia animali. Motivazioni diverse, realtà diverse, obiettivi comuni.

La proposta: portare la TWC in Italia e mobilitare gli informatici italiani. Prima di tutto contro la cultura del lavoro tossica e i rapporti salariali che imperano in Italia e successivamente verso battaglie condivise con quelle dei lavoratori internazionali di cui abbiamo appena parlato. Come fare? Iniziare è semplice: la TWC è un'organizzazione pensata per aiutare le persone ad organizzarsi, quindi aprire un nuovo “Capitolo” è un'operazione piuttosto semplice se c'è iniziativa e voglia di fare. Io personalmente sono coinvolto nell'organizzazione del capitolo Berlinese che ha aperto da pochissimo e ha già iniziato ad organizzare numerosi eventi e attività con molto più entusiasmo e partecipazione (anche in termini di numeri) di quella che mi sarei aspettato.

Cosa vuol dire nel concreto? Vuol dire organizzare meeting regolari che coinvolgano lavoratori tecnologici di ogni estrazione e background culturale. Vuol dire organizzare gruppi di lavoro per problemi specifici: diritti dei lavoratori dipendenti, freelancer, consulenti e body rental, abusi psicologici e mobbing, molestie sessuali, discriminazioni di genere e razza e ogni altro tema verso cui la comunità dimostra interesse. Vuol dire organizzare azioni più dirette: proteste, banchetti o altre azioni più radicali. Vuol dire organizzare gruppi di studio, tecnici ma sopratutto non tecnici, per imparare a difendersi, organizzarsi e capire il perché della situazione corrente. Vuol dire sopratutto mettere in contatto persone: esistono tantissime realtà che non vedrebbero l'ora di interagire con una comunità di questo tipo. Avvocati del lavoro, operatori culturali in ambito tech, altri sindacati più tradizionali. Il terreno è più che fertile, manca solo il seme.

Siete interessati? Siete motivati? Qui a Berlino abbiamo risorse e tempo da investire per supportarvi. In USA ci sono altre persone disponibili.

Contattatemi su:

Telegram: @SimoneRobutti Twitter: @SimoneRobutti Facebook: Simone Robutti

Sito della Tech Worker Coalition

Warning: in questo articolo dico la parolaccia con la “E” parecchie volte. Siete avvisati.

Class war has continued to be fought, but only byone side: the wealthy. ci dice Mark Fisher in Capitalist Realism commentando il lavoro di David Harvey. Una sensazione condivisa da chiunque abbia un minimo di prospettiva storica su quanto è successo dal '68 ad oggi.

Sensazione che diventa improvvisamente soverchiante per chiunque usi abitualmente LinkedIn come piattaforma social e non solo come sito di annunci di lavoro. Considerato il “social network del business”, LinkedIn impone passivamente una forma di controllo sistemico agli utenti: per la paura di esser visti dal proprio datore di lavoro (attuale o futuro) ad esprimere opinioni controverse, ci si autocensura. Si riproduce online la stessa attitudine che si ha sul posto di lavoro. Nulla di stupefacente: ogni lavoratore, sopratutto se qualificato, vuole evitare di rovinarsi la reputazione e mettere a repentaglio le sue possibilità di non finire sotto un ponte a bere Tavernello alle undici del mattino.

Questa forma di controllo viene messa regolarmente in discussione da una piccola e colorita minoranza di utenti, ben connessi e spesso impiegati in lavori qualificati o di responsabilità, che si permette di postare immagini di Mussolini, Padre Pio o altre figure più o meno nazional-popolari con un grado variabile di accettabilità sociale. Vi invito a fare un safari su LinkedIn cercando parole chiave collegate. Non è però questo ciò che ci interessa oggi.

Vorrei invece invitarvi a riflettere su come questa attitudine, replicata su scala globale in un social network con centinaia di milioni di utenti, sia andata a creare dinamiche di circolazione dell'informazione con tratti peculiari. Questi tratti hanno favorito la diffusione esclusiva delle forme ideologiche consone all'ambito lavorativo, che nell'Occidente del 2019 si traduce nell'egemonia neoliberista con le sue narrative sulla natura del lavoro e dell'imprenditoria, la sua prospettiva predatoria dell'industria sulla società, la giustificazione di qualsiasi bruttura in nome del profitto, ma tutto solo se mascherato dalla giusta dose di buzzword e sorrisi.

Il “capitalismo col sorriso” su LinkedIn non deve confrontarsi con nient'altro: non è egemonico, è totalizzante. E il sorriso è quello forzato delle stock photo. Grandi pacche sulle spalle da parte di tutti i partecipanti e parole di incoraggiamento per progetti che sembrano partoriti dalla mente di un fumettista poco creativo nell'immaginarsi il super-villain di turno.

Perché questo ci interessa? Ci interessa perché, tesi mia, LinkedIn è il punto di accesso a quella classe che nel nostro sistema economico, attua nella pratica i desideri del Capitale, il clero che manda avanti questo “Stalinismo di Mercato”, ripetendo rituali improduttivi per tenersi eternamente occupati e soddisfare necessità simboliche create dal Capitale per riprodursi e giustificarsi. Un taglio trasversale tra la classe manageriale, i lavoratori della conoscenza, i piccoli imprenditori e i professionisti di settore, tutti asserviti e operosi nel produrre burocrazia per sé stessi e per gli altri. Queste persone su Linkedin discutono, si formano opinioni e sono immerse in una echo chamber enorme che le spinge a rinforzare gli elementi di sperpero materiale e mentale delle proprie attività lavorative, così come quelli autodistruttivi verso sé stessi.

LinkedIn permette di porre loro domande e mettere in dubbio queste narrative di fronte ai diretti interessati, quelli che materialmente spostano capitali, redigono documenti, fanno pressioni politiche, investono o sviluppano.

Le persone qui descritte sono, a mio parere, un perno necessario all'egemonia e al capitale per riprodursi e sono al tempo stesso quelle più profondamente e direttamente immerse nell'ideologia neoliberista. Una middle-middle class, a metà strada tra i “ricchi” che dall'egemonia traggono profitto e la middle-class che il neoliberismo vuole eliminare.

Ok, ho abbozzato una descrizione un po' fumosa di una specifica sotto-categoria sociale. Ma cosa ce ne facciamo di questa informazione? Che spunti ci può dare concettualizzare l'esistenza di questa oasi incontaminata? Beh, ho detto la parola “egemonia” fin troppe volte in così poche righe e non ho abbastanza qualifiche o credibilità per dirla ancora. E però la dico lo stesso: portare la battaglia per l'egemonia su LinkedIn appare, a mio parere, una strategia tanto ambiziosa quanto necessaria per catturare una parte di popolazione in una posizione chiave nella società moderna e totalmente alienata dalla critica e dal malcontento. LinkedIn va incluso al pari se non più di Facebook nelle strategie di comunicazione della Sinistra e non ignorato come un feudo della classe manageriale o ancor peggio, ridotto ad un sito per cercare o offrire lavoro.

Nella mia personale esperienza, andare all'estero e avere datori di lavoro incapaci di leggere l'Italiano e probabilmente poco propensi ad usare un traduttore automatico per giudicare le mie opinioni online, mi ha liberato dal controllo psicologico descritto all'inizio dell'articolo. Ho quindi iniziato, in maniera spontanea, a tirare bombe in thread relativi alla tecnologia o al mondo del lavoro, dove l'attitudine diffusa era di autocompiacimento e forzato ottimismo, mettendo in discussione i presupposti e la visione del mondo dell'articolo o del commentatore di turno. Il pattern, osservato più volte, è stato che questi interventi hanno attirato molti più like del post stesso o degli altri commenti, talvolta anche stimolando qualche commento di supporto. Forte è la percezione che ci sia una frazione silente dell'utenza che non vuole esporsi o che non ha le parole per elaborare il suo dissenso. Anche qui, niente che non si sia già visto altrove.

Tutta quest'energia, che su Facebook si esprime in una polarizzazione estrema delle posizioni con una fondamentale impossibilità di dibattito, in LinkedIn rimane repressa, potenziale. Il mio invito è a prendere consapevolezza di questa energia, perché probabilmente se ne potrebbe trarre molto di utile e portare cambiamento in contesti sensibili che, ad oggi, non sembrano vaccinati contro l'esposizione a posizioni contro-egemoniche.

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

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).

Enter your email to subscribe to updates.