Ho letto spesso negli ultimi mesi come l’instroduzione dell’IA stia diventando una minaccia sempre più preoccupante per moltissimi profili professionali, tra cui ovviamente la categoria degli sviluppatori. La preoccupazione principale risiede nelle dimostrazioni sempre più impressionanti di strumenti come GPT-4 che man mano stanno padroneggeranno linguaggi HTML/CSS/JS, al punto tale da sostituire gli addetti ai lavori.
Se da un lato riconosco l’utilità di AI, dall’altro non posso fare altro che smentire affermazioni catastrofiche… almeno per il momento.
Fin dagli albori abbiamo assistito a costanti evoluzioni negli strumenti di sviluppo per il Web. Ad esempio, il linguaggio CSS è stato rilasciato per la prima volta nel 1996 con Internet Explorer 3. Nel giro di due anni è stato lanciato il primo strumento “no-code”, Homestead, che ha permesso alle persone di creare le proprie pagine web senza una sola riga di codice. Quindi, fin quasi dall’inizio, c’era la preoccupazione che gli sviluppatori web diventassero obsoleti a causa di qualche nuova tecnologia.
Negli anni 2000 era WordPress. Negli anni 2010 era Webflow. Tutti strumenti “no-code”. In un certo senso, gli sviluppatori web sono davvero diventati obsoleti! In questi giorni, se un panificio, un dentista o un artista locale ha bisogno di un sito web, probabilmente non assumerà sviluppatoriper scrivere qualcosa da zero. Apriranno un account su Wix, Flazio, WordPress, Google Sites e sceglieranno un modello che preferiscono per pochi euro al mese.
Tuttavia, gli sviluppatori web continuano ad esistere.
OpenAI ha tenuto una demo GPT-4 a marzo 2023 ed è stato piuttosto impressionante: GPT-4 può prendere uno schizzo disegnato a mano e trasformarlo in un sito web completo, con un po’ di JS per far funzionare il pulsante Reveal Punchline.
È fantastico e penso che questo strumento abbia un grande potenziale quando si tratta di prototipazione… Ma sia chiaro: non abbiamo avuto bisogno di sviluppatori web per decenni per creare pagine come questa. C’è un’enorme differenza tra questo documento HTML e il tipo di sviluppo front-end che esiste oggi.
Guardiamo al futuro
La maggior parte delle demo che ho visto finora hanno una portata piuttosto limitata: una semplice pagina HTML o una singola funzione JavaScript. Qualcosa che uno sviluppatore può fare in poco tmepo. Ma è solo l’inizio! Se tutto continua ad evolversi allo stesso ritmo, tra un paio d’anni sarà possibile creare intere applicazioni, giusto?
Aziende come OpenAI dedicano molto tempo ed energie a modificare modelli BNM (Bayesian network model) per migliorare i profitti. Un intero esercito di marcatori umani valuta gli output del modello, e in questo modo il modello apprende e si sviluppa.
Se hai sperimentato strumenti come ChatGPT o la ricerca AI di Bing, probabilmente avrai notato che le risposte possono essere corrette solo circa l’80% delle volte, sebbene forniscano sempre una certezza assoluta e incrollabile. BNM non può testare i loro presupposti e ipotesi. Non possono confermare se ciò che dicono è vero o no. Giocano a indovinare dando caratteri che ritengono compatibili con la stringa di caratteri dall’input. A volte alcune parti delle loro risposte risultano essere completamente prive di significato. Il team di OpenAI le chiama “allucinazioni”.
Man mano che la tecnologia migliora, possiamo aspettarci che alcuni dei dossi vengano eliminati, ma in realtà ci sarà sempre un certo livello di imprecisione. Questi strumenti semplicemente non hanno un meccanismo per verificare oggettivamente le loro risposte.
Quindi la precisione migliorerà, ma non sarà mai perfetta. E questo è un problema se stiamo parlando di rendere ridondanti gli sviluppatori web. Se non sei un programmatore, non sarai in grado di dire cosa è vero e cosa no . Non sarai in grado di rilevare queste “allucinazioni”.
Nella demo di GPT-4 si vede come l’IA può ripararsi da sola! Se viene visualizzato un messaggio di errore, carica i suoi modelli e lei troverà e risolverà il problema. Tuttavia non tutte le allucinazioni portano a eccezioni. Ad esempio, di recente ho utilizzato GPT-4 per generare un componente finestra modale con React. E mentre l’output è stato sorprendentemente buono, l’IA ha comunque creato alcuni bug di accessibilità. La persona che crea l’applicazione potrebbe non notare questi problemi, ma gli utenti finali li noteranno sicuramente.
E le vulnerabilità nel codice? Chi sarà responsabile se le cose andranno terribilmente male?
Un altro punto: c’è un’enorme differenza tra la creazione di un documento HTML di 50 righe e l’output di un’applicazione web pronta per la produzione. Anche una piccola app come il mio blog personale ha decine di migliaia di righe di codice e centinaia di file. Senza considerare il contenuto del testo… Anche se la precisione è del 95%, sarà incredibilmente difficile eseguire il debug. Sarà come uno sviluppatore che scrive un enorme progetto per mesi e non lo lancia mai finché non è completo al 100%. Sarà solo un incubo.
L’intelligenza artificiale non è magica. È valido solo quanto i dati utilizzati per addestrarlo. Ci sono tonnellate di frammenti di codice su Internet e spesso sono molto generici. Allo stesso tempo, ogni base di codice è unica. Esistono pochissime basi di codice open source importanti. E allora come dovrebbe l’IA imparare a creare veri e propri grandi progetti?
Ci stiamo muovendo molto rapidamente al punto in cui i non sviluppatori possono sedersi con un chatbot e mettere insieme un piccolo progetto autonomo, che è ciò per cui le persone attualmente utilizzano strumenti come Webflow. Ed è molto bello! Ma penso che siamo ancora molto lontani dal fatto che le grandi aziende tecnologiche licenzino i loro sviluppatori e li sostituiscano con operatori di chatbot. Mi sembra che ci siano al momento parecchi problemi potenzialmente irrisolvibili che impediscono che ciò diventi realtà.
Complementare, non sostituire
Lo scenario più probabile potrebbe essere che strumenti come GPT-4 vengano integrati negli strumenti per sviluppatori e utilizzati per estendere ciò che può fare uno sviluppatore esperto.
I falegnami non sono stati sostituiti da utensili elettrici, i contabili non sono stati sostituiti da fogli di calcolo, i fotografi non sono stati sostituiti da fotocamere digitali e smartphone e non credo che gli sviluppatori saranno sostituiti da IA.
Mi chiedevo davvero se il numero totale di lavori per sviluppatori potesse diminuire. Dopotutto, se ogni sviluppatore è significativamente più efficiente, ne avremo bisogno di meno, giusto?
Non necessariamente. Al momento, la domanda di sviluppatori supera di gran lunga l’offerta. Cosa succede se gli sviluppatori improvvisamente diventano due volte più produttivi? Verranno corretti più bug, verranno rilasciate più funzionalità, verranno realizzati più profitti. Non mancano le attività e quindi è improbabile che gli sviluppatori rimangano inattivi.
La preoccupazione nel mondo lavorativo
Aaron Blaze è un animatore e illustratore di lunga data. Ha lavorato per la Disney per quasi 20 anni, lavorando in film Disney classici come La bella e la bestia (1991), Aladdin (1992), Pocahontas (1995) e altri. Tempo fa ha pubblicato un video su YouTube: L’animatore Disney risponde all’animazione AI. Chi ha letto l’articolo fino a questo punto noterà che la sua opinione suonerà familiare: non vede questi strumenti come una minaccia, li vede come qualcosa che aumenterà la produttività dell’animatore e porterà a più lavori.
Artisti e lavoratori della conoscenza in dozzine di industrie stanno ora avendo la stessa conversazione. Le persone sono preoccupate di essere sostituite da IA come GPT-4, DALL-E 2 e Midjourney. Ad esempio, un GPT-4 può superare un esame di avvocato simulato con un punteggio massimo del 10%. La mia convinzione personale è che, per la maggior parte, i professionisti che lavorano troveranno modi per integrare questa tecnologia nei loro flussi di lavoro, aumentando la loro produttività e valore. Alcuni compiti possono essere delegati all’IA, ma non tutti i lavori .
Front-end vs altre discipline ingegneristiche
C’è chi pensa che i front-end sono particolarmente suscettibili di essere sostituiti dall’IA e suggeriscono di spostare le proprie competenze in altre aree, come back-end o elaborazione dei dati. Mi sembra che sia tutto il contrario. Non credo che nessun programmatore dovrebbe preoccuparsi, ma se qualcuno è vulnerabile, probabilmente sono gli sviluppatori back-end.
Al livestream OpenAI GPT-4, sono state mostrate due demo relative al codice: un sito front-end sulle barzellette e un bot Discord in Python. Dei due progetti, il codice Python mi è sembrato molto più pronto per la produzione. Invece, la differenza tra l’HTML di base generato da un sito di barzellette e il codice front-end che scrive uno sviluppatore è enorme. Anche se si tratta di una generalizzazione eccessiva, negli ultimi dieci anni gran parte della complessità è passata dal server al client. Le applicazioni Express.js monolitiche sono diventate set di funzionalità serverless, mentre le nostre interfacce si sono evolute da documenti Word con collegamenti ipertestuali ad applicazioni complete.
Inoltre, il frontend è la parte del prodotto con cui gli utenti interagiscono. Le aziende di solito vogliono che il loro prodotto sia su misura, unico e accuratamente abbinato al loro marchio. Il backend, invece, è invisibile. Un backend in copia carbone è molto più accettabile per loro rispetto allo stesso frontend. Un numero elevato di persone crede che il backend sia molto più complicato o complesso del frontend, che la “vera” programmazione avvenga sul server. Ma in realtà, in alcuni casi, è proprio il contrario.
AI e formazione personale
Penso che questo sia un modo molto interessante di usarlo. In sostanza, ChatGPT è come un programmatore sparring partner che può farti capire cose che non capisci. Puoi fargli domande specifiche e ottenere risposte specifiche. Ma penso che dovresti stare attento. C’è un modo giusto e un modo sbagliato di utilizzare tali strumenti nell’insegnamento.
Analogamente alla formazione, un esempio sbagliato di usare AI è la navigazione GPS. Quando devo andare da qualche parte, digito l’indirizzo nel mio GPS e seguo le sue istruzioni senza fare troppe domande. Anche se sono discutibili a volte alcuni tragitti per arrivare a destinazione, di solito finisco dove devo andare, e ciò non richiede alcuno sforzo mentale da parte mia. Di conseguenza, il mio orientamento nello spazio si è completamente atrofizzato. Non posso andare da nessuna parte senza che una voce sintetizzata mi dica cosa fare. Che non va bene.
allora forse sarebbe meglio ascoltare quello che dice, ma non prendere tutto in parola. Restiamo scettici e critici nei confronti di ogni sua parola. Invece di copiare alla cieca il codice generato da ChatGPT, lo esaminiamo riga per riga assicurandoci di capirlo. Chiediamo chiarimenti e ricontrolliamo le cose che sembrano sospette con fonti autorevoli (come la documentazione ufficiale).