AI CODER
Overview
Cheap software
Da quando Alan Turing ha posto le basi per l’information technology, sono stati scritti fiumi di software. Alcuni progetti sono clamorosamente falliti, altri sono gemme senza successo (BeOS ora Haiku, AmigaOS)… altri quirks sono ancora vivi nelle pieghe del progresso (provate a creare un file di nome ‘aux’ in windows 8.x, se ci riuscite).
Per la prima volta dal 1938 un sistema informatico è in grado di imitare una persona, e scrivere del codice sulla base di istruzioni in linguaggio naturale.
In questi mesi ho iniziato ad approfittare della licenza ChatpGPT interprise fornita dalla mia azienda.
Non posso utilizzarlo come copilot del codice presso i Clienti, perché questo richiederebbe una approvazione formale, che spesso non posso avere o che è raro venga concessa.
Per cui mi limito a usarlo per risolvere piccole attivitá che di norma mi porterebbero via un’oretta, del tipo:
- I have two prostgresql table, named A and B. I need to be sure they have the same columns. Can you write a query to verify this looking at postgresql metadata?
- I need to upload a file called ‘pippo.pdf ’ in a postgresql column of type bytea. Can you show me a sample script to do it?
Il mio amico ChatGPT-5 capisce anche quando faccio errori di battitura, e di solito imbrocca la soluzione. Di norma poi io prendo il codice prodotto e lo rimaneggio per i miei scopi.
In alcuni casi le risposte fornite possono essere trovate su StackOverflow, ma nella misura in cui validate quello che vi viene dato, lo strumento mediamente riduce ad 1/3 l’effort di sviluppo purché non gli lasciate proprio tutto il divertimento.
Sulla qualitá dell’output mi sento di dire che non è eccelsa, ma di norma è perfettamente in linea con la richiesta.
Approccio suggerito
- Sottomettere il prompt, attendere la risposta e verificare il corretto funzionamento, decidendo se scrivere voi gli unit test o farli fare sempre al chatbot.
- Lancianre un tool di code review formale (pylint o Sonar) che non dà garanzie di correttezza ma può aiutarvi a capire se il codice è ben scritto oppure pseudo randomico
- Se il codice prodotto non vi soddisfa, mettetelo da parte in un branch e ripetete il processso dal punto 1
- Effettuare una minima code review del codice prodotto (manuale) spegnendo i suggerimenti di tool come Copilot per non essere furoviati (= effettuarte queste code review a ‘mente fredda’ senza qualcosa che vi completa il codice a caso).
- Versionate sempre tutto!
Questi step minimizzano il tempo che si perde facendo interazioni per tentativi ed errori.
Conclusioni
Se abbinate alle vostre sessioni di lavoro un tool di lint (es pyling per python o per Java le varie integrazioni degli IDE moderni + Sonar) potete rafforzare il codice prodotto, rimaneggiandolo affinché non abbia metodi fini a sé stessi. Una buona struttura di unit test è infine indispensabile più che in altri contesti.
Queste valutazioni sono personali e sono basate su generazione di codice su linguaggi che (A) conosco da anni e (B) per ragioni storiche gli LLM hanno molti dati di input (=Python e Java)
Permane la tendenza ad inventare metodi (con una probabilità di una volta su tre circa). Su una codebase preesistente le attività di refactoring sembrano soddisfacenti.
Se si riesce contenere il tempo occupato in code review e operazioni di “trial and error”, si può ottimisticamente guadagnare un 50% del tempo, con una qualità del codice però medio-bassa.
Lo strumento base usato (ChatGPT5 Codex) risulta più che sufficiente.
In generale persone con esperienza possono ottenre un boost di circa il 50% sul tempo crudo di sviluppo del codice, per attività molto ben descrivibili