Le grandi promesse della GenAI come generatore di codice non sembrano concretizzarsi nei fatti. Meglio non sopravvalutare la tecnologia.
Tra i molti hype specifici collegati al mega-hype complessivo della AI Generativa, c'è in prima linea quello relativo all'utilizzo dell'Intelligenza Artificiale Generativa nella scrittura di codice software. L'idea presentata da quasi tutte le aziende tecnologiche che "fanno" GenAI - o comunque la propagandano - è che gli LLM siano adeguati a svolgere i compiti di uno sviluppatore: scrivere codice, trovare errori, analizzare proposte di modifiche e correzioni di codice esistente (in gergo, le pull request).
Come sempre in questi casi, e specialmente in questa fase del mercato della GenAI, è difficile commentare il tutto con quel tipo di affermazione decisa - sì o no, bianco o nero, funziona del tutto o non funziona affatto - che molti preferirebbero. Invece, quando si tratta di tecnologie spesso accade che certezze non ce ne siano. Tutto dipende dal contesto e dalle aspettative.
Il tema dell'AI nel coding non è affatto nuovo, tanto che generatori di codice e forme semplici di coding assistant basate su Machine Learning esistono già da anni, ben prima che si iniziasse a parlare di GenAI. Ma che in poco tempo si sia arrivati ad affermare coscientemente che non sarà più necessario programmare, fa abbastanza effetto. Anche perché la realtà dei fatti è diversa.
Al netto tanto dei fan sfegatati quanto degli oppositori inamovibili della GenAI, la posizione per così dire "equilibrata" di chi spinge l'AI Generativa nello sviluppo software è che possa svolgere i compiti di uno sviluppatore junior, lasciando agli sviluppatori esperti il compito di esaminare il codice generato automaticamente per eliminare gli inevitabili errori.
Ammesso che questo sia vero, e considerando che molte aziende useranno questa possibilità della GenAI per eliminare gli sviluppatori di livello base, si verrebbe a creare una situazione stile Comma 22: gli sviluppatori junior non servirebbero più e quelli senior resterebbero, ma uno sviluppatore non può diventare esperto se non si scontra prima direttamente con i problemi della sua fase iniziale di junior developer. Quindi alla fine non avremmo più nessuno capace di esaminare criticamente il codice, e dovremmo affidarci completamente all'AI.
Questo non è un pensiero che mette tranquilli, perché buon senso e realtà dei fatti contraddicono le affermazioni ottimistiche di chi "produce" GenAI. Per fare un esempio significativo, di recente ha fatto sensazione l'affermazione di Satya Nadella, CEO di Microsoft, secondo cui il 30% del codice software di Microsoft è generato dall'AI. O quantomeno, questo è il concetto che è stato presentato sui titoli dei media tecnologici.
Il problema è che Nadella non ha affatto detto questo. Ciò che ha affermato è che "maybe 20 to 30 percent of the code that is inside of our repos today in some of our projects are probably all written by software" ("forse il 20-30 percento del codice che è nei nostri repository in alcuni dei nostri progetti è stato probabilmente scritto da software"). I più curiosi possono verificare direttamente: l'intervista è su YouTube e la frase è pronunciata al minuto 45.00.
Nadella, che ingenuo non è, ha descritto uno scenario molto più conservativo di quanto è stato riportato. Il codice coinvolto non è tutto quello di Microsoft ma solo "alcuni progetti", in cui una parte del codice "forse", "probabilmente" è stata "scritta da software", cosa che potrebbe voler dire che è stata usata la GenAI ma anche no. Bene che vada - per la GenAI - quello descritto è un uso marginale, molto simile ai progetti di test che tantissime aziende di ogni settore e dimensione stanno portando avanti. E che l'hype dei vendor tecnologici conta come aziende che usano attivamente la GenAI.
A contribuire al dibattito è una constatazione che, sempre di recente, è stata sottolineata da diversi esperti e commentatori: se la GenAI è già così brava a generare codice funzionante e valido, dove sono i suoi contributi ai progetti open source? Praticamente il 90 percento del mondo IT attuale si basa su progetti open source e sappiamo bene quante difficoltà abbiano i loro maintainer a portarli avanti: una GenAI capace sarebbe un grande aiuto. Ma non se ne vede praticamente traccia nel mondo open source, ed è molto strano (è un eufemismo) pensare che i suoi contributi possano essere solo nel comparto del software proprietario.
A rilanciare il dibattito è stato, tra gli altri, anche Ben Evans, che proprio sprovveduto in materia non è, essendo Senior Principal Software Engineer di Red Hat. La sua challenge - "Condividete alcune pull request derivate dall'AI che trattino casi specifici non ovvi o bug non banali in progetti F/OSS maturi. Accetterò anche documentazione di alta qualità, che non sia solo il tipo di spazio sprecato e di sbobba che dico sempre agli junior di non scrivere" - ha avuto in risposta pochissimo di valido e moltissimo in commenti ironici sulla GenAI. È uno dei rari casi in cui vale ancora la pena leggere un post di LinkedIn con relativi commenti (è tutto qui).
Ben Evans mette in evidenza la questione della GenAI applicata alle pull request, che sta diventando un problema per molti maintainer di progetti open source. È diventato di moda usare la GenAI per creare pull request e inviarle massicciamente a molti progetti, nel tentativo di conquistare qualche "bug bounty" o semplicemente di acquisire rilevanza e lustro nella community degli sviluppatori. Il problema è che queste pull request sono quasi sempre prolisse, poco leggibili e inutili. O, peggio, proprio sbagliate. E fanno perdere molto tempo a chi deve (o sente il dovere di) esaminarle.
Il caso emblematico recente è quello di Daniel Stenberg, il maintainer del progetto cURL (anche qui, non proprio uno sprovveduto), che ha paragonato questo proliferare di pull request create da GenAI a veri e propri attacchi DDoS. E alla fine, dopo un ultimo caso limite (una pull request che segnalava un bug in una funzione che in cURL nemmeno esiste), ha deciso di bloccare qualsiasi request creata usando l'AI.
I sostenitori della GenAI possono ovviamente rispondere a tutto questo ricordando che qualsiasi tecnologia migliora con il tempo, e che i limiti attuali dell'AI Generativa nello sviluppo software saranno man mano superati. È possibile. L'AI Generativa è uno strumento tecnologico come tutti gli altri, che si affermerà nel tempo in proporzione al suo valore concreto.
Il problema non è la tecnologia, è l'hype. Le aziende utenti sono corse a testare la GenAI più che altro per le promesse che sono state fatte loro da chi gliela proponeva e per la paura di perdere un treno presentato come immancabile. Se arrivassero anche a prendere decisioni strategiche basandosi su premesse molto deboli, sarebbe grave. Vale per lo sviluppo software come per qualsiasi altro ambito, ma avere al proprio interno capacità di sviluppo è sempre più impottante: nel dubbio, io gli sviluppatori junior continuerei a cercarli e a formarli.