- Scopri di più sugli strumenti di sviluppo basati sull’intelligenza artificiale e su come possono aiutarti a lavorare in modo più efficiente.
- Il codice prodotto dalle IA potrebbe essere fortemente standardizzato, esponendo i sistemi a rischi di sicurezza.
- Come prepararsi a un futuro in cui umani e IA lavoreranno insieme per creare software migliore.
L’impatto che l’intelligenza artificiale sta avendo in tutti gli ambiti legati al digitale, ma non solo, è innegabile. Un percorso evolutivo che, come sappiamo, parte da molto prima dell’avvento di ChatGPT, ma che con questo ha avuto la cassa di risonanza che tutti stiamo sperimentando. E che in molti settori, come quello dello sviluppo, crea preoccupazioni per il futuro di alcune professioni. Alcuni sono arrivati a fare previsioni estreme, come la scomparsa della figura dello sviluppatore entro cinque anni. Per capire se in affermazioni come queste ci sia qualcosa di vero, o quantomeno di plausibile, proviamo a fare il punto sulla situazione.
Gli sviluppatori usano l’intelligenza artificiale?
In attesa di statistiche più ampie, possiamo rifarci alle dichiarazioni dei grandi player del settore. Secondo una indagine di GitHub di giugno 2023, il 92% dei developer fa già uso di strumenti basati sull’Intelligenza Artificiale. Va detto che questo sondaggio, pur essendo uno di quelli che ha avuto maggiore risonanza, è basato su un campione di soli 500 intervistati, per di più sul solo territorio degli Stati Uniti. Tuttavia, il lancio di strumenti come Copilot X, utilizzabile anche attraverso Microsoft Visual Studio che include anche una funzionalità sempre basata su AI chiamata Intellicode, lascia pensare che l’adozione sia già piuttosto diffusa. Questo slmeno per quanto riguarda i compiti di supporto e verifica. Dobbiamo però ricordare che gli strumenti di assistenza alla programmazione non sono affatto una novità e in questo contesto siamo di fronte più a estensioni del vecchio concetto di completamento automatico, familiare a molti sviluppatori.
Cosa può fare oggi l’IA generativa?
Limitandoci al campo dello sviluppo, anche utilizzando uno strumento generalista come ChatGPT, i risultati che si ottengono sono senza dubbio interessanti. Che si tratti di realizzare query SQL oppure di convertire codice fra diversi linguaggi, il fascino di un risultato immediato è senza dubbio uno dei punti di forza di questi strumenti.
Così come lo è la possibilità di utilizzarla per correggere i bug nel codice scritto da uno sviluppatore umano oppure, ancora più interessante, il fatto di poter fare scrivere interi semplici programmi all’IA, inserendo solo una richiesta descrittiva. La vera domanda diventa, quindi: quali di questi strumenti possono essere usati professionalmente e quali invece possono avere buone valenze in altri settori, come la didattica e la formazione, ma non sono adatti a chi progetta applicazioni e scrive codice di mestiere?
I limiti tecnici dello sviluppo attraverso IA
Il primo limite attuale delle IA nel campo dello sviluppo è senza dubbio nella modalità d’uso. Oggi, infatti, la maggior parte degli strumenti agisce secondo quella che alcuni definiscono modalità oracolare, rispondendo a domande o richieste circostanziate, con limitata o nulla proattività. Serve sempre, insomma, un input o una richiesta da parte di un operatore per ottenere un risultato.
Il secondo limite è legato alla complessità delle operazioni risolvibili. Citiamo, a titolo di esempio, questa conversazione su GitHub (fra le numerose di carattere simile, scelta per la sua linearità): alla richiesta se sia possibile utilizzare Copilot per convertire una applicazione da 32 a 64 bit, la risposta è lapidaria. Si tratta di un compito che non si ferma alla generazione di codice; pertanto, è fuori dalla portata dello strumento.
La stessa questione legata alla complessità si riscontra anche nella progettualità. A oggi gli strumenti comunemente disponibili hanno considerevoli limiti per quanto riguarda la gestione del contesto, il che rende molto difficile usarli in qualsiasi tipo di attività articolata. Questo si può sperimentare anche in altri campi, per esempio la stesura di testi: evitare che l’IA si “perda” dopo alcune iterazioni in un dialogo e mantenga una certa coerenza interna non è sempre facile. Pensiamo a cosa può succedere quando ci sono in gioco funzioni, procedure e variabili d’ambiente.
I dubbi degli sviluppatori
Ma cosa pensano gli sviluppatori dell’uso dell’intelligenza artificiale? Leggendo le numerose impressioni che si possono trovare in Rete, dagli stessi forum di GitHub passando per Quora fino a Reddit, si consolida l’impressione che l’AI nello sviluppo abbia, oggi, gli stessi limiti che si riscontrano in altri campi.
Oltre alla già accennata difficoltà a lavorare su progetti complessi, molti sviluppatori sottolineano che spesso l’output è generico e impreciso anche su alcuni task a media difficoltà. Come in altri campi, l’AI a oggi può supportare le parti del lavoro più ripetitive e tediose, ma non è in grado di dare valore aggiunto appena entra in gioco la necessità di un certo livello di seniority. Per dirla tutta, alcuni ritengono anche che in futuro questo possa aumentare l’ineguaglianza, rendendo i programmatori esperti o specializzati sempre più richiesti e impedendo a principianti e junior di fare esperienza sul campo.
Altri sottolineano come sia difficile ottenere buoni risultati quando ci sono esigenze molto specifiche o verticali, quindi tutto quello che cade al di fuori del perimetro di una certa standardizzazione. Il che esclude la possibilità di usarla, se non come strumento di correzione o di supporto, nei progetti innovativi o nello sviluppo di soluzioni customizzate.
Infine, c’è il tema della comprensione del codice generato. In particolare, nei contesti in cui ci sono politiche di code review particolarmente rigorose, il codice prodotto dall’AI deve comunque essere validato, rivisto e controllato. Il che, secondo alcuni, richiede più tempo, e lo stesso livello di competenza, di una scrittura da zero (anche se alcuni fanno notare come questo task sia meno faticoso e permetta di differenziare il lavoro rispetto a lunghe sessioni di scrittura del codice).
Questioni etiche e sicurezza
Ma i limiti dell’Intelligenza artificiale nel campo della programmazione non sono solo di natura tecnica. Come in altri settori, per esempio, ci si sta interrogando sull’etica del lavoro svolto in questo modo, o se la programmazione assistita sia vera programmazione. Domande destinate a rimanere senza risposta ancora per molto tempo, se dobbiamo valutare quello che sta accadendo in altri campi come la creatività.
Un dubbio ancora più rilevante, che nel campo dello sviluppo assume un risvolto di primaria importanza, è il seguente: il codice prodotto dalle IA, dal momento che deriva da un addestramento comune (fatto salvo per pochissime eccezioni) tenderà ad essere fortemente standardizzato. E la sua adozione in massa espone a rischi legati, per esempio, alle minacce zero-day, dal momento che anche gli attaccanti utilizzano script e sistemi automatizzati sempre più evoluti che le indirizzano in maniera sempre più rapida ed efficiente.
IA e programmazione, fra entusiasmo e cautela
Come era facile aspettarsi, anche nel campo dello sviluppo di software troviamo molti degli entusiasmi, e dei dubbi, che caratterizzano questa fase immatura dell’adozione dell’IA, che portano per molti versi a una analoga conclusione: si tratta di strumenti interessanti, in molti casi efficaci, ma che esprimono il massimo del loro potenziale nell’assistere chi è già competente o esperto nel fare il proprio lavoro in modo più rapido, efficiente e meno faticoso. Che sembra anche essere la direzione sposata dai grandi attori del mercato, interessati, sembrerebbe, a rendere più qualificato il lavoro con l’assistenza dell’IA, non a sostituirlo.