ChatGPT e sviluppo software: a che punto siamo?
Abbiamo provato a utilizzare ChatGPT per risolvere un problema di codifica comune quando si lavora su applicazioni CRM e si uniscono le fonti di dati dei clienti. Abbiamo chiesto a ChatGPT: “Dati due elenchi di nomi, scrivi un codice in Python per trovare le corrispondenze dei nomi e calcolare una classifica di somiglianza”. ChatGPT ha risposto: “Puoi usare la libreria FuzzyWuzzy in Python per trovare le corrispondenze e calcolare le classifiche di somiglianza tra i nomi”. ChatGPT ha quindi mostrato il codice per interfacciarsi con FuzzyWuzzy e ha incluso degli esempi per dimostrare i risultati.
Ci sono dibattiti su quanto sia intelligente ChatGPT e se sia in grado di scrivere codice sicuro, ma in ogni caso la sua efficacia sta portando molte persone a capire come l’IA generativa cambierà il lavoro creativo delle persone nel marketing, nel giornalismo, nelle arti e, sì, anche nello sviluppo di software.
“Nei prossimi tre anni le IA generative, come ChatGPT e AlphaCode, avranno sicuramente un impatto immenso sul modo in cui le aziende sviluppano le applicazioni, dalla possibilità di cicli di sviluppo più rapidi ed efficienti fino all’ottimizzazione dell’esperienza dei clienti” afferma David Ben Shabat, vicepresidente della ricerca e sviluppo di Quali. “Con il continuo sviluppo dell’intelligenza artificiale, le aziende potranno utilizzare questi modelli per ottimizzare le esperienze dei clienti, aumentare il loro coinvolgimento, ridurre i costi del servizio clienti e ridurre i costi complessivi.”
Arjun Chandar, CEO di IndustrialML, aggiunge: “Gli strumenti di IA generativa renderanno almeno marginalmente più fattibile l’utilizzo del machine learning per una più ampia gamma di applicazioni in un numero maggiore di domini”. ChatGPT ha già raggiunto più di 100 milioni di utenti e Microsoft lo sta integrando in Bing e in altre applicazioni di Office. Altri concorrenti dell’IA generativa nelle piattaforme di ricerca includono Bard di Google, mentre gli sviluppatori possono testare IA generatrici di codice come AlphaCode e GitHub Copilot. Un’ondata di prodotti SaaS, piattaforme tecnologiche e fornitori di servizi sta integrando le funzionalità di ChatGPT. Ad esempio, Gigster ha introdotto il supporto all’integrazione di ChatGPT ed Equally AI ha lanciato Flowy, una piattaforma di accessibilità web alimentata da ChatGPT.
Non temete l’intelligenza artificiale, ma sfruttate le sue capacità
Se siete uno sviluppatore software o un ingegnere devops, potreste sperimentare gli strumenti di IA generativa e chiedervi cosa tutto ciò significherà per la vostra professione e come cambierà il vostro lavoro. “Gli strumenti di IA generativa come ChatGPT hanno suscitato un certo scalpore nella comunità degli sviluppatori” afferma Marko Anastasov, cofondatore di Semaphore CI/CD. “Alcuni temono che questi strumenti possano togliere loro il lavoro, mentre altri preferiscono ignorarli. Entrambi gli atteggiamenti sono sbagliati perché, come abbiamo visto con GitHub Copilot, uno sviluppatore che integra l’intelligenza artificiale nel proprio flusso di lavoro può sperimentare un incredibile aumento di produttività”.
L’intelligenza artificiale generativa manca di contesto
Ricordate quando avete installato il vostro primo device con Amazon Alexa o Google Assistant a casa vostra, aspettandovi che fosse intelligente e reattivo come il computer di Star Trek? Strumenti utili a volgere compiti semplici come impostare sveglie, aggiungere elementi alla lista della spesa, condividere le previsioni del tempo o aggiornarvi sulle notizie di oggi, ma è quasi improbabile che rispondano con precisione a domande più complesse.
Dan Conn, developer advocate di Sonatype, ritiene che sia importante capire il contesto in cui vengono sviluppati e addestrati gli algoritmi di IA. “Poiché la tecnologia si basa sui dati e non sull’intelligenza umana, a volte il programma può sembrare coerente, ma non fornisce risposte informate in modo critico”, afferma Conn.
Per ora, l’intelligenza artificiale generativa può aiutare a colmare le lacune e ad accelerare l’implementazione di soluzioni all’interno del ciclo di vita dello sviluppo del software, ma avremo ancora bisogno di sviluppatori che guidino le esperienze appropriate. “A ChatGPT manca la capacità di comprendere il contesto umano dell’informatica per programmare bene“, continua Conn. “Gli ingegneri del software possono aggiungere ulteriori dettagli sullo scopo del software che stanno creando e sulle persone che lo utilizzeranno. Non si tratta solo di un mucchio di programmi messi insieme con un codice”.
Shanea Leven, cofondatrice e CEO di CodeSee, afferma: “L’ingegneria richiede molte cose che l’IA non può sostituire, come il contesto, rendendo quasi impossibile per l’IA caricare un singolo modello, addestrarlo e incorporare la capacità predittiva degli esseri umani che capiscono cosa sarà necessario tra cinque anni. Ci sono molte decisioni di ampio respiro, uniche per le diverse aziende, che l’IA non sarà mai in grado di gestire”. Oggi l’IA può fornire esempi di codifica e domani i modelli di IA potrebbero aiutare gli ingegneri a rispondere a domande su architetture e modelli di progettazione. È difficile però pensare che un’IA possa sostituire tutte le conoscenze, le innovazioni e le decisioni che i team di sviluppo software prendono per creare esperienze piacevoli per i clienti e flussi di lavoro produttivi.
Uno strumento di produttività come il low-code
Lo sviluppo del software è andato incontro a molti miglioramenti generazionali nei linguaggi e nelle piattaforme. Molti strumenti aumentano la produttività degli sviluppatori, migliorano la qualità del codice o automatizzano alcuni aspetti della pipeline di distribuzione. Ad esempio, le piattaforme low-code e no-code possono aiutare le aziende a creare e modernizzare un maggior numero di applicazioni, ma stiamo ancora codificando microservizi, sviluppando applicazioni rivolte ai clienti e creando funzionalità di machine learning.
Suresh Sambandam, CEO di Kissflow, ha dichiarato: “Così come il low-code e il no-code non sostituiranno completamente gli sviluppatori e gli ingegneri del software tradizionali, OpenAI fornirà strumenti utili per eliminare le attività ripetitive e accelerare il time-to-market per lo sviluppo delle app”. Un cambiamento di paradigma è rappresentato dal passaggio degli strumenti di ricerca basati su parole chiave a quelli che elaborano le query in linguaggio naturale e rispondono con risposte utili. Sambandam continua: “Inserendo le query in un linguaggio semplice e colloquiale, ChatGPT può generare automaticamente esempi di codice suggeriti per risolvere i problemi molto più velocemente di quanto qualsiasi sviluppatore possa scrivere e sperimentare partendo da zero con il codice”.
“Vedremo un enorme cambiamento, non solo nella produttività ma anche nel modo in cui otteniamo le informazioni più velocemente”, aggiunge Leven. “L’intelligenza artificiale consentirà agli sviluppatori di potenziare le decisioni ripetitive che gli ingegneri devono prendere, come ad esempio le domande generiche su un linguaggio”.
Migliorare le applicazioni conversazionali
Gli sviluppatori devono anche considerare il modo in cui ChatGPT alza il livello delle aspettative degli utenti. Man mano infatti che un numero sempre maggiore di persone viene colpito dalle capacità di ChatGPT, i dipendenti e i clienti si aspetteranno esperienze di ricerca tramite intelligenza artificiale con query in linguaggio naturale e app che rispondono alle domande.
“Le IA generative sono molto promettenti nei settori della ricerca e del servizio clienti”, afferma Josh Perkins, CTO di Ahead. “Questi modelli dimostrano la realtà della ricerca complessa in linguaggio naturale e della memoria contestuale, consentendo di rispondere a richieste anche complesse in modo conversazionale, in brevissimo tempo e senza l’intervento di un operatore del servizio clienti”.
L’IA generativa può anche migliorare il flusso di lavoro e supportare l’iperautomazione, collegando persone, automazione e capacità di IA. “Le tecnologie di IA generativa hanno un’enorme opportunità di essere utilizzate per automatizzare e migliorare vari aspetti dello sviluppo delle applicazioni e della progettazione dell’esperienza del cliente”, afferma Sujatha Sagiraju, Chief Product Officer di Appen. Ma utilizzare l’IA generativa per apportare modifiche sistematiche ai flussi di lavoro non è facile. Nel libro Power and Prediction: The Disruptive Economics of Artificial Intelligence, gli autori mettono in evidenza la differenza tra soluzioni puntuali (come la ricerca di esempi di codice) e soluzioni di sistema di IA che richiedono trasformazioni più sostanziali.
Sagiraju osserva: “L’IA generativa richiede ancora un feedback da parte di persone reali per la messa a punto, al fine di garantire che il modello funzioni in modo accurato. I dati e gli esseri umani che stanno dietro a questi modelli ne definiranno i successi e i fallimenti”.
Selezionare i domini ottimali e testare risposte di qualità
Quindi, in quali ambiti gli sviluppatori di software possono sfruttare l’IA generativa oggi? È facile capire la sua utilità nel trovare esempi di codifica o nel migliorare la qualità del codice, ma i product manager e i loro team di sviluppo agile dovrebbero convalidare e testare i loro casi d’uso prima di inserire l’IA generativa nella loro applicazione.
“Il rischio che un’IA non gestita produca contenuti imprecisi o incompleti può essere, nel migliore dei casi, un po’ fastidioso, ma in altri casi può essere incredibilmente costoso, soprattutto se utilizzata per il servizio clienti o per rappresentare un brand”, afferma Erik Ashby, responsabile del prodotto di Helpshift. “Anche se all’inizio ci sarà la tentazione di lasciare che l’IA si occupi da sola della generazione di contenuti, come ad esempio un chatbot non monitorato, i brand si renderanno presto conto che per gestire questo rischio devono adottare una strategia combinata in cui gli esseri umani e l’IA lavorano insieme”.