Nel 1930, John Maynard Keynes predisse che avremmo avuto una settimana lavorativa di 15 ore entro la fine del secolo. È chiaro che il grande economista ha sbagliato qualcosa.
Benvenuti nell’era dei lavori di merda, per dirla con l’antropologo David Graeber. Dagli anni ’30 ci sono industrie totalmente nuove, che non aggiungono necessariamente valore alle nostre vite. Graeber probabilmente definirebbe cazzate la maggior parte del lavoro degli sviluppatori di software.
Non condivido l’opinione di Graeber, specie in tema di software. Ma tocca un punto interessante: poiché sempre più processi sono automatizzati, la maggior parte dei lavori a un certo punto diventa obsoleta. Secondo una stima, il 45% di tutti i lavori potrebbe essere automatizzato utilizzando la tecnologia attuale. E col tempo, probabilmente sarà così.
Tempi duri (anche) per gli sviluppatori di software?
Nel campo dello sviluppo del software potete vederlo accadere in tempo reale: da tempo sono spuntati strumenti di automazione. E questa è solo una delle tante aree in cui le parti iterative che richiedono molto tempo sono state automatizzate (un altro campo è il design, ad esempio).
Questo ci porta all’inevitabile domanda: gli sviluppatori di software stanno diventando obsoleti? Se sempre più macchine possono scrivere codice per se stesse, a che servono gli umani?
Dalla progettazione della logica alla progettazione delle menti
Gli sviluppatori di software sono veri e propri costruttori. Costruiscono collegamenti logici, algoritmi, programmi, progetti e altro ancora. Differenze rispetto ai costruttori edili, che costruiscono cose fisiche? Gli sviluppatori di software costruiscono cose logiche.
Con l’ascesa dell’intelligenza artificiale, però, c’è un cambio di paradigma. Gli sviluppatori non stanno più progettando collegamenti logici. Stanno addestrando modelli sull’euristica di questi collegamenti logici. In pratica, dalla progettazione della logica stanno passando alla progettazione di una mente.
E quando questa mente sarà stata ben sviluppata? Addio lavoratori? Come sarà il mondo visto dagli occhi di un computer?
Quando viene loro chiesto se saranno sostituiti da un robot in futuro, i lavoratori umani spesso non la pensano così. Questo vale per lo sviluppo del software e per molte altre aree.
La ragione è chiara: qualità come creatività, empatia, collaborazione o pensiero critico, in sintesi le “soft skills”, non sono ciò in cui i computer sono bravi.
Ma spesso non è questo ciò che conta per portare a termine un lavoro. Anche i progetti più complessi sono costituiti da tante piccole parti che possono essere automatizzate.
Non fraintendermi; le qualità umane sono sorprendenti. Ma abbiamo sovrastimato l’importanza di questi problemi quando si tratta di attività regolari.
Per molto tempo, ad esempio, anche i ricercatori hanno creduto che le macchine non sarebbero mai state in grado di riconoscere un gatto su una foto. Oggi una singola macchina può classificare miliardi di foto alla volta e con una precisione maggiore rispetto a un essere umano. Una macchina potrebbe non essere mai in grado di meravigliarsi della dolcezza di un piccolo gatto, ma è eccellente nel lavorare con stati indefiniti. Perché è questa la foto di un gattino attraverso gli occhi di una macchina: uno stato indefinito.
Verso nuove varianti e larga scala
Oltre a lavorare con stati indefiniti, ci sono altre due cose che i computer possono fare in modo più efficiente degli umani: fare le cose su larga scala e lavorare a varianti.
Abbiamo tutti sperimentato quanto bene i computer funzionano su larga scala. Ad esempio, se chiedete a un computer di stampare mille volte la stessa frase, lo farà senza lamentarsi e completerà l’attività in una frazione di secondo.
Chiedete a un essere umano e dovrete aspettare giorni per veder portare a termine il lavoro.
I collettori sono fondamentalmente un modo fantasioso, o matematico, di riferirsi a sottoinsiemi di spazio che condividono proprietà particolari. Ad esempio, un pezzo di carta è una varietà bidimensionale nello spazio tridimensionale. Se si accartoccia il pezzo di carta o si piega su un piano, è comunque un collettore.
I computer sono davvero bravi a lavorare con varianti che gli esseri umani trovano difficile da visualizzare, perché magari si estendono in venti dimensioni o hanno molti nodi e bordi complicati. Poiché molti problemi quotidiani, come il linguaggio umano o il codice del computer, possono essere espressi come una varietà matematica, c’è molto potenziale per implementare prodotti davvero efficienti in futuro.
A che punto siamo, e dove arriveremo?
Per prima cosa, le revisioni del codice e il debug potrebbero presto essere un ricordo del passato. L’azienda svizzera DeepCode sta lavorando a uno strumento per l’identificazione automatica dei bug. DeepMind di Google può già consigliare soluzioni più eleganti per il codice esistente. E Aroma di Facebook può completare da solo piccoli programmi.
Non solo: MISIM, acronimo che sta per Machine Inferred Code Similarity System, sembra in grado di comprendere il codice del computer nello stesso modo in cui Alexa o Siri possono comprendere il linguaggio umano. È entusiasmante, perché un tale sistema potrebbe consentire agli sviluppatori di automatizzare attività comuni e dispendiose in termini di tempo.
Prodotti ancora non del tutto perfetti, ma questi sono gli inizi: strumenti come questo diventeranno molto più potenti in futuro.
Le applicazioni? Presto
Alcune delle prime applicazioni di queste nuove automazioni potrebbero includere il monitoraggio delle attività umane. Cose come la pianificazione delle ore di un lavoratore o l’individuazione delle lezioni per uno studente potrebbero essere ottimizzate in questo modo.
Questo, già di per sé, presenta enormi opportunità economiche perché gli studenti potrebbero apprendere cose importanti più velocemente e i lavoratori potrebbero servire durante le ore in cui sono più produttivi.
Se MISIM è buono come promette, potrebbe anche essere usato per riscrivere il codice legacy. Ad esempio, molti software bancari e governativi sono scritti in COBOL, che oggi viene raramente insegnato. Tradurre questo codice in una lingua più recente ne renderebbe più facile la manutenzione.
Alla luce di tutto questo, dunque, se gli sviluppatori di software non vogliono sparire come possono stare al passo con i tempi?
Tutte queste nuove applicazioni sono entusiasmanti. Ma sopra di loro pesa una grossa spada di Damocle: se rendessero gli sviluppatori completamente obsoleti?
La salvezza, come spesso accadrà nel futuro prossimo, è nella creatività.
Questa è un’ottima occasione per spostare gli sviluppatori di software in fasi più preliminari di un progetto, ovvero coinvolgerli nelle fasi di pianificazione. Non solo sanno cosa può essere implementato e cosa no. Con la loro creatività, potrebbero aggiungere valore in modi che non sono immaginabili a priori.
Sono passati cinque anni da quando Satya Nadella di Microsoft ha affermato che “ogni azienda sarà un’azienda di software”. Aveva ragione.
Software is King
Se l’attuale pandemia ci ha insegnato qualcosa, è che gran parte della vita e della creazione di valore in questi mesi sta avvenendo online.
Software is King. Paradossalmente, questo diventa più evidente quanto più viene automatizzato. L’automazione sta trasformando i nerd del software nei leader mondiali di domani.
La rivincita dei nerd
Quando ero più piccolo, le persone a cui piacevano i computer erano considerate bambini asociali, nerd, creature sgradevoli, esseri simili a zombi privi di sentimenti e passioni umane.
Più tempo passa, tuttavia, più persone vedono gli altri lati degli sviluppatori di software. Chi programma non è più considerato nerd, ma una persona intelligente che può creare cose interessanti.
Certo, tra un decennio (in qualche caso anche tra pochi mesi) gli sviluppatori di software faranno cose che non possiamo nemmeno immaginare in questo momento. Ma questo non significa che il non lavoreranno più. Forse cambieranno solo nome e mansioni.