La Gen AI offre agli sviluppatori di software un aumento della produttività, ma non è per tutti
L’intelligenza artificiale generativa apporta vantaggi in termini di produttività, ma i professionisti IT devono diffidare dell’adozione su larga scala di questi strumenti nelle loro attuali incarnazioni.
Per chiunque crei software, l'intelligenza artificiale generativa (Gen AI), in particolare uno strumento come GitHub Copilot, è un mezzo per creare, testare, documentare ed eseguire il debug rapidamente del codice, con grandi vantaggi in termini di produttività.
Questa spinta libera tempo, risorse e capacità intellettuali da parte degli sviluppatori software e dei professionisti operativi per intensificare e ricoprire ruoli consultivi e di leadership all'interno delle loro organizzazioni.
Tuttavia, sebbene i vantaggi in termini di produttività siano chiari, l’intelligenza artificiale potrebbe non avvantaggiare tutti e gli esperti del settore consigliano di procedere con cautela nell’automazione.
Innanzitutto, un po’ di contesto. Secondo uno studio multilaterale condotto da ricercatori di Microsoft, MIT, Princeton University e University of Pennsylvania, gli strumenti di suggerimento del codice della generazione AI possono aumentare la produttività degli sviluppatori di software.
La ricerca ha analizzato l'output di 4.867 sviluppatori software di tre aziende, tutte con accesso a Copilot, e ha scoperto un aumento della produttività del 26% nel numero settimanale di attività completate, insieme a un aumento del 14% nel numero di aggiornamenti del codice e un 38 Aumento percentuale del numero di volte in cui il codice è stato compilato.
Altri dirigenti e professionisti del settore concordano che la Gen AI può produrre un enorme aumento della produttività per gli sviluppatori di software.
"Gli strumenti Gen AI e copilot stanno influenzando in modo significativo la velocità di sviluppo", ha detto a ZDNET Brett Smith, un illustre sviluppatore di software con SAS.
"L'intelligenza artificiale può aiutare a scrivere codice standard, test unitari e documentazione, consentendo allo sviluppatore di accelerare la risoluzione delle soluzioni reali. L'intelligenza artificiale generativa ha senza dubbio rivoluzionato il gioco per lo sviluppo di software, fungendo da programmatore di coppia per gli sviluppatori di tutto il mondo."
Gli strumenti generativi possono essere utili per varie attività di sviluppo, come "l'introduzione di nuove funzionalità nelle basi di codice esistenti o il porting delle basi di codice in nuovi linguaggi di programmazione", ha affermato Flavio Villanustre, responsabile globale della sicurezza informatica presso LexisNexis Risk Solutions.
"Questi strumenti di intelligenza artificiale aiutano anche con l'archeologia del software necessaria per comprendere basi di codice scarsamente documentate. Inoltre, l'intelligenza artificiale può fungere da risorsa utile quando è necessario creare casi di test, specialmente in ambienti di sviluppo software basati su test. Ultimo ma non meno importante , gli strumenti di intelligenza artificiale possono aiutare a identificare librerie e framework di terze parti che potrebbero essere utili in particolari progetti."
Tuttavia, non ci sono solo buone notizie e i ricercatori dello studio Microsoft/MIT/Princeton/UPenn hanno evidenziato un importante avvertimento: i vantaggi della Gen AI diminuiscono tra gli sviluppatori con maggiore esperienza.
"Gli sviluppatori meno esperti hanno mostrato tassi di adozione più elevati e maggiori guadagni di produttività", hanno affermato. "Copilot aumenta significativamente il completamento delle attività per le assunzioni più recenti e per coloro che ricoprono posizioni più junior, ma non per gli sviluppatori con un mandato più lungo e in posizioni più senior."
Gli strumenti basati sull'intelligenza artificiale "sono incredibilmente utili per gli sviluppatori meno esperti", ha concordato Edward White, responsabile della crescita presso beehiiv, un servizio di newsletter digitale.
"Offrono suggerimenti in tempo reale per il refactoring e l'ottimizzazione, guidando gli sviluppatori junior attraverso le migliori pratiche durante la codifica. Questi strumenti possono identificare inefficienze o modelli ripetitivi e consigliare miglioramenti, rendendo il codice più pulito ed efficiente. Il feedback immediato aiuta gli sviluppatori a imparare come scrivere codice gestibile, seguire convenzioni di denominazione adeguate e utilizzare strutture migliori."
Tuttavia, nonostante l’attenzione agli sviluppatori meno esperti, Smith ha affermato che anche i professionisti di lunga data possono vedere i vantaggi della Gen AI. "Secondo la mia esperienza, gli sviluppatori veterani hanno tratto grandi benefici dall'assistenza dell'intelligenza artificiale", ha affermato.
"L'intelligenza artificiale è incredibilmente efficiente nello scrivere codice boilerplate e lascia libero lo sviluppatore di fare cose complesse su misura in cui l'intelligenza artificiale non è brava. In generale, gli sviluppatori con meno esperienza hanno difficoltà a risolvere problemi complessi e l'intelligenza artificiale di solito non è in grado di aiutarli quell'aspetto."
Le prove fornite dagli esperti del settore suggeriscono che è necessario raggiungere un equilibrio. Sia che la Gen AI venga implementata da sviluppatori esperti o inesperti, i professionisti e i dirigenti IT devono diffidare dell’adozione su larga scala di questi strumenti nelle loro attuali incarnazioni.
"Mentre l'assistente è in genere in grado di scrivere alcune funzioni comuni, interfacciarsi ragionevolmente con le librerie esistenti, scrivere casi di test e spiegare il codice esistente, commette alcuni errori che un programmatore esperto eviterebbe", ha affermato Villanustre.
"Questi strumenti basati sull'intelligenza artificiale presentano anche sfide quando affrontano algoritmi più complessi e possono scrivere codice non sicuro o insicuro. A mio parere, gli attuali strumenti di intelligenza artificiale sono commisurati a un programmatore entry-level e richiedono comunque il monitoraggio da parte di professionisti del software più esperti. "
Smith ha anche affermato che la maggiore velocità derivante dagli strumenti Gen AI è un’arma a doppio taglio. "Gli sviluppatori scrivono codice errato; l'intelligenza artificiale li aiuta a scrivere codice errato più velocemente", ha affermato.
"L'aumento della quantità di codice prodotto da un team potrebbe introdurre più bug e vulnerabilità del normale. Questa ondata di nuovo codice può rapidamente sopraffare i team di test e sicurezza. I team dovranno automatizzare checkpoint, test e scansioni di sicurezza per tenere il passo nella lotta gli aspetti malvagi dell'IA generativa che vanno avanti."
Anche la qualità del codice generato è un problema. "L'intelligenza artificiale è valida tanto quanto la sua formazione", ha affermato David Brault, un esperto di Mendix. I dati di addestramento possono includere "una combinazione di codice ben scritto e scadente". Questo mix potrebbe portare a codici di qualità e coerenza variabili e può persino basarsi sul debito tecnico.
Un’altra sfida con il codice generato dall’intelligenza artificiale è il rischio di incompatibilità con i sistemi esistenti, in particolare con architetture complesse o legacy.
"Sebbene gli strumenti di intelligenza artificiale possano produrre codice efficiente per compiti specifici, potrebbero non sempre considerare le dipendenze, i framework o le strutture uniche dei sistemi più vecchi", ha avvertito White.
"Questa discrepanza può portare a problemi come comportamenti imprevisti o addirittura causare interruzioni se il codice generato dall'intelligenza artificiale viene implementato senza test approfonditi."
I professionisti IT devono anche prestare attenzione alle questioni legali che possono sorgere lungo il percorso. "L'utilizzo del codice generato dall'intelligenza artificiale richiede cautela riguardo alla duplicazione, alla proprietà intellettuale e ai potenziali problemi di licenza", ha affermato Mira Nathalea, responsabile marketing di SoftwareHow, un fornitore di recensioni di software.
"Gli sviluppatori e le aziende dovrebbero essere consapevoli dei rischi associati ai suggerimenti di codice non verificato. Esiste il rischio di incorporare inconsapevolmente codice che potrebbe non essere in linea con i requisiti di licenza del progetto, con il rischio di conflitti di proprietà intellettuale. Gli sviluppatori dovrebbero esaminare attentamente i suggerimenti generati dall'intelligenza artificiale per mantenerli qualità del codice e conformità legale."
I professionisti e i dirigenti del software devono anche gestire attentamente le preoccupazioni etiche che possono sorgere dalla generazione di codici basata sull’intelligenza artificiale.
"Trascurare le considerazioni etiche può portare a problemi non voluti, come rischi per la privacy, uso improprio dei dati o pregiudizi all'interno degli algoritmi", ha affermato Joel Popoff, CEO di Axwell Wallet, un produttore di articoli tecnologici da portare tutti i giorni.
"Quando il codice generato dall'intelligenza artificiale non viene valutato attentamente, potrebbe non essere pienamente conforme alle normative o agli standard etici, soprattutto in aree come la privacy degli utenti e il trattamento equo."
Popoff ha affermato che è importante implementare procedure di revisione etica su misura per il codice generato dall’intelligenza artificiale per mitigare tali rischi. "Ciò include il controllo regolare dei risultati dell'intelligenza artificiale, la garanzia che i dati siano gestiti in modo responsabile e il controllo attivo di eventuali errori nelle decisioni automatizzate", ha affermato.
"Stabilire la trasparenza su come l'intelligenza artificiale elabora e utilizza i dati aiuta a mantenere la fiducia e mantiene il processo di sviluppo allineato ai principi etici."
Ci sono, quindi, una serie di questioni e preoccupazioni che devono essere prese in considerazione. Tuttavia, se impiegata in modo responsabile, l’intelligenza artificiale potrebbe rivoluzionare la professione dello sviluppo.
"Uno dei maggiori vantaggi derivanti dall'utilizzo dell'intelligenza artificiale nello sviluppo è la capacità di automatizzare le attività noiose e ripetitive che gli sviluppatori odiano perché fanno perdere tempo e aggiungono poco valore aziendale alla soluzione", ha affermato Brault.
"Invece, automatizzando queste routine di basso livello con l'intelligenza artificiale, gli sviluppatori possono dedicare più tempo alla ricerca di modi creativi per risolvere i complessi problemi aziendali che influiscono sulla loro azienda. Semmai, gli sviluppatori diventeranno ancora più preziosi poiché la loro esperienza sarà richiesta per convalidare e proteggere il codice generato dall’intelligenza artificiale e creare componenti, modelli e framework riutilizzabili per stabilire standard di governance per l’integrazione dell’intelligenza artificiale con i sistemi esistenti”.
