Ehi, licenziamo tutti gli sviluppatori e sostituiamoli con l’intelligenza artificiale!
L’intelligenza artificiale diventerà davvero molto brava a scrivere codice. È anche migliaia di volte più economico degli umani. Cosa significa questo per la professione del software?
Questo è una sorta di complemento al mio recente articolo del CACM, The End of Programming . In quell’articolo, ho posto la domanda su cosa succede quando la scrittura del codice viene sostituita dall’addestramento delle IA. In questo, sto esaminando le implicazioni a breve termine dell’IA che diventa davvero brava a scrivere software per noi.
Sembra chiaro che l’intelligenza artificiale per la generazione, il debug e il refactoring del codice migliorerà molto, molto meglio nei prossimi due anni. Non penso che questo sia controverso, ma per rafforzare un po ‘l’argomento: (1) CoPilot è già fantastico nel generare nuovo codice dato il contesto e il suggerimento appropriati; e (2) Non ci sono altro che più dati e modelli più grandi che impediscono a CoPilot di migliorare di un ordine di grandezza.
Prima di utilizzare regolarmente CoPilot, pensavo che avrebbe solo ripetuto a pappagallo le soluzioni per giocare ai compiti universitari. Quello che ho scoperto è che, in pratica, CoPilot legge la mia mente molto più spesso di quanto dovrebbe. Penserò al prossimo codice da scrivere, ad esempio un unit test o le prossime righe di codice che manipolano una struttura di dati o altro, e CoPilot scrive magicamente il codice che stavo per digitare. È pazzesco.
Quindi, cosa succede quando la generazione del codice AI diventa 100 volte migliore di quanto non sia oggi?
Da PRD a codice in 0,001 secondi
Ho sentito un’enorme quantità di scetticismo sul fatto che l’IA possa fare un buon lavoro scrivendo codice, facendo revisioni del codice o correggendo bug: è semplicemente un problema troppo difficile e gli strumenti di intelligenza artificiale attualmente fanno schifo e continueranno a fare schifo. Penso che questo sia un classico esempio di esseri umani che sono davvero pessimi nell’estrapolare da dati recenti.
La mia ipotesi è che in un futuro non troppo lontano – forse 3 anni – sarà possibile istruire un’IA a prendere una specifica di linguaggio naturale di alto livello di un pezzo di software – un PRD, o una segnalazione di bug, o un thread Slack, ad esempio, e genera un codice “perfettamente perfetto” da esso. Cosa intendo per “perfettamente bene”? Bene, prima di tutto, prendiamo sul serio per un minuto la qualità del codice prodotto da un tipico essere umanoteam di sviluppo. Ho lavorato in posti come Google e Apple, e lascia che te lo dica, la qualità del codice è, ehm, non sempre la migliore. Anche in Google, dove la revisione del codice è una religione, le guide di stile sono il vangelo e il codice di ogni team è aperto al controllo e talvolta allo sfruttamento da parte di ogni altro ingegnere dell’azienda: devo dire che c’è un sacco di codice di merda. (Forse meno di quando me ne sono andato, non che ci sia, ehm, alcuna correlazione.)
Dobbiamo allontanarci dall’idea che i team di software umani siano in qualche modo in grado di scrivere codice corretto e performante, se solo ci dedicassero abbastanza tempo ed energia. Questo non è mai stato vero in nessun progetto software non banale. Nel mondo reale, tolleriamo un’enorme quantità di problemi ed errori nel software prodotto dall’uomo, quindi perché impostare le aspettative per il codice generato dall’IA in modo diverso?
Entro il 2026, ci fidiamo completamente dell’intelligenza artificiale al punto da poter semplicemente lasciare che produca codice senza alcun input da parte di umani a sangue rosso? Probabilmente non per un po’, ma fortunatamente possiamo fare in modo che gli umani esaminino il codice generato dall’IA e lo ripetano (con l’assistenza dell’IA). Anche se il codice generato dall’intelligenza artificiale è più difficile da esaminare rispetto al codice scritto dall’uomo, questo sarà di ordini di grandezza più conveniente ed efficiente in termini di tempo rispetto all’affidarsi a persone lente per eseguire la codifica.
L’intelligenza artificiale è molto, molto, molto più economica degli umani.
Quanto costerebbe un “team software” basato sull’intelligenza artificiale?
Usiamo il prezzo attuale per il davincimodello GPT-3 — token da $ 0,02/1K — come benchmark conservativo (questo prezzo è destinato a scendere molto, molto nel tempo). Supponiamo che un tipico ingegnere del software umano produca ogni giorno circa 100 righe di codice nuovo o modificato. (Non sto contando tutto il codice abbandonato o sperimentale che non arriva mai al ramo principale.) Sì, questo numero è completamente inventato, ma anche se sono fuori di un fattore 10, o anche 100, il mio punto è ancora valido. Una tipica riga del file sorgente è di circa 10 token, quindi equivale a circa 1.000 token al giorno.
(Per radicare un po ‘questo, ho preso un tipico file sorgente dalla nostra base di codice composto da poche centinaia di righe di codice Python piuttosto stretto e l’ho tokenizzato utilizzando Codex tokenizer di OpenAI . Ciò ha prodotto una media di 9,55 token per riga. Quindi la mia ipotesi di 10 gettoni una linea sembra una stima ragionevole.)
GPT-3 addebita sia i token di input che quelli di output, quindi supponiamo per amor di discussione che il contesto di input per un futuro agente di creazione software basato su CoPilot sarebbe, diciamo, 5 volte la dimensione dell’eventuale output di codice (di nuovo, sputando qui). Ciò equivale a 5.000 token di input più i suddetti 1.000 token di output, 6.000 in tutto. In altre parole, l’ utilizzo di GPT-3, con il suo prezzo attuale, costa ben $ 0,12 per generare la stessa quantità di codice che farebbe un ingegnere umano in un giorno.
Quanto costa al giorno un ingegnere informatico umano? Bene, se bevono tante Diet Coke quanto me, è già molto più di 12 centesimi. Ipotizzando prudentemente un costo annuale complessivo di $ 300.000 (incluso stipendio, benefici, Diet Coke, il lotto), con circa 250 giorni lavorativi in un anno solare, un tipico ingegnere del software costa circa $ 1200 al giorno, in altre parole, 10.000 volte più di un’intelligenza artificiale che fa lo stesso lavoro .
Prenderei un’intelligenza artificiale che genera codice all’incirca alla pari con un ingegnere umano, che costa 10.000 volte in meno e produce risultati circa 10.000 volte più velocemente – un risparmio di costi ed efficienza di 100 milioni di volte – in qualsiasi giorno della settimana. E questo è solo per sostituire un ingegnere umano. ( Scusa, Rob del team di frontend, sei stato automatizzato! ) Saresti pazzo ad assumere umani per fare questo lavoro, una volta che l’IA diventa abbastanza brava.
Cosa succede all’arte della programmazione?
Se credi anche solo a un decimo di quanto sopra, sembra chiaro che gli ingegneri del software siano una specie in via di estinzione. Ma cosa succede all’arte e alla scienza dello sviluppo di software per computer quando gli esseri umani non sono più nel giro?
In qualsiasi sistema software, ci sono compromessi da fare in termini di complessità del codice, generalità, prestazioni e tempo di completamento. Quindi, anche se licenziamo tutti i nostri sviluppatori e li sostituiamo con CoPilot 2030, avremo comunque bisogno di un modo per i PM ( probabilmente ancora umani?) e i team di sviluppo basati sull’intelligenza artificiale di avere un dialogo sui compromessi e le opzioni durante la creazione una soluzione software.
Aspetta… Di cosa diavolo sto parlando?!? Se un’intelligenza artificiale sta scrivendo il codice, a chi importa quanto tempo ci vorrà per scriverlo: il risultato sarà istantaneo, indipendentemente da ciò che chiedi all’IA di fare. Puoi ottenere una soluzione completamente generale e ad alte prestazioni nello stesso tempo necessario per generare un prototipo grezzo e pronto. E non importa più quanto sia complesso il codice risultante, dal momento che non ha più bisogno di essere manutenibile in senso convenzionale. Se il codice che hai spedito martedì finisce per non funzionare molto bene mercoledì, accendi la vecchia IA e ottieni 1000 nuove versioni in pochi secondi.
Il punto è che tutte le nostre nozioni incentrate sull’uomo di The Art of Software Engineering escono dalla finestra quando gli umani non scrivono più e mantengono il codice. Gran parte di ciò che facciamo come programmatori – le cose che richiedono più tempo – è un lavoro artificioso per rendere le cose più facili per gli esseri umani lenti e soggetti a errori: scrivere commenti, strutturare il codice per facilitare il successivo refactoring, rendere il codice più generico così può essere riutilizzato. Il fatto è che tutto questo lavoro “extra” è totalmente inutile se il codice viene generato e gestito principalmente dalle macchine.
Chiaramente, la tecnologia di codifica AI ha ancora molta strada da fare per arrivare a questo punto, ma non credo sia folle immaginare che il codice generato dall’IA diventi la norma nei prossimi anni. Lo stesso KT Event che ha colpito il mondo dell’arte con Stable Diffusion è probabile che colpisca il mondo del software tra non molto, visti gli enormi risparmi in termini di costi e tempo. Quello che dobbiamo capire è come appare l’industria del software post-AI e cosa possiamo fare ora per prepararci.
Matt Welsh da medium.com