I leader tecnologici che puntano ad accelerare lo sviluppo del software possono aspettarsi un risparmio di tempo rivoluzionario con l’AI generativa. Tuttavia, per sfruttare appieno il potenziale di questa tecnologia dirompente, avranno bisogno di qualcosa di più degli strumenti. Per capire l’impatto degli strumenti basati sull’intelligenza artificiale generativa sulla produttività degli sviluppatori, McKinsey ha creato un laboratorio con oltre 40 sviluppatori dislocati negli Stati Uniti e in Asia e con diverse esperienze di sviluppo software. Questo laboratorio servirà come banco di prova continuo per comprendere gli sviluppi del settore, compreso l’impatto di nuovi strumenti e l’evoluzione di quelli esistenti.
La ricerca
Per questo rapporto, ai partecipanti è stato chiesto di eseguire compiti comuni di sviluppo del software in tre aree:
- generazione del codice
- refactoring
- documentazione.
Ogni compito è stato svolto da un gruppo di prova che ha avuto accesso a due strumenti basati sull’AI generativa e da un gruppo di controllo che non ha utilizzato l’assistenza dell’AI. Ogni sviluppatore ha partecipato al gruppo di test per metà dei compiti e al gruppo di controllo per l’altra metà.
McKinsey ha raccolto i dati in diversi formati. È stato utilizzato un sondaggio demografico per valutare gli anni di esperienza, le competenze e le conoscenze pregresse. Per misurare il tempo trascorso su ciascun compito, i partecipanti hanno registrato l’ora di inizio, l’ora di fine e i tempi di pausa. I sondaggi dopo ogni compito hanno rilevato la complessità percepita del compito e l’esperienza dello sviluppatore. Le valutazioni dei giudici durante le dimostrazioni di codice sono state utilizzate per identificare i lavori presentati con successo. Le revisioni automatiche della qualità del codice utilizzando una piattaforma open-source hanno valutato la leggibilità e la manutenibilità del codice e hanno individuato i bug. Un’indagine post-esperimento ha raccolto le impressioni dei partecipanti sugli strumenti e sull’esperienza tra i vari compiti.
Quanto tempo si può risparmiare
L’ultima ricerca empirica McKinsey rileva che gli strumenti basati sull’intelligenza artificiale generativa offrono guadagni di velocità impressionanti per molte attività comuni degli sviluppatori. La documentazione delle funzionalità del codice per la manutenibilità (che considera la facilità con cui il codice può essere migliorato) può essere completata in metà tempo, la scrittura di nuovo codice in quasi la metà del tempo e l’ottimizzazione del codice esistente (chiamata refactoring del codice) in quasi due terzi del tempo. Con le giuste competenze e gli strumenti aziendali, questi guadagni di velocità possono essere tradotti in un aumento della produttività che supera i precedenti progressi della produttività ingegneristica, grazie a nuovi strumenti e processi.
Tuttavia, se da un lato è possibile un’impennata della produttività, dall’altro la ricerca ha rilevato che il risparmio di tempo può variare in modo significativo in base alla complessità delle attività e all’esperienza degli sviluppatori. Il risparmio di tempo si è ridotto a meno del 10% per le attività che gli sviluppatori ritenevano molto complesse, ad esempio perché non avevano familiarità con un framework di programmazione necessario. Un risultato simile è stato riscontrato tra gli sviluppatori con meno di un anno di esperienza; in alcuni casi, gli sviluppatori junior hanno impiegato dal 7 al 10% in più di tempo con gli strumenti rispetto a quelli senza.
L’uso di questi strumenti non ha sacrificato la qualità per la velocità quando lo sviluppatore e lo strumento hanno collaborato. La qualità del codice in relazione a bug, manutenibilità e leggibilità (importante per la riusabilità) è risultata marginalmente migliore nel codice assistito dall’intelligenza artificiale. Tuttavia, il feedback dei partecipanti indica che gli sviluppatori hanno iterato attivamente con gli strumenti per ottenere tale qualità, a dimostrazione del fatto che la tecnologia è meglio utilizzata per aumentare gli sviluppatori piuttosto che per sostituirli. In definitiva, per mantenere la qualità del codice, gli sviluppatori devono comprendere gli attributi che lo compongono e chiedere allo strumento i giusti risultati.
L’insieme di questi risultati suggerisce che per massimizzare i guadagni di produttività e minimizzare i rischi nell’impiego di strumenti basati sull’AI generativa sarà necessario che i responsabili dell’ingegneria adottino un approccio strutturato che comprenda la formazione e il coaching sull’AI generativa, la selezione dei casi d’uso, l’aggiornamento della forza lavoro e il controllo dei rischi.
Ecco quali sono le aree in cui l’AI generativa ha brillato nella ricerca McKinsey, i compiti che hanno richiesto la competenza degli sviluppatori e le azioni che i responsabili dell’ingegneria possono intraprendere per garantire l’uso più efficace di questa tecnologia emergente.
Dove l’AI generativa ha brillato
Nello studio, McKinsey ha assegnato agli sviluppatori alcuni compiti comuni che i team di software svolgono regolarmente: rifattorizzare un pezzo di codice in microservizi per migliorare la manutenibilità e la riusabilità, costruire nuove funzionalità dell’applicazione per elevare l’esperienza del cliente e documentare le capacità del codice per facilitare le modifiche future.
Tra questi compiti, la ricerca ha rilevato che gli strumenti basati sull’intelligenza artificiale generativa consentono di ottenere enormi guadagni di produttività in quattro aree chiave:
- Accelerazione del lavoro manuale e ripetitivo
L’intelligenza artificiale generativa è in grado di gestire attività di routine come il riempimento automatico delle funzioni standard utilizzate nella codifica, il completamento delle dichiarazioni di codifica durante la digitazione da parte dello sviluppatore e la documentazione delle funzionalità del codice in un determinato formato standard, in base alle richieste dello sviluppatore. In questo modo, questi strumenti possono liberare gli sviluppatori per risolvere sfide aziendali più complesse e accelerare le nuove funzionalità del software.
- Avviare la prima bozza di nuovo codice
Quando si trovano di fronte a una schermata vuota, gli sviluppatori con strumenti basati sull’intelligenza artificiale generativa possono richiedere suggerimenti inserendo una richiesta in una finestra separata o all’interno dell’ambiente di sviluppo integrato (IDE) che utilizzano per sviluppare il software. Gli sviluppatori che lo hanno fatto hanno riferito che gli strumenti basati sull’intelligenza artificiale generativa hanno fornito suggerimenti utili per il codice. Questo ha permesso loro di evitare il blocco dello scrittore e di iniziare più rapidamente. Come ha detto un partecipante, gli strumenti consentono agli sviluppatori di entrare più rapidamente nel “flusso”.
- Accelerazione degli aggiornamenti del codice esistente
I partecipanti hanno anche riferito che, utilizzando questi strumenti con un prompt efficace, potevano apportare più velocemente modifiche al codice esistente. Ad esempio, per impiegare meno tempo ad adattare il codice da una libreria di codifica online e migliorare quello già scritto, gli sviluppatori lo copiano e lo incollano in un prompt e inviano query iterative chiedendo allo strumento di modificarlo in base ai criteri forniti.
- Aumentare la capacità degli sviluppatori di affrontare nuove sfide
Sebbene il risparmio di tempo degli sviluppatori con gli strumenti basati sull’intelligenza artificiale generativa sia stato più modesto per le attività complesse, la nostra ricerca ha comunque riscontrato dei vantaggi: la tecnologia può aiutare gli sviluppatori a ripassare rapidamente una base di codice, un linguaggio o un framework non familiari, necessari per portare a termine il lavoro. Inoltre, quando gli sviluppatori si trovano di fronte a una nuova sfida, possono rivolgersi a questi strumenti per ottenere il tipo di aiuto che altrimenti potrebbero chiedere a un collega esperto, ad esempio spiegando nuovi concetti, sintetizzando le informazioni (ad esempio, confrontando il codice proveniente da repository diversi) e fornendo guide passo-passo sull’uso di un framework in modo da poter svolgere il lavoro. Gli sviluppatori che hanno utilizzato strumenti basati sull’intelligenza artificiale generativa per svolgere compiti complessi hanno avuto il 25-30% di probabilità in più rispetto a quelli che non hanno utilizzato tali strumenti di completare tali compiti entro i tempi previsti.
I vantaggi vanno oltre questi miglioramenti della produttività. La ricerca rileva che fornire agli sviluppatori gli strumenti per essere più produttivi migliora significativamente anche l’esperienza degli sviluppatori, che a sua volta può aiutare le aziende a trattenere ed entusiasmare i loro migliori talenti. Gli sviluppatori che utilizzano strumenti basati sull’intelligenza artificiale generativa hanno più del doppio delle probabilità di dichiarare felicità generale, appagamento e uno stato di flusso. Questo risultato è stato attribuito alla capacità degli strumenti di automatizzare il lavoro di routine che li tratteneva da compiti più soddisfacenti e di mettere le informazioni a portata di mano più velocemente di una ricerca di soluzioni su diverse piattaforme online.
Quali compiti richiedono la competenza degli sviluppatori
La tecnologia dell’intelligenza artificiale generativa può fare molto, ma la ricerca suggerisce che gli strumenti sono validi solo quanto le capacità degli ingegneri che li utilizzano. Il feedback dei partecipanti ha segnalato tre aree in cui la supervisione e il coinvolgimento umano sono fondamentali:
- Esame del codice alla ricerca di bug ed errori
I partecipanti alla ricerca hanno riferito che, a volte, gli strumenti basati sull’intelligenza artificiale generativa fornivano raccomandazioni di codifica errate e addirittura introducevano errori nel codice. Durante un’attività, uno sviluppatore ha notato di aver dovuto inserire numerose richieste per correggere un’ipotesi errata dello strumento, in modo da ottenere una risposta a una domanda. In un altro caso, uno sviluppatore ha raccontato di aver dovuto “imboccare” lo strumento per eseguire correttamente il debug del codice.
- Contribuire al contesto organizzativo
Anche se gli strumenti generativi basati sull’intelligenza artificiale sanno molto sulla codifica, non conoscono le esigenze specifiche di un determinato progetto e di un’organizzazione. Questa conoscenza è fondamentale durante la codifica per garantire che il prodotto software finale si integri perfettamente con altre applicazioni, soddisfi le prestazioni e i requisiti di sicurezza dell’azienda e, infine, risolva le esigenze degli utenti finali. Come hanno sottolineato i partecipanti alla ricerca nei loro commenti, spetterà agli sviluppatori di software fornire a questi strumenti il contesto attraverso le richieste, tra cui il modo in cui il codice verrà utilizzato e da chi, i tipi di interfacce e altri sistemi con cui il software interagirà, i dati utilizzati e altro ancora.
- Gestione di requisiti di codifica complicati
Il feedback dei partecipanti suggerisce anche che gli strumenti basati sull’intelligenza artificiale generativa sono più adatti a rispondere a richieste semplici, come l’ottimizzazione di uno snippet di codice, che a quelle complicate, come la combinazione di più framework con logiche di codice diverse. Un partecipante ha raccontato che per ottenere una soluzione utilizzabile per soddisfare un requisito multiforme, ha dovuto prima combinare manualmente i componenti o suddividere il codice in segmenti più piccoli. Come ha spiegato un altro partecipante, “l’AI generativa è meno utile quando il problema diventa più complicato e occorre prendere in considerazione il quadro generale”.
Cosa significano questi risultati per i leader del settore tecnologico?
Alla luce di questi risultati, cosa possono fare i leader tecnologici per tradurre questi risparmi di tempo e miglioramenti della qualità in reali aumenti di produttività, riducendo al minimo i rischi quando utilizzano l’AI generativa nello sviluppo del software? L’esperienza dei partecipanti alla ricerca suggerisce di iniziare con quattro priorità: sviluppo delle competenze, perseguimento di casi d’uso avanzati, pianificazione dei cambiamenti di competenze e gestione dei rischi.
Fornire agli sviluppatori una formazione e un coaching sull’intelligenza artificiale generativa
Affinché gli sviluppatori possano utilizzare efficacemente la tecnologia per aumentare il loro lavoro quotidiano, è probabile che abbiano bisogno di una combinazione di formazione e affiancamento. La formazione iniziale dovrebbe comprendere le migliori pratiche e gli esercizi pratici per l’inserimento di messaggi in linguaggio naturale negli strumenti, spesso chiamati “prompt engineering”. Inoltre, i workshop dovrebbero fornire agli sviluppatori una panoramica dei rischi dell’AI generativa, compresi eventuali problemi di privacy dei dati o di proprietà intellettuale specifici del settore e le migliori pratiche per la revisione del codice assistito dall’AI in termini di progettazione, funzionalità, complessità, standard di codifica e qualità, compreso il modo di discernere le raccomandazioni buone da quelle cattive degli strumenti.
Per gli sviluppatori con meno di un anno di esperienza, la ricerca suggerisce anche la necessità di frequentare corsi aggiuntivi sui principi fondamentali della programmazione, come ad esempio la sintassi della codifica, le strutture dei dati, gli algoritmi, i modelli di progettazione e le abilità di debug, per ottenere gli aumenti di produttività osservati tra coloro che hanno più esperienza.
Una volta che gli sviluppatori iniziano a usare gli strumenti nelle loro attività quotidiane, il loro sviluppo delle competenze dovrebbe continuare con un coaching continuo da parte dei membri senior del team e con la creazione di una comunità, come canali online dedicati e riunioni di team per condividere esempi pratici. Questo sforzo può favorire l’apprendimento continuo, garantire la condivisione delle best practice in tutta l’organizzazione e identificare tempestivamente eventuali problemi. Nella ricerca, i partecipanti hanno notato che, generando più suggerimenti e condividendo gli apprendimenti tra loro, la qualità dei loro suggerimenti è migliorata.
Perseguire casi d’uso avanzati oltre la generazione di codice
Sebbene la capacità dell’AI generativa di generare nuovo codice sia molto apprezzata nel settore, la ricerca dimostra che la tecnologia può avere un impatto su molte attività comuni degli sviluppatori, tra cui il refactoring del codice esistente, che può consentire ai leader di ridurre le attività di modernizzazione, che tradizionalmente richiedono molte risorse e che spesso vengono messe da parte per mancanza di tempo. Ad esempio, se gli strumenti basati sull’intelligenza artificiale generativa aiutano i team a rifattorizzare rapidamente un’applicazione legacy, i team possono reindirizzare il loro tempo per chiudere un arretrato di miglioramenti che languono nella lista delle cose da fare della loro azienda o per migliorare le prestazioni architettoniche dell’intera piattaforma software.
L’implementazione di nuovi casi d’uso richiede un’attenta valutazione degli strumenti, dal momento che una raffica di nuovi strumenti di AI generativa sta arrivando sul mercato e che strumenti diversi eccellono in aree diverse. La ricerca dimostra che l’uso di più strumenti può essere più vantaggioso di uno solo.
Durante lo studio, i partecipanti hanno avuto accesso a due strumenti, uno che utilizzava un modello di base addestrato a rispondere alle richieste dell’utente e un altro che utilizzava un modello di base perfezionato e addestrato specificamente sul codice. I partecipanti hanno indicato che il primo, con le sue capacità di conversazione, eccelleva nel rispondere alle domande durante il refactoring del codice. Il secondo strumento, invece, si è rivelato eccellente per la scrittura di nuovo codice, grazie alla sua capacità di collegarsi all’ambiente di sviluppo integrato e di suggerire codice a partire da un commento descrittivo annotato all’interno del documento. Tuttavia, quando gli sviluppatori hanno utilizzato entrambi gli strumenti di intelligenza artificiale generativa per un determinato compito, anziché uno solo, hanno ottenuto un ulteriore miglioramento dei tempi da 1,5 a 2,5 volte.
Pianificare i cambiamenti di competenze
Con l’aumento della produttività degli sviluppatori, i leader dovranno essere pronti a spostare il personale verso compiti di maggior valore. La definizione di base della produttività e la misurazione continua dei miglioramenti possono rivelare nuove capacità man mano che emergono nell’organizzazione. I leader devono considerare come utilizzare la capacità aggiuntiva e quali sono le competenze necessarie per colmare le eventuali lacune di competenze che potrebbero emergere. Potrebbero, ad esempio, utilizzare il loro talento per consentire l’espansione di nuove attività o per aggiornare più spesso i prodotti esistenti. Questi incarichi richiederebbero agli sviluppatori di acquisire nuove competenze nella progettazione e nell’architettura del software.
Fornire controlli sul rischio
Con gli strumenti basati sull’intelligenza artificiale generativa emergono nuovi rischi legati ai dati, alla proprietà intellettuale e alle normative. Data la velocità con cui gli sviluppatori possono scrivere o aggiornare il codice con questi strumenti, è facile immaginare come qualsiasi problema derivante, ad esempio, da un errore di codifica o da un problema di dati possa espandersi a macchia d’olio. Quando i leader aggiornano la governance, devono considerare rischi potenziali come i seguenti:
- la privacy dei dati e la sicurezza delle terze parti, come ad esempio la possibilità che gli sviluppatori espongano informazioni riservate quando richiedono l’uso degli strumenti
- modifiche legali e normative, comprese le modifiche al Regolamento generale sulla protezione dei dati (GDPR) dell’Unione Europea e altre normative che limitano l’uso della tecnologia
- Vulnerabilità comportamentali dell’AI, compreso l’impatto se i malintenzionati immettono nel pubblico dominio codice dannoso o malfunzionante per influenzare l’addestramento di modelli linguistici di grandi dimensioni o infiltrarsi nelle organizzazioni.
- problemi etici e di reputazione che potrebbero derivare dall’utilizzo di uno snippet di codice protetto da copyright di un’altra entità o da dibattiti sulla proprietà del codice generato dagli strumenti
- vulnerabilità di sicurezza che possono emergere nel codice generato dall’intelligenza artificiale e mettere a rischio i sistemi (e l’organizzazione)
Conclusioni
L’intelligenza artificiale generativa è pronta a trasformare lo sviluppo del software come nessun altro strumento o miglioramento del processo ha fatto. Utilizzando l’attuale classe di strumenti basati sull’AI generativa, gli sviluppatori possono completare le attività fino a due volte più velocemente e questo è solo l’inizio. Con l’evoluzione della tecnologia e la sua perfetta integrazione negli strumenti del ciclo di vita dello sviluppo del software, si prevede un ulteriore miglioramento della velocità e persino della qualità del processo di sviluppo. Ma come dimostra la ricerca McKinsey, gli strumenti da soli non bastano a sbloccare il pieno potenziale della tecnologia. Un approccio strutturato che comprenda la formazione e il coaching sull’AI generativa, la selezione dei casi d’uso, l’aggiornamento della forza lavoro e il controllo dei rischi può gettare solide basi per consentire alle aziende di perseguire la promessa dell’AI generativa di una produttività straordinaria e di una innovazione del software senza precedenti.