Dell’uso degli agenti basati su LLM per l’apprendimento della scrittura

https://itchronicles.com/agile/pair-programming-maximizing-efficiency-and-quality-in-software-development/
Illustration of two people working on same computer representing pair programming (da https://itchronicles.com/)

Esiste un “modo” di programmare che si chiama “pair programming” (https://it.wikipedia.org/wiki/Pair_programming). Non è nuovo: ha almeno di trent’anni. Ma si sa, il mondo dell’informatica è completamente opaco quando si passa dal consumo alla produzione, cioè alla scrittura di codice sorgente.
Il PP fa parte della famiglie della “programmazione agile”, una risposta ai metodi antidiluviani sostenuti in passato dalle grandi software house e insegnati nelle università e nelle scuole.
Il modello è quello dei rallye. In pratica funziona così: si lavora sempre in coppia, ma uno solo (il pilota) scrive codice sorgente, mentre l’altro (il navigatore) rilegge, commenta, trova bug, propone alternative. Poi, dopo un certo tempo, ci si inverte di ruolo.
Qual è il vantaggio? Beh ce ne sono parecchi.
Ci si diverte di più, e programmare non deve per forza essere un lavoro massacrante.
Si condivide, si viene riconosciuti per quello che si sa fare. Non genericamente, tramite una firma (quando la società per cui lavori te la fa mettere) ma ad ogni passo.
Si evitano errori classici, quelli che si commettono quando si ha un’idea fissa e non si vedono più le cose che si scrivono ma solo quelle che si crede di scrivere.
Si può anche dire che in due si è il doppio intelligenti. O che il rischio di non sapere qualcosa si divide a metà.
Ma insomma, questa cosa funziona e personalmente io la sperimento da anni, persino a distanza, tramite videoconferenza.
Uno scrive condividendo lo schermo e descrive quello che vuole fare, come lo fa; l’altro legge, chiede, cerca di capire e fornisce indicazioni. Che non per forza sono accettate, anzi. Ma anche solo descrivere ad alta voce un problema e una soluzione aiuta a chiarirsela, e spiegarla è un modo ancora più efficace per verificare che non si è preda di un’allucinazione. Se l’altro (un altro di cui ci si fida) non capisce, allora c’è qualcosa che non va.

La caratteristica più importante di questo modo, a mio avviso, è che entrambi i partecipanti della coppia imparano, l’uno dall’altro.
Quindi – aspetto non banale – è un modo che si può usare non solo per scrivere codice di qualità, ma anche nella fase di apprendimento della programmazione, di un linguaggio, delle tecniche di soluzione di una classe di problemi, di uno stile.

Questa modalità potrebbe essere usata con un agente artificiale basato su LLM a fare da partner.
Anche questa non è un’idea nuova: è quella che sta dietro l’espressione “Copilot” che è stata inventata dalle persone di marketing della Microsoft inizialmente solo per l’agente che stava dietro Visual Studio Code e poi ovunque: in Skype (oops, in Teams), in Edge, in Office 365, e chissà dove altro.
Solo che non è stata poi tradotta in pratica. Quello che fa Copilot è rispondere a delle richieste (“scrivimi un codice che…”, “ristruttura questo codice”, “traduci questo codice nel linguaggio X.”), risolvendo problemi al posto del programmatore, facendogli risparmiare tempo (forse: perché poi il buon programmatore rilegge tutto quello che il Copilot scrive). Io non sono un fan di questo modo di usare gli agenti basati su LLM perché mi pare che sia solo il contentino dato ai programmatori in attesa di licenziarli.
Quello invece che un Copilot dovrebbe fare per essere un vero “navigatore” è leggere il codice scritto dal programmatore umano, commentarlo, fornire suggerimenti, etc. Dovrebbe essere il destinatario delle spiegazione e verificare se quello che viene descritto corrisponde a quello che è stato scritto. Questo trasformerebbe ogni sessione di programmazione in una sessione di “pair programming”, anche quando non è possibile dedicare due persone ad un singolo compito. Ma invece di licenziare persone ottenendo un prodotto che qualcuno poi dovrebbe verificare, farebbe aumentare la qualità del prodotto.
Di nuovo, questo modo funzionerebbe anche per imparare a programmare, perché l’agente non sostituirebbe lo studente, non farebbe il “compito” al posto suo, ma lo aiuterebbe a focalizzare i problemi, a vedere gli errori, a ripensare le soluzioni.

Ora rileggete il testo di sopra e al posto di “scrittura di codice sorgente” mettete “scrittura di testi”.


Pubblicato

in

, ,

da