Vale ancora la pena imparare a programmare se lo fa l'AI?
Ascolta l'articolo (sperimentale) · 07:36

Due domande che gli sviluppatori continuano a porsi sono, in fondo, la stessa domanda. Una chiede se sia uno spreco passare anni a imparare a programmare, ammesso che l'AI avrà sostituito i programmatori entro dieci anni. L'altra viene da uno studente che impara il front-end da solo su YouTube, ridigitando a memoria il codice di ogni tutorial, con il dubbio silenzioso se stia costruendo comprensione o semplicemente memorizzando schemi. Una è la paura macro: la professione sta scomparendo? L'altra è quella personale: sto davvero imparando qualcosa? Sono lo stesso dubbio visto da lati opposti. Vale la pena costruire la competenza a mano, quando la macchina può produrre il risultato?
La risposta è sì. La ragione non è quella comoda a cui di solito si aggrappano gli ottimisti.
La rassicurazione è fragile
La risposta consueta è che questa profezia è vecchia. La sostituzione dei programmatori viene predetta a cicli fin dai tempi di Herbert Simon, nel 1960, e ogni volta gli anni passano e gli sviluppatori sono più di prima, non meno. L'AI ha le allucinazioni. È un assistente imperfetto, non un sostituto. Tutto questo è vero, e tutto questo è un po' troppo comodo.
La versione più tagliente della controargomentazione non sostiene che l'AI programmi bene. Sostiene che se l'AI programmi bene o no non c'entra nulla. La traduzione professionale è stata «completamente svuotata» dalla traduzione automatica, e i traduttori avevano dato esattamente le rassicurazioni che oggi danno i programmatori. A decidere il loro destino non è stata la qualità. È stato che i clienti si sono rivelati disposti ad accontentarsi di qualcosa di più economico, più veloce, peggiore. Riformula tutto il dibattito in questi termini e smette di essere «l'AI sa programmare?» e diventa «quanto deve essere brava prima che qualcuno smetta di pagarti?».
Non ho intenzione di schivarla, perché ha una lama vera, e quella lama colpisce un gruppo preciso. Quando uno sviluppatore esperto più l'AI assorbe il lavoro di diversi junior, le perdite si vedono prima di tutto ai livelli d'ingresso. Il primo gradino della scala viene tolto. E nessuno dei due schieramenti, ottimista o pessimista, ha una risposta vera su come far crescere la prossima generazione di senior una volta spariti i lavori da junior che li avevano formati. Se qualcuno ti dice che programmare è perfettamente al sicuro, ti sta vendendo consolazione.
Perché la ragione per imparare è diventata più forte
Eppure le ragioni per imparare a programmare non si sono indebolite. Si sono ribaltate.
La cosa più incisiva che io abbia mai sentito dire a qualcuno in proposito è una sola frase su cosa fa davvero un'AI quando le chiedi di spiegare del codice: mi spiegherà cosa fa il codice, cosa che so già, perché il codice lo vedo da me. Il sapere per cui uno sviluppatore viene pagato non sta nel codice. L'intenzione, la ragione per cui una decisione è stata presa, il vincolo che non è scritto da nessuna parte, la storia dietro il perché è così e non nel modo ovvio: niente di tutto questo si può leggere dal sorgente. Quindi nemmeno una macchina che legge lo stesso sorgente può produrlo.
È qui che passa la vera linea. L'AI è bravissima nello strato del «cosa»: la sintassi, il boilerplate, il codice di raccordo, il riassunto di ciò che il codice fa in modo evidente. Non tocca lo strato del «perché»: decidere cosa costruire, codificare l'intenzione, ragionare se la cosa sia davvero corretta, tenere insieme il contesto che non vive nel file di nessuno. La produzione meccanica di sintassi si sta automatizzando, ed ecco la parte che lo studente ansioso ha capito al contrario: quella non è mai stata la parte difficile, né la parte di valore.
Il che significa che la causa va nella direzione opposta. «Perché imparare la cosa che l'AI sta automatizzando?» Perché il fatto che l'AI la automatizzi è esattamente ciò che rende scarsa l'altra cosa. Quando tutti sanno generare il risultato e quasi nessuno sa dire se il risultato è giusto, dire se è giusto diventa tutto il lavoro. E quel giudizio non lo puoi comprare, né raggiungere a suon di prompt. Te lo guadagni imparando le basi nel modo difficile, le stesse basi che ora la macchina ti serve gratis.
La versione del principiante ha una risposta più netta
Questo riformula anche la domanda più piccola dello studente. Il verdetto pressoché unanime, ogni volta che l'argomento salta fuori tra chi insegna, è che i principianti in particolare non dovrebbero appoggiarsi all'AI, e la ragione non è la nostalgia. È che un principiante non sa distinguere un risultato corretto da un risultato sbagliato con sicurezza, e distinguere questi due è esattamente la competenza che è lì per costruire. L'affermazione sicura di sé secondo cui nell'era dell'AI imparare a programmare è diventato facilissimo, che non resta più nulla di non capito, crolla al primo contatto, perché chiunque abbia davvero imparato qualcosa sa che «non resta più nulla di non capito» è la sensazione precisa di non aver capito niente.
La frase a cui tutti ricorrono è che non si impara digitando, si impara risolvendo problemi. È giusto, ma sottovaluta ciò che lo studente stava già facendo. Ridigitare il codice a memoria costringe al richiamo invece che al riconoscimento, e il richiamo è dove la memoria si forma davvero; è una tecnica vera, non uno spreco. La soluzione non è smettere. È fare un passo avanti: prendi la tecnica, non il progetto, e ricostruiscilo dove il tutorial non è mai arrivato. Una todo list diventa un ricettario. Poi ti blocchi, leggi la documentazione, e ti sblocchi. Il bloccarsi non è il difetto dell'imparare a programmare. È il meccanismo, ed è esattamente il passaggio che una macchina eseguirà volentieri al posto tuo se glielo lasci fare. È questa la trappola.
La mia posta in gioco in ciò che decidi
Ho una posta in gioco in ciò che decidi, e dovrei dirlo chiaramente. Costruisco strumenti che generano codice. Uno di questi trasforma una frase in un piano e apre i propri pull requests. Ognuno di quei pull requests non vale niente senza un essere umano che capisca il codice abbastanza bene da leggerlo e dire di no. Le macchine che costruisco sono sicure esattamente quanto il giudizio della persona che ne rivede il risultato, e non un briciolo di più.
Quindi, quando dico a uno studente di imparare le basi nel modo lento, non sto facendo del sentimentalismo su un mestiere. Sto descrivendo l'unico lavoro che gli strumenti non possono fare da soli, e l'unico che diventa più prezioso ogni volta che loro migliorano.
Programmare non sta diventando obsoleto. Lo sta diventando la parte che una macchina può digitare, e quella parte non è mai stata ciò per cui ti pagavano. Ciò che resta è la parte che puoi raggiungere solo faticando attraverso la parte che si sta automatizzando: sapere cosa costruire, e sapere quando la macchina ha sbagliato. Impara a programmare. Non nonostante l'AI. Ma grazie a lei.
Le domande a cui questo articolo risponde
Vale ancora la pena imparare a programmare se il codice lo scrive l'AI?
Sì, e le ragioni si sono ribaltate invece di indebolirsi. L'AI è bravissima nello strato del cosa, la sintassi, il boilerplate, il codice di raccordo, il riassunto di ciò che il codice fa in modo evidente, e non tocca lo strato del perché: decidere cosa costruire, codificare l'intenzione, ragionare se la cosa sia davvero corretta. Quando tutti sanno generare il risultato e quasi nessuno sa dire se il risultato è giusto, dire se è giusto diventa tutto il lavoro, e quel giudizio non lo puoi comprare né raggiungere a suon di prompt.
La traduzione automatica ha svuotato il lavoro dei traduttori. Perché con la programmazione dovrebbe andare diversamente?
L'obiezione ha una lama vera e non va schivata. A decidere il destino dei traduttori non è stata la qualità, è stato che i clienti si sono rivelati disposti ad accontentarsi di qualcosa di più economico, più veloce, peggiore, e la stessa pressione colpisce per primi i livelli d'ingresso nel software, dove uno sviluppatore esperto più l'AI assorbe il lavoro di diversi junior. Ciò che non raggiunge è la parte del lavoro che non è mai stata nel sorgente: l'intenzione, il vincolo che non è scritto da nessuna parte, la ragione per cui una decisione è andata così e non nel modo ovvio. Chi ti dice che programmare è perfettamente al sicuro ti sta vendendo consolazione.
Un principiante dovrebbe usare l'AI mentre impara a programmare?
No, non per le basi, e la ragione non è la nostalgia. Un principiante non sa distinguere un risultato corretto da un risultato sbagliato con sicurezza, e distinguere questi due è esattamente la competenza che è lì per costruire. L'affermazione che nell'era dell'AI imparare a programmare sia diventato facilissimo, che non resti più nulla di non capito, crolla al primo contatto, perché quella è la sensazione precisa di non aver capito niente.
Ridigitare a memoria il codice dei tutorial è tempo perso?
No. Ridigitare a memoria costringe al richiamo invece che al riconoscimento, e il richiamo è dove la memoria si forma davvero, quindi è una tecnica vera e non uno spreco. Quello che manca è il passo avanti: prendi la tecnica, non il progetto, e ricostruiscila dove il tutorial non è mai arrivato, così che una todo list diventi un ricettario. Poi ti blocchi, leggi la documentazione e ti sblocchi, che è esattamente il passaggio che una macchina eseguirà volentieri al posto tuo se glielo lasci fare.
Da leggere dopo
AIIl linguaggio che conosci conta ancora?
Ormai un modello scrive fluentemente qualsiasi linguaggio. Questo rende senza valore la metà economica del conoscere un linguaggio e fa valere la metà costosa più di quanto sia mai valsa.
AIDa dove verranno i prossimi senior?
L'AI si sta mangiando esattamente il lavoro su cui imparavano gli sviluppatori junior, le assunzioni entry-level stanno crollando in modo misurabile, e ogni senior capace di verificare l'output di una macchina è stato un junior che qualcuno ha pagato per sbagliare. Su DHH che assume guardando «fin dove potrebbe arrivare», sulle 2.200 persone che si sono candidate e sul perché un settore che smette di produrre senior ha frainteso la propria catena di fornitura.