Come e' cambiato il modo di programmare con i chatbot
Negli ultimi anni programmare e’ cambiato in un modo che, secondo me, non si lascia riassumere bene nella frase piu’ comune: “adesso i chatbot scrivono codice”.
E’ vero, certo. Lo fanno. A volte anche in modo sorprendentemente decente. Ma non credo che il cambiamento piu’ importante sia questo.
La differenza vera, per come la sento io, e’ un’altra: si e’ spostato il punto in cui fai fatica.
Per molto tempo programmare ha significato anche una quantita’ enorme di attrito meccanico. Cercare la sintassi giusta, ricordarsi il nome esatto di una funzione, perdere tempo sulla documentazione di una libreria che usavi poco, aprire dieci tab per ricostruire una cosa che in fondo sapevi gia’ fare, ma non abbastanza da scriverla al primo colpo, usare StackOverflow era l’unica soluzione. C’era una parte del lavoro che non era esattamente pensiero, ma nemmeno esecuzione: era una frizione continua tra quello che volevi ottenere e il modo preciso per tradurlo in codice.
Con i chatbot quella frizione si e’ ridotta moltissimo.
Oggi molto spesso non parti piu’ da zero. Parti da una bozza. Parti da qualcosa che somiglia gia’ a una soluzione. E questo cambia parecchio il ritmo del lavoro. Invece di stare fermo davanti a una pagina vuota, ti ritrovi a reagire a un primo tentativo, a correggerlo, a rifinirlo, a dire “no, non cosi’”, “sposta questa parte”, “manca questo caso”, “qui stai semplificando troppo”. In questo senso programmare e’ diventato piu’ conversazionale. Meno solitario, forse, ma anche meno lineare.
La cosa interessante e’ che questo spostamento non rende il lavoro automaticamente piu’ facile. Lo rende diverso.
Prima una parte importante del valore stava nel sapere costruire la soluzione da soli, pezzo per pezzo. Adesso una parte sempre piu’ grande del valore sta nel capire se la soluzione che hai davanti e’ davvero buona oppure no. Cioe’ se regge. Se ha senso. Se sta nascondendo una scorciatoia sbagliata. Se e’ corretta solo nel caso felice. Se e’ codice che funziona oppure codice che merita davvero di entrare in un progetto.
E qui, secondo me, si vede una cosa abbastanza netta: i chatbot aiutano molto chi ha gia’ un certo giudizio tecnico. Aiutano meno chi spera di saltare direttamente alla competenza.
Perche’ una bozza plausibile non e’ ancora una soluzione affidabile.
E forse questa e’ la parte che mi colpisce di piu’. Oggi e’ piu’ facile produrre codice che abbia una forma credibile. Ma proprio per questo e’ diventato piu’ facile anche produrre codice mediocre senza rendersene conto. Codice che sembra pulito, che sembra moderno, che sembra fatto bene, ma che in realta’ nessuno ha davvero pensato fino in fondo. Codice che esiste perche’ e’ stato generato, non perche’ e’ stato scelto.
Questa, per me, e’ una differenza grossa.
Perche’ cambia anche il modo in cui impari.
Prima, volente o nolente, una parte dell’apprendimento passava attraverso la fatica. Dovevi cercare, leggere, sbagliare, ricostruire, mettere insieme pezzi sparsi. Era un processo lento, spesso noioso, ma lasciava piu’ traccia. Ti costruiva dentro una specie di geografia mentale del problema. Oggi puoi arrivare molto piu’ in fretta a qualcosa che funziona. Il vantaggio e’ evidente. Il rischio pure: capire meno di quanto sembri.
Non lo dico con nostalgia. Sarebbe troppo facile. Non penso che si stesse meglio quando perdevamo mezz’ora per una cosa che oggi si ottiene in trenta secondi. Sarebbe una forma un po’ romantica di masochismo tecnico.
Penso pero’ che il chatbot abbia spostato la competenza richiesta. Meno memoria di dettagli, piu’ capacita’ di valutazione. Meno pazienza meccanica, piu’ capacita’ di porre bene il problema. Meno tempo perso sulle parti ripetitive, piu’ responsabilita’ nel non accettare troppo in fretta la prima risposta che suona bene.
In questo senso il programmatore non e’ sparito. Si e’ spostato.
Scrive ancora codice, ma sempre piu’ spesso fa anche un altro lavoro: dirige, corregge, verifica, mette in dubbio, rifila via la parte sbagliata di una soluzione che a prima vista potrebbe sembrare perfino elegante. E’ come se una parte del mestiere si fosse trasformata da produzione pura a supervisione tecnica. Non so se sia un miglioramento in assoluto. So che e’ un cambiamento reale.
Per chi ha gia’ esperienza, tutto questo puo’ essere un vantaggio enorme. Significa perdere meno tempo sulle cose a basso valore e usarne di piu’ su architettura, debugging, casi limite, test, osservabilita’, decisioni vere. In pratica, il chatbot puo’ toglierti di mezzo una parte di rumore.
Per chi invece e’ all’inizio, la questione e’ piu’ ambigua.
Da una parte e’ uno strumento potentissimo. Sblocca. Mostra esempi. Riduce il senso di paralisi. Permette di vedere subito una direzione possibile. Dall’altra puo’ creare una specie di falsa continuita’ tra avere un output e avere una comprensione. E non sono la stessa cosa. Avere una risposta non vuol dire aver costruito una base. Avere codice non vuol dire saperlo difendere, correggere o rifare.
Forse e’ proprio questo il punto che piu’ mi resta addosso: i chatbot hanno abbassato molto la soglia di produzione, ma non hanno abbassato davvero la soglia del giudizio. Anzi, in certi casi l’hanno resa ancora piu’ importante.
Perche’ se oggi una macchina puo’ scrivere una soluzione passabile, allora il tuo valore si sposta sempre di piu’ nel saper capire quando quella soluzione e’ abbastanza buona, quando e’ fragile, quando e’ sbagliata, e quando invece va buttata via senza troppi complimenti.
Alla fine, forse, programmare con i chatbot non significa che il codice conta meno. Significa che conta in modo diverso.
Conta meno come prova di memoria. Conta meno come esercizio di sintassi. Conta meno come accumulo di frammenti riciclati da forum e documentazione.
Conta di piu’ come risultato di una selezione.
E forse e’ questo il cambiamento piu’ vero: non basta piu’ saper scrivere codice. Bisogna saper riconoscere quale codice merita davvero di restare.