Ridefinire il ruolo dello sviluppatore
A più riprese su MokaByte ci siamo occupati del ruolo e del “mestiere” dello sviluppatore, a partire da molti anni fa [1] fino a considerazioni meno datate [2]. Più recentemente, il tema del lavoro dello sviluppatore si è incrociato con gli sviluppi dell’Intelligenza Artificiale, dai primi e ancora incerti tentativi di programmazione assistita dall’AI [3] agli sviluppi recentissimi del Vibe Coding [4] in cui gli strumenti di Intelligenza Artificiale svolgono un ruolo forte e ben definito.
Proprio partendo da questi spunti, vogliamo in questo articolo fare alcune brevi riflessioni sul ruolo dello sviluppatore in un’epoca in cui gli strumenti di AI stanno diventando sempre più pervasivi e chiederci quali siano le compatenze, anzitutto tecniche ma non solo, tuttora richieste a un “programmatore”. Detto in modo più diretto: quanto è importante conoscere i linguaggi di programmazione se possiamo chiedere a uno strumento di AI generativa di scrivere del codice per noi, semplicemente fornendogli dei prompt adeguati?
Da attore a regista
Se volessimo usare una metafora “cinematografica”, potremmo dire che l’attuale scenario dominato dall’IA trasforma lo sviluppatore, lo “scrittore di codice”, da attore a regista.L’Intelligena Artificiale generativa agisce come un acceleratore di produttività, automatizzando i compiti di codifica più ripetitivi (come errori di sintassi), in modo simile all’introduzione dei linguaggi di alto livello in passato.
Infatti, se in passato al programmatore erano richiesti compiti quali la scrittura del codice occupandosi della sintassi, l’implementazione di routine e attività ripetitive, il debugging con una conseguente bassa produttività nelle prime fasi del progetto, oggigiorno, nel panorama di sviluppo assistito dall’Intelligenza Artificiale, lo sviluppatore deve occupari maggiormente di validazione e correzione del codice generato dall’AI, della definizione precisa dei requisiti, delle architetture di sistema complesse, di gestione delle vulnerabilità e della sicurezza.
Con queste premesse, la risposta al sottotitolo di questo articolo è evidente: sì, conoscere bene i linguaggi di programmazione ha ancora senso, sebbene si assista a un cambiamento di ciò che con questi linguaggi si fa. Per poter svolgere i compiti appena elencati, gli sviluppatori devono posseredere una buona conoscenza dei linguaggi di programmazione — vedremo più avanti di quali, in particolare —, delle strutture dei dati e degli algoritmi, nonché degli aspetti legati alla sicurezza. E a questo devono aggiungersi competenze di architettura dei sistemi, con una visione d’insieme.
Prompt Engineering
L’accelerazione sposta il livello minimo di competenza richiesto: i compiti junior sono i più esposti all’automazione, costringendo gli sviluppatori a concentrarsi rapidamente sulle competenze di alto livello per dirigere gli strumenti AI [5]. La definizione di Promp Engineering che si sta diffondendo —ossia quella capacità non solo tecnica di usare a livello approdondito gli strumenti di AI generativa usando domande al prompt corrette, adeguate e approfondite — spiega piuttosto bene in cosa consista il lavoro dello sviluppatore alla fine del primo quarto del XXI secolo. Il Prompt Engineering richiede al contempo abilità linguistiche e una profonda comprensione dei processi computazionali: diventa la nuova forma di programmazione dichiarativa.
Programmazione come disciplina cognitiva
In questo quadro il valore reale della programmazione risiede nel processo cognitivo [6] che impone. Da un lato, la programmazione allena il cervello alla risoluzione dei problemi e alla pianificazione solida della soluzione prima di scrivere il codice: si potrebbe dire che essa permette di sviluppare un pensiero computazionale. Dall’altro, chi sviluppa software deve possedere la capacità di leggere e comprendere rapidamente il codice — soprattutto quello non scritto direttamente in prima persona — per poter accettare o rifiutare i suggerimenti di un LLM: c’è la necessità inderogabile di una lettura critica.
infatti, l’uso non critico dell’AI introduce nuove “trappole del pensiero” (sfide meta-cognitive), che lo sviluppatore deve saper riconoscere: la padronanza del linguaggio funge da filtro intellettuale per giudicare la bontà, l’efficienza e la sicurezza dell’output AI, mitigando i rischi di queste “trappole”.
Competenze insostituibili: validazione e architettura
Le aree in cui la competenza umana è insostituibile si basano sui fondamenti e sul contesto.
La conoscenza di algoritmi (p.e., ottimizzazione) e strutture dati (p.e., alberi, grafi) è la chiave per la verifica della qualità del codice generato. L’AI eccelle nella sintassi, ma lo sviluppatore esperto è l’unico in grado di giudicare la complessità computazionale e l’efficienza: senza questa comprensione, la velocità dell’AI si traduce in un debito tecnico nascosto.
C’è poi la fondamentale dimensione dell’architettura del sistema: l’architetto non è solo un tecnico senior, ma un curatore strategico che comprende il dominio del contesto. Necessita quindi di essere competente in svariati aspetti:
- pensiero sistemico: comprendere le interdipendenze tra i componenti, inclusi i moduli generati dall’AI;
- strategia tecnica: allineare le soluzioni software agli obiettivi di business a lungo termine, cosa che l’IA non può fare da sola;
- etica progettuale: valutare le implicazioni architetturali in termini di privacy, accessibilità e sostenibilità. Sono aspetti che superficialmente potrebbero essere ritenuti secondari, ma che non lo sono affatto.
Infine, l’accelerazione delle sviluppo aumenta i rischi di sicurezza, e la supervisione di un umano che conosca linguaggi e crittografia diventa un prerequisito di sicurezza: solo la validazione esperta umana può rilevare bug, vulnerabilità e inefficienze nel codice AI. La competenza tecnica è un meccanismo essenziale di mitigazione del rischio.
Linguaggi essenziali nell’era AI
La programmazione funge da ponte analitico che allinea le esigenze aziendali con l’innovazione tecnologica. Se è vero che, più che sintassi del singolo linguaggio, occorre comprendere i principi basilari di vari di essi e individuare i punti di contatto che contribuiscono allo sviluppo di un pensiero cognitivo, è altrettanto vero che certi linguaggi si prestano meglio di altri al panorama che si è andato delineando.
Vediamo di seguito i linguaggi principali che è racomandabile apprendere e padroneggiare nell’attuale scenario dominato dall’AI.
Python
Aree di applicazione: AI, Machine Learning, Deep Learning, Data Science, backend web.
Python è il linguaggio di riferimento per i progetti di AI e Machine Learning nel 2025. La sua semplicità e l’ampia gamma di librerie (NumPy, SciPy, TensorFlow, PyTorch, scikit-learn) lo rendono essenziale per la prototipazione rapida, la sperimentazione con reti neurali e lo sviluppo di modelli e algoritmi di AI.
Java
Aree di applicazione: sviluppo Enterprise, sistemi critici, backend su larga scala.
Il buon vecchio Java resta ancora essenziale per le applicazioni aziendali su larga scala grazie alla sua stabilità e scalabilità. La sua capacità di gestire progetti complessi lo rende un’opzione affidabile per soluzioni di intelligenza artificiale che richiedono scalabilità e integrazione aziendale. È ancora una base solida per lo sviluppo Android.
C++
Aree di applicazione: applicazioni ad alte prestazioni, computazione in real-time, robotica, Infrastrutture di Machine Learning.
C++ è la scelta eccellente per le applicazioni di AI che richiedono elevata potenza di calcolo e reattività in tempo reale, grazie alla sua velocità e al controllo di basso livello sulla memoria. Spesso utilizzato per implementare le librerie fondamentali di Python (come NumPy e TensorFlow) per massimizzare le prestazioni.
TypeScript
Aree di applicazione: frontend scalabile, sviluppo di codebase di grandi dimensioni, ambito Enterprise.
Questa estensione di JavaScript che introduce l’annotazione dei tipi è ideale per applicazioni scalabili e sicure. Molto utilizzato in contesti Enterprise dove la qualità e la manutenzione del codice sono fondamentali, offre una maggiore robustezza ai team che lavorano su codebase estese.
SQL
Aree di applicazione: gestione e analisi delle basi di dati.
Sebbene non sia un linguaggio di programmazione in senso classico, SQL è indispensabile per chi lavora con i dati, poiché è presente in quasi ogni progetto software per l’interrogazione e la manipolazione dei database. La qualità dei dati è vitale per l’addestramento dei modelli di AI.
Rust e Kotlin
Oltre ai “giganti”, esistono altri linguaggi in rapida crescita che offrono vantaggi specifici per settori moderni e critici, come Kotlin, usato per lo sviluppo Android e considerato più snello e moderno di Java, e Rust, molto apprezzato dagli sviluppatori esperti per l’efficienza, la stabilità e l’attenzione alla sicurezza dei sistemi.
Conclusioni
L’AI potenzia le funzioni degli sviluppatori ma non può sostituire il loro lavoro, che però si orienterà maggiormente verso i ruoli di architetto del software ed esperto in gestione e analisi dei dati. A sostenere questa rimodulazione delle attività dei programmatori verso il Prompt Engineering conocorre la padronanza dei fondamenti: architettura, algoritmi, strutture dati e abilità linguistiche.
La conoscenza dei linguaggi di programmazione è la lingua franca del pensiero computazionale. Non è più necessaria per parlare (scrivere la sintassi), ma è indispensabile per capire, dirigere e giudicare ciò che viene detto.
Riferimenti
[1] Giovanni Puliti, Il programmatore e le sue api. I parte: Lo startup di progetto. MokaByte 123, novembre 2007
https://mokabyte.it/2007/11/01/programmatore-01/
[2] Giulio Roggero, Trust me, I’m a Developer. Caratteristiche e pratiche dello sviluppatore affidabile.
MokaByte 226, marzo 2017
https://mokabyte.it/2017/03/15/trustmeimadeveloper/
[3] Chiara Muzzolon – Giulio Roggero, Fare pair programming con l’Intelligenza Artificiale. I parte: Il quadro della situazione. MokaByte 263 luglio 2020
https://mokabyte.it/2020/07/08/pairprogrammingai-1/
[4] Giovanni Puliti, Vibe Coding: sviluppare il prodotto con l’AI. I parte: I fondamenti del processo. MokaByte 317, giugno 2025
https://mokabyte.it/2025/06/12/vibecoding-1/
[5] Giovanni Puliti, L’illusione della sostituzione. L’AI e il ruolo dei junior nel lavoro che cambia. MokaByte 320, ottobre 2025
https://mokabyte.it/2025/10/20/illusioneai/
[6] Alberto Acerbis, DDD, microservizi e architetture evolutive: uno sguardo d’insieme. VIII parte: La filosofia dell’architettura del software. MokaByte 311, dicembre 2024
https://mokabyte.it/2024/12/09/architettureevolutive-8/