L'AI non sta solo semplificando la codifica: la rende più divertente.

19 febbraio 2025

Autori

Tim Mucci

Writer

Gather

L'AI sta migliorando l'esperienza degli sviluppatori

L'AI generativa (AI) sta cambiando il modo in cui vengono realizzati i film, le attività di marketing e il modo in cui si gioca. Sebbene molta dell'attenzione dei media sia concentrata su ciò che la gen AI può fare in termini di trasformazione digitale, creazione di contenuti e aumento della produttività, viene prestata meno attenzione a come si potrebbe rendere la più soddisfacente, persino divertente, la programmazione.

L'AI generativa, utilizzata come assistente alla codifica, non solo aiuta gli ingegneri del software a svolgere il proprio lavoro più rapidamente, ma aumenta anche la soddisfazione e il coinvolgimento degli sviluppatori. Gli sviluppatori utilizzano la gen AI per scrivere codice standard e a definire la formattazione di base, così da avere più tempo per concentrarsi sugli aspetti creativi del lavoro, come la risoluzione dei problemi, la creazione di nuove logiche e la progettazione di sistemi unici. Queste attività creative di livello superiore sono spesso quelle che i programmatori preferiscono svolgere.

Uno studio di McKinsey ha rilevato che gli sviluppatori che utilizzano strumenti di gen AI avevano più del doppio delle probabilità di segnalare uno stato di felicità complessivo, così come la soddisfazione e la capacità di raggiungere uno stato di operatività ottimale sul luogo di lavoro.

Pensiamo a uno sviluppatore a cui è stato assegnato il compito di realizzare una nuova applicazione web per una piattaforma di e-commerce. Lo sviluppatore può progettare un'esperienza utente e implementare funzionalità come un motore di raccomandazione e la definizione dinamica dei prezzi. Tuttavia, prima di poter iniziare a lavorare sugli elementi interessanti del design, lo sviluppatore ha una montagna di lavoro da svolgere.

Deve configurare il back-end, il che richiede la scrittura dello stesso codice boilerplate che ha scritto dozzine di volte in precedenza, l'esecuzione di inizializzazioni, la definizione di percorsi di base e la configurazione del middleware. Nessuno di questi elementi è esclusivo di questo progetto, tuttavia ogni elemento è necessario per l'applicazione. Una volta terminate le attività di base, è necessario stabilire una connessione al database e configurare i driver del database insieme agli schemi per prodotti, clienti e ordini, oltre a innumerevoli altre attività che non riguardano la codifica o lo sviluppo.

Anche se lo sviluppatore potrebbe essere felice di arrivare alle funzionalità principali che renderanno la piattaforma unica e piacevole per gli utenti, il lavoro di boilerplate assorbe gran parte delle tempistiche del progetto. Sebbene sia necessario gettare queste solide fondamenta, la produttività dello sviluppatore potrebbe rallentare perché questo lavoro di routine sembra pesante rispetto agli aspetti più creativi della codifica.

Design 3D di palline che rotolano su una pista

Le ultime notizie e insight sull'AI 


Scopri notizie e insight selezionati da esperti in materia di AI, cloud e molto altro nella newsletter settimanale Think. 

Le sfide intrinseche della codifica

La codifica richiede molto tempo ed è soggetta a errori. Richiede tempo e risorse significativi per produrre risultati di alta qualità. Gli studi dimostrano che, nel ciclo di sviluppo tradizionale, gli sviluppatori dedicano in media 1 ora al giorno alla codifica effettiva, mentre le attività ripetitive e indifferenziate consumano la maggior parte del loro tempo. Queste attività spesso comportano la gestione di basi di codice di tipo legacy, la documentazione dei processi, la scrittura di test, la gestione delle versioni, il debug degli errori e l'identificazione delle vulnerabilità a livello di sicurezza. Ad esempio, una giornata tipica per un programmatore potrebbe iniziare con la revisione del codice o di una richiesta pull. A questo potrebbe seguire la risoluzione di un bug segnalato da un team di controllo qualità, quindi la stesura di un piano di implementazione, il tutto prima che lo sviluppatore possa scrivere una sola riga di nuovo codice.

"L'AI generativa consente agli sviluppatori di automatizzare le attività noiose e banali che sottraggono tempo alla creazione di software", afferma Anna Gutowska, data scientist di IBM. Ad esempio, qualcosa di semplice come un bot che esegue degli script per prima cosa al mattino e genera un "rapporto sullo stato di salute" del tuo software. Ciò significa che si dedica meno tempo all'esecuzione di script manuali e più tempo a utilizzare le proprie competenze".

Gli sviluppatori devono anche rimanere aggiornati sulle tecnologie e sui framework in evoluzione, come React, Kubernetes o Flutter. Non è un'impresa da poco, poiché il panorama dello sviluppo software si evolve rapidamente. Tenere il passo con questi progressi richiede un notevole investimento in termini di tempo, da dedicare all'apprendimento continuo e alla sperimentazione, lasciando meno tempo agli aspetti creativi e gratificanti dello sviluppo. La costante necessità di destreggiarsi tra queste responsabilità, unita alla pressione di fornire codice robusto e privo di errori, può rendere la codifica una professione che produce stress e sopraffazione.

Gli strumenti di AI generativa svolgono anche un ruolo nei workflow DevOps, facilitando l'automazione delle implementazioni, l'integrazione e il monitoraggio continui. Oltre all'assistenza alla codifica, l'AI generativa può fornire analisi dei dati e aiutare i programmatori a interpretare set di dati complessi per valutare meglio l'impatto delle decisioni a livello di architettura e ottimizzazione dei sistemi.

L'AI ama la noia

Forse è esagerato dire che l'AI "ama" i compiti noiosi, tuttavia eccelle nel trovare e replicare schemi complessi, il che la rende una soluzione ideale per automatizzare gli aspetti ripetitivi della codifica. Attività come la generazione di codice standard, quei pezzi noiosi ma necessari dell'impalcatura, possono essere svolte in pochi secondi da strumenti di AI generativa. L'AI può anche contribuire all'integrazione dell'application programming interface (API), generando automaticamente gli endpoint, gestendo l'autenticazione, strutturando le richieste e riducendo il lavoro di codifica manuale. Un altro esempio, descritto su Wired, è uno strumento di AI chiamato SWE-agent. Questo strumento di AI ha identificato un bug in un repository GitHub, ha individuato il file pertinente e ha modificato il codice correttamente, risparmiando ore di potenziale tempo di debug allo sviluppatore amatoriale.

Questi strumenti non sono semplici assistenti: alcuni sono simili a mentori di livello esperto. I sistemi di AI generativa possono fornire spiegazioni, esempi e indicazioni in tempo reale, consentendo agli sviluppatori di dedicare meno tempo alla risoluzione dei problemi e più tempo all'innovazione. Questo cambiamento consente loro di concentrarsi sulla scrittura di codice di qualità, come la progettazione di soluzioni creative o il miglioramento delle architetture di sistema, riducendo al contempo il carico cognitivo associato alla risoluzione ripetitiva dei problemi. Rilevando e perfezionando automaticamente le modifiche al codice, l'AI aiuta a prevenire la regressione e garantisce che le nuove implementazioni siano in linea con le best practice.

"IBM watsonx Code Assistant è stato in grado di identificare diverse potenziali vulnerabilità, perdite di memoria e cattive pratiche di codifica... e ha fornito consigli per il miglioramento." - Feedback di un cliente su IBM watsonx Code Assistant

 

L'AI generativa accelera anche l'apprendimento da parte degli sviluppatori. Li aiuta a comprendere rapidamente nuovi linguaggi di programmazione, framework e paradigmi, offrendo insight su basi di codice complesse o sconosciute. Per gli sviluppatori junior, i benefici sono particolarmente sorprendenti.

"Non avevamo grandi aspettative, ma siamo rimasti piacevolmente sorpresi da quanto sia efficace", afferma Asher Scott, sviluppatore full stack di IBM, riferendosi a watsonx Code Assistant. "Mi ha aiutato a portare le mie competenze a un livello superiore".

Gli sviluppatori junior segnalano aumenti significativi della produttività e dell'acquisizione delle competenze, che li aiutano a migliorare la propria esperienza e la sicurezza in sé stessi più velocemente rispetto ai metodi tradizionali. Rimuovendo le barriere all'ingresso e semplificando il processo di apprendimento, l'AI consente agli sviluppatori di ogni livello di affrontare le sfide con maggiore entusiasmo.

Flessibilità e soddisfazione lavorativa

Secondo un sondaggio di KPMG, metà dei programmatori intervistati ritiene che AI e automazione abbiano avuto un impatto positivo sulla loro carriera, migliorando la produttività e aprendo nuove opportunità. In modo simile, un sondaggio condotto da OpenAI ChatGPT ha rivelato che il 50% degli sviluppatori ha riportato un miglioramento della produttività utilizzando l'AI, mentre il 23% ha ottenuto guadagni significativi.

Secondo un sondaggio condotto da GitHub, questi guadagni di produttività offrono maggiori efficienze al workflow esistente di un programmatore. Gli sviluppatori che utilizzano strumenti di codifica AI segnalano una maggiore soddisfazione, grazie alla loro capacità di automatizzare attività ripetitive o noiose per concentrarsi sulla progettazione della soluzione piuttosto che sul codice standard. Gli assistenti per la stesura del codice aiutano a ridurre la tensione mentale e possono potenzialmente prevenire il burnout. Aiutano gli sviluppatori a soddisfare gli standard delle prestazioni più facilmente, con conseguente miglioramento della qualità del codice, output più rapidi e riduzione degli incidenti.

L'impatto dell'AI generativa sulla soddisfazione lavorativa deriva in gran parte dalla sua capacità di fornire insight e semplificare i workflow più noiosi nel campo della programmazione. Ad esempio, strumenti di sviluppo basati su AI, come watsonx Code Assistant (WCA), GitHub Copilot e SWE-Agent, hanno dimostrato la potenza della generazione, del debug e dell'ottimizzazione di codice in tempo reale. Questo tipo di efficienza non solo riduce la frustrazione, ma consente anche agli sviluppatori, in particolare agli sviluppatori junior, di concentrarsi sulla risoluzione di problemi più complessi e gratificanti. Automatizzando le attività di routine, gli strumenti basati su AI migliorano la funzionalità, consentendo agli sviluppatori di concentrarsi sull'innovazione piuttosto che sulla codifica ripetitiva.

Secondo GitHub, il 57% degli sviluppatori intervistati afferma che l'utilizzo di strumenti di codifica AI li aiuta a sviluppare le proprie competenze nel linguaggio di codifica e considerano questo il principale beneficio dell'utilizzo di queste applicazioni (il secondo beneficio è la maggiore produttività). Questo suggerisce che gli sviluppatori considerano l'uso degli strumenti di codifica AI come un modo per migliorare le competenze mentre lavorano, invece di aggiungere un'altra attività di apprendimento e sviluppo alla loro giornata lavorativa.

Per gli sviluppatori junior, l'AI generativa accelera l'upskilling e il reskilling, fornendo esempi in tempo reale e indicazioni contestuali, aiutandoli ad acquisire velocemente nuove competenze e a contribuire più rapidamente ai loro team. Con WCA, i team di sviluppo che lavorano in ambienti di sviluppo aziendale complessi, come la modernizzazione del mainframe o la migrazione Java, possono automatizzare le trasformazioni del codice ricevendo insight sulle best practice basate sull'AI. Ciò significa che gli sviluppatori junior possono portare avanti le proprie attività senza doversi fermare per consultare uno sviluppatore senior con la stessa frequenza, il che consente loro di acquisire più velocemente autonomia e sicurezza nelle proprie capacità.

L'AI sta anche trasformando il modo in cui gli sviluppatori affrontano la prototipazione e l'innovazione. I lavori che una volta richiedevano ore di codifica manuale ora possono essere completati in una frazione del tempo. Ad esempio, uno sviluppatore che progetta una nuova funzionalità potrebbe utilizzare l'AI generativa per creare una bozza di implementazione, iterarla rapidamente e integrarla in un progetto più ampio. Queste tempistiche più rapide favoriscono maggiore sperimentazione e creatività, due aspetti spesso più soddisfacenti nello sviluppo di software.

Automatizzando le attività di routine, gli sviluppatori possono adattarsi più facilmente ad ambienti di lavoro remoti o asincroni. Gli strumenti di AI consentono anche una migliore collaborazione, poiché generano suggerimenti e spiegazioni facili da consultare e comprendere da parte dei componenti del team. Questi miglioramenti contribuiscono a un'esperienza positiva per gli sviluppatori, rendendo lo sviluppo del software non solo più produttivo ma anche più adattabile alle diverse esigenze della forza lavoro moderna e migliorando la soddisfazione sul lavoro e l'equilibrio tra lavoro e vita privata.

Gli strumenti di AI generativa aiutano gli sviluppatori anche a perfezionare le proprie competenze, fornendo metriche che consentono loro di monitorare e migliorare la propria produttività. Allo stesso modo, forniscono agli sviluppatori e all'organizzazione le conoscenze necessarie per adottare nuove tecnologie in modo efficace e per valutare il pieno impatto dell'integrazione dell'AI. Questo, a sua volta, alimenta una cultura dell'apprendimento continuo e dell'innovazione tra i programmatori.

Sviluppo di applicazioni

Sali a bordo: sviluppo di applicazioni Enterprise nel cloud

In questo video il Dr. Peter Haumer illustra l'aspetto del moderno sviluppo di applicazioni aziendali nell'hybrid cloud, mostrando diversi componenti e pratiche, tra cui IBM Z Open Editor, IBM Wazi e Zowe. 

Il tocco umano è insostituibile

L'esperienza dell'essere umano rimane parte integrante del processo di sviluppo del software. Anche se l'AI può identificare i bug e suggerire correzioni, non dispone della comprensione e dell'intuizione di uno sviluppatore esperto. Gli esseri umani sono meglio attrezzati per discernere l'intento dietro il codice, valutarne l'allineamento con gli obiettivi aziendali e applicare il contesto organizzativo per garantire che soddisfi i requisiti del progetto. Le menti delle macchine hanno difficoltà a interpretare i sottili compromessi o a navigare in scenari ambigui, rendendo indispensabile il giudizio umano.

L'adozione della tecnologia di AI generativa non è stata priva di problematiche. L'impatto della tecnologia non è uniforme tra i livelli di esperienza. Gli sviluppatori junior spesso traggono i maggiori benefici, perché l'AI li aiuta a imparare e a contribuire più velocemente. Per loro, l'AI funge da insegnante e colma le lacune a livello di conoscenze, accelerando la loro crescita. Al contrario, secondo MIT Sloan, gli sviluppatori senior segnalano miglioramenti pari solo all'8%-13%. Non è chiaro se ciò sia dovuto al fatto che la loro esperienza supera la tecnologia o alla riluttanza a integrare l'AI nei loro workflow.

Un altro problema della codifica assistita dall'AI è il rischio di debito tecnico. L'eccessivo affidamento all'AI per le correzioni rapide può introdurre scorciatoie che si accumulano nel tempo, generando nel lungo periodo complessità che richiedono un impegno significativo per essere risolte. Inoltre, alcuni temono che gli strumenti di codifica basati sull'AI possano portare a un'erosione delle competenze, in cui gli sviluppatori si affidano troppo all'automazione anziché affinare le proprie capacità di risoluzione dei problemi e di codifica. Se il pensiero critico e le competenze pratiche di codifica si atrofizzano, gli sviluppatori potrebbero avere difficoltà ad affrontare sfide complesse e ad alto rischio in futuro.

Tuttavia, gli strumenti di codifica AI sono più potenti quando lavorano in collaborazione con gli sviluppatori umani, non al loro posto. Sebbene l'AI generativa possa accelerare i workflow e automatizzare le attività ripetitive, il suo vero valore risiede nell'aumentare le competenze umane, aiutando gli sviluppatori a concentrarsi sulla risoluzione creativa dei problemi, sull'architettura e sull'innovazione.

Un buon esempio è rappresentato da RKube, un fornitore di soluzioni IT basato in Marocco, che ha utilizzato watsonx Code Assistant di IBM per modernizzare le applicazioni Java. Automatizzando la trasformazione del codice, gli sviluppatori sono stati in grado di spostare la propria attenzione dal refactoring manuale alla risoluzione dei problemi a più alto valore, rendendo di fatto i workflow più efficienti e la forza lavoro più motivata.

Soluzioni correlate
IBM Enterprise Application Service for Java

Un servizio single-tenant completamente gestito per lo sviluppo e la distribuzione di applicazioni Java.

Esplora le applicazioni Java
Soluzioni DevOps

Utilizza il software e gli strumenti DevOps per creare, distribuire e gestire app cloud-native su più dispositivi e ambienti.

Esplora le soluzioni DevOps
Enterprise Application Development Services

Lo sviluppo di applicazioni cloud significa programmare una volta, iterare rapidamente e distribuire ovunque.

Servizi per lo sviluppo di applicazioni
Fai il passo successivo

I servizi di consulenza per lo sviluppo delle applicazioni IBM Cloud offrono consulenza esperta e soluzioni innovative per semplificare la tua strategia cloud. Collabora con gli esperti di cloud e sviluppo di IBM per modernizzare, scalare e accelerare le tue applicazioni, ottenendo risultati trasformativi per la tua azienda.

Esplora i servizi per lo sviluppo di applicazioni Inizia a creare gratuitamente con IBM Cloud