L'errore di sostituire gli ingegneri del software con AI
Gli ingegneri del software oggi sono perseguitati dallo spettro dell’intelligenza artificiale che potenzialmente usurpa il loro lavoro. I modelli di intelligenza artificiale generativa come ChatGPT hanno portato a crescenti preoccupazioni sulla fine dello sviluppo di software incentrato sull’uomo. Tuttavia, è fondamentale riconoscere che tali paure sono tutt’altro che nuove. Nel corso degli anni, diverse tecnologie hanno affermato di “sconvolgere” la professione del coding, ma tutte non sono riuscite a sostituire gli sviluppatori umani. Al contrario, hanno spesso reso gli ingegneri del software ancora più indispensabili.
Le idee sbagliate sui primi calcoli e sullo sviluppo del software
È istruttivo guardare indietro alla storia dell’informatica per capire perché le preoccupazioni riguardo al fatto che l’intelligenza artificiale possa assumere il controllo dei lavori di codifica potrebbero essere esagerate. Agli albori dell'informatica, l'architettura dell'hardware e dei sistemi erano considerati l'apice dello sforzo intellettuale nel campo. Il software era un ripensamento, spesso relegato a un livello di importanza inferiore.
Scienziati informatici pionieristici come John Backus consideravano i programmatori un lavoro umile. Anche le dinamiche di genere del periodo hanno avuto un ruolo: molti dei primi programmatori erano donne, i cui contributi furono minimizzati a causa del sessismo. Nonostante gli atteggiamenti sminuitivi, i programmatori sono rimasti indispensabili. Hanno intrapreso il duro lavoro di codifica, debug e test, liberando pionieri come Backus di concentrarsi su ciò che consideravano questioni più “significative”.
Tentativi evolutivi di "eliminare" gli ingegneri del software
Nel corso del tempo, le innovazioni tecnologiche miravano a semplificare il ruolo dei programmatori o addirittura a bypassarli del tutto. FORTRAN è stato progettato per consentire agli scienziati di scrivere programmi senza programmatori. La sintassi inglese di facile comprensione di COBOL mirava a consentire ai manager di codificare senza l'aiuto di uno sviluppatore. Il modello di sviluppo Waterfall intendeva standardizzare i processi di sviluppo del software, mentre la programmazione orientata agli oggetti avrebbe dovuto semplificare la codifica nella misura in cui chiunque potesse farlo.
È interessante notare che gli ingegneri del software erano spesso contrari a questi cambiamenti, temendo che diventassero obsoleti. Tuttavia, questi timori si sono rivelati infondati. Tecnologie come FORTRAN e COBOL hanno aggiunto nuovi livelli di complessità invece di semplificare le cose. Il modello Waterfall ha portato a disagi burocratici, ostacolando lo sviluppo efficiente del software.
L'importanza duratura dei programmatori umani: una crisi nell'ingegneria del software
Nonostante le innovazioni intese a eliminare o ridurre la necessità di programmatori umani, è emerso un paradosso: il mondo aveva ancora bisogno di più ingegneri del software. In una conferenza del 1968 sponsorizzata dalla NATO, il termine “crisi” fu usato per descrivere la situazione nell’ingegneria del software. I progetti erano in fase di stallo o subivano ritardi, non a causa dei troppi ingegneri del software, ma a causa di troppo pochi.
ChatGPT e la realtà dell'intelligenza artificiale nello sviluppo di software
Oggi, il discorso sulla sostituzione di ChatGPT con gli ingegneri informatici umani sembra privo di prospettiva storica. Usare l’intelligenza artificiale per sostituire gli ingegneri nello sviluppo di funzionalità complesse porterebbe probabilmente a risultati disastrosi, rendendo inevitabile la riassunzione di ingegneri umani. Da un punto di vista più pratico, i modelli linguistici di grandi dimensioni (LLM) come ChatGPT possono automatizzare attività di routine, come fornire suggerimenti di completamento automatico o ordinare dati, ma queste attività sono solo una frazione di ciò che comporta lo sviluppo del software.
Migliorare, non sostituire, la produttività umana
Invece di rubare posti di lavoro, ChatGPT e tecnologie simili potrebbero cambiare la natura del lavoro di programmazione, eliminando alcuni dei compiti più banali e consentendo agli ingegneri di concentrarsi sulle vere sfide intellettuali. Questo scenario riecheggia il modo in cui i compilatori hanno eliminato la necessità per i programmatori di lavorare direttamente con il codice binario. Il risultato? I programmatori divennero più, e non meno, preziosi, poiché potevano dedicare più tempo alla risoluzione di problemi complessi e allo sviluppo di funzionalità.
Il paradosso della complessità: perché l’intelligenza artificiale non sostituirà gli ingegneri del software
Edsger Dijkstra una volta notò che man mano che i computer sono diventati più complessi, la programmazione si è trasformata da un non-problema a una sfida significativa. Gli sforzi per rendere la programmazione così semplice da consentire a chiunque di farlo hanno solo portato ad aggiungere ulteriori livelli di complessità. Lungi dal rendere obsoleti gli ingegneri del software, l’ascesa di tecnologie avanzate come ChatGPT probabilmente li renderà ancora più parte integrante del processo di sviluppo del software.
Conclusione: l'improbabile estinzione degli ingegneri del software
L’idea che l’intelligenza artificiale sostituirà completamente gli ingegneri informatici umani sembra poco plausibile se vista attraverso la lente della storia. Di volta in volta, le innovazioni volte a mettere da parte i programmatori sono riuscite solo a renderli più indispensabili. Il potenziale dei modelli linguistici di grandi dimensioni per assistere nello sviluppo del software seguirà probabilmente lo stesso percorso, aumentando anziché sostituire le capacità umane. Pertanto, gli ingegneri del software possono tirare un sospiro di sollievo; le loro competenze rimangono più preziose che mai nel nostro mondo digitale sempre più complesso.