Scrivere codice con ChatGPT: resoconto onesto del mio primo mese

Giorgio Gilberti
7 min readJan 11, 2023

Giorno 42 dopo ChatGPT.
Forse ne avete sentito parlare… il mondo è cambiato e non si torna più indietro.
Tra il web che mormora, l’hype che monta e il panico che dilaga, in poco più di un mese io ne ho sentite di tutti i colori, così ho deciso di prendermi un po’ di tempo per entrare in confidenza con la cosa, e capire l’impatto che avrebbe avuto su di me.
Ecco un resoconto onesto di cosa mi è capitato finora.

Immagine generate da DALL-E a fronte dell’input: “intelligenza artificiale, raffigurata come una mantide robotica, che ipnotizza un impiegato per poi mangiarlo. In stile fantascientifico surrealista”

Premessa

Lavoro come sviluppatore web, principalmente backend. Un lavoro onesto, ma fatto anche di task ripetitivi e che non sempre richiedono creatività eccelsa.
Per questo mi è venuto naturale chiedermi come l’AI avrebbe agevolato il mio lavoro, se mi avrebbe sostituto, a quali dei miei colleghi sarebbe toccato…
Ho adottato ChatGPT come assistente quotidiano di coding (e non solo) delegandogli sempre più task, progressivamente più complessi.

Il mio lavoro è cambiato

Posso affermare senza troppa timidezza che il mio modo di lavorare è cambiato, e anche il sentiment riguardo ad esso. In meglio.
ChatGPT restituisce output sorprendentemente utili e mi sgrava di tante piccole fatiche.

La somma di tutti i micro-slot di tempo ed energia che risparmio grazie alla simbiosi creatasi tra uomo e macchina rendono le giornate più produttive e meno stancanti.

Ecco alcuni task che l’AI ha concretamente risolto per me in modo veloce ed efficace:

  • scrivere query SQL di media complessità a fronte di una spiegazione delle entità/tabelle in gioco e dell’output atteso
  • refactoring di funzioni secondo indicazioni di massima, come l’uso o meno della ricorsione, o l’aggiunta di parametri extra
  • scrivere da zero funzioni di media complessità, ad esempio per generare combinazioni o permutazioni a partire da possibili valori
  • consigliarmi librerie e packages utili alla mia causa
  • guidarmi nell’uso di linguaggi e framework a me poco familiari
  • prendermi per mano a portarmi in salvo nei momenti di troubleshooting più bui

L’ultimo punto è il mio preferito.
Se fate questo lavoro lo sapete: tra nuovi framework da imparare, tool di terze parti da installare, configurare e integrare, ci sono momenti in cui si ha la sensazione di lottare nel fango e la massima gioia della giornata è quella provata dal caro Michael nell’ormai celebre meme qua sotto.

Fonte: reddit

Quelle sono le situazioni in cui il mio assistente è più prezioso. Soprattutto per il morale.

Generalizzando, ChatGPT può essere decisivo per un programmatore ogni volta in cui vuole legittimamente ridurre la frizione cognitiva (e la relativa frustrazione).
Come la migrazione verso nuovi linguaggi:

“Come si fa la cosa X (che io so già fare nel linguaggio Y) nel linguaggio Z?”

è una domanda perfetta da rivolgere a ChatGPT.
Si noti, è un problema che potevamo benissimo risolvere anche prima ma con più fatica. Fatica alienante, non costruttiva, fatta di azioni banali come aprire il browser, cercare su Google, osservare un pezzo di codice scritto da un estraneo, decifrare, copiare, incollare, ritentare.

Ma ChatGPT è una manna dal cielo anche in tutte quelle situazioni in cui siamo consapevoli di come è fatto un problema, sappiamo già di saperlo risolvere, ma anche che richiederà un certo sforzo mentale per i prossimi N minuti.
Qui un programmatore con un po’ di esperienza dovrebbe capire in anticipo se quello sforzo sarà costruttivo, se renderà se stesso e il mondo un pochino migliori, o se invece si tratta solo di ulteriore fatica che può essere delegata a cuor leggero. E delegarla non è mai stato così facile.

Quanto mi fido?

Non mi sono preso la briga di misurare sistematicamente le performance del mio assistente.
Dirò ad occhio a croce che ChatGPT mi dà la risposta che mi serve circa 9 volte su 10. Che è mostruoso, se comparato alle risposte che ricevo da colleghi umani e rapportato alla velocità di reazione.
Il meccanismo è ben oliato e il rapporto di fiducia tra me e il mio assistente diventa ogni giorno più solido.
Certo il nostro legame si basa su un patto silenzioso, con alcune clausole da rispettare.
Non gli faccio domande troppo difficili, che lo metterebbero a disagio.
Devo essere chiaro e rigoroso, gli spiego i requisiti come vorrei che i PM li spiegassero a me.
Quando sbaglia, glielo faccio notare gentilmente, fornendo un esempio di cosa mi sarei aspettato di diverso.
Sono responsabile di supervisionare il codice che l’assistente produce.

Però devo essere sincero fino in fondo. All’inizio ero molto più scettico e insieme più scrupoloso. Mano a mano che passano i giorni e l’AI risolve problemi per me, mi rendo conto che mi preoccupavo troppo. L’assistente capisce le domande, capisce il contesto, lo ricostruisce, quasi lo immagina. A volte è difficile pensare che ci sia solo un software dietro lo schermo.

Tra le mie responsabilità c’è anche capire quando interpellarlo e quando no. Mediamente per ognuno delle centinaia di micro-problemi che mi si presentano in una giornata tipo, ho tre opzioni: chiedere a Google, chiedere a ChatGPT, risolverlo da me.
Per il momento direi che ChatGPT si prende un buon 30%. Ma la quota è in costante crescita.

Immagine generate da DALL-E a fronte dell’input: “supereroe cyborg che è metà impiegato e metà mantide robotica. In stile fantascientifico surrealista”

Mi sto impigrendo?

Ci potete giurare.
I programmatori sono pigri per natura e regalare loro uno strumento del genere è come regalare caramelle a un bambino; provate voi a dirgli che non deve abusarne. Però l’AI, a differenza delle caramelle, non mi porterà carie e diabete. O forse sì?
Per il momento ho la sensazione di controllare lo strumento, ma mi chiedo come sarei oggi se avessi avuto questo strumento a disposizione negli ultimi anni, o negli anni della formazione. Sarei uno sviluppatore migliore o peggiore? Come sarà la prossima generazione di programmatori, se ancora ce ne saranno? Il mio cervello si starà inflaccidendo?
Il rischio di perdere un po’ di brillantezza sembra concreto, d’altro canto le energie risparmiate grazie all’AI possono essere reinvestite per coltivare nuove skills, più o meno dure. Sarà importante non sedersi.

Ok ma quindi ci ruba il lavoro?

Non oggi.
L’AI migliorerà probabilmente a un ritmo spaventoso, tanto che è difficile fare previsioni e vale la pena concentrarsi sul presente.
Mettiamola così: i miei client non sono in grado di ottenere da ChatGPT lo stesso output che ne ottengo io. Come potrebbero ottenere da ChatGPT lo stesso output che ottengono da me?
Anche se l’AI è diventata fenomenale nella comprensione del testo e del sottotesto, c’è ancora bisogno di qualcuno che traduca le esigenze del mondo reale in requisiti abbastanza rigorosi da poter essere validati.
Forse a lungo andare sarò sostituito, ma non sarò tra i primi a cadere.

Fonte: giphy.com, diritti della HBO

Diventeremo tutti prompt engineers?

In un certo senso.
Cioè passeremo le nostre giornate impartendo comandi in linguaggio colloquiale a un modello di AI, anziché dialogare con API varie?
Questo non cambia davvero chi siamo e cosa facciamo: è un altro modo per dire che saremo sgravati da una parte dei compiti tipici dei vecchi programmatori. Le abilità logiche e di analisi rimangono il cuore delle skill di uno sviluppatore. La code monkey è l’unica specie già destinata all’estinzione.
Tra l’altro, continueranno ad esserci alcuni problemi più adatti a essere modellati con linguaggi di programmazione, piuttosto che in linguaggio naturale. Il solo fatto che si possa fare non significa che sia sempre la soluzione migliore. Ogni linguaggio è un mezzo.

Immagine generate da DALL-E a fronte dell’input: “gigantesca mantide robotica che stermina un esercito di scimmie in equipaggiamento da guerra medievale. In stile fantascientifico surrealista”

ChatGPT ruberà il lavoro a Google?

Questo è già più probabile. Sempre se Google non se lo compra o non ne crea una versione migliore.
Già ora il mio utilizzo del motore di ricerca è calato drasticamente. Resta valido per ricavare la nozione secca, quando sono sicuro che a fronte di una query di due o tre parole troverò il risultato che cerco al primo colpo. L’unica metrica decisiva nella scelta dello strumento è il numero di secondi lordi che mi serviranno per estrarre l’informazione che mi serve, e in alcuni casi ChatGPT è più lento.
Ma la cosa più facile da immaginare, a prescindere da chi si prenderà il monopolio, è che i motori di ricerca e ciò che oggi abbiamo conosciuto come ChatGPT diventeranno una cosa sola. Un motore di risposte universale che adotta strategie diverse a seconda dell’intento di ricerca rilevato.

Conclusioni

Ero tra i più scettici prima di vederlo all’opera, ma queste poche settimane hanno cambiato il mio modo di immaginare il futuro.
Lo strumento in se non è esente da rischi e va usato in modo critico. Ma per il momento l’impatto che ha sul mio lavoro è estremamente positivo.
Ho provato a raccontarlo ponendo l’accento sui piccoli problemi che risolve per me ogni giorno, senza perdermi in speculazioni fantascientifiche.
Dopotutto i cambiamenti più grandi e pervasivi sono quelli che si manifestano nei mille dettagli della vita quotidiana, piccole abitudini e comodità da cui è già impossibile tornare indietro.

--

--