Sono entusiasta di presentare l'AI Engineering Skills Map. L'AI ci permette oggi di sviluppare software in modo molto diverso rispetto al 2022, e tutti coloro che possiedono le competenze per sfruttare questo cambiamento hanno a disposizione numerose opportunità entusiasmanti, sia di progetto che di lavoro. Ma in un panorama informativo così caotico e saturo di hype attorno all'AI, quali sono le competenze più preziose da imparare? Ho lavorato insieme al mio team per sintetizzare una mappa delle competenze di ingegneria dell'AI, con l'obiettivo di aiutare (i) gli sviluppatori a capire cosa imparare per primi e (ii) i datori di lavoro ad assumere sviluppatori qualificati.
Questa mappa si basa sull'analisi di oltre 10.000 annunci di lavoro, su decine di interviste strutturate con esperti di AI, responsabili delle assunzioni e recruiter, su dati raccolti tramite sondaggi e sulla sintesi di altri dati online. Ecco le quattro competenze di ingegneria dell'AI più importanti:
- Sviluppare e distribuire applicazioni AI
- Fondamenti di ingegneria del software
- Usare gli agenti di programmazione
- Dare forma al progetto
In parole semplici, puoi pensare al nostro processo come a una sorta di clustering su un enorme dataset di annunci di lavoro e interviste a esperti, volto a identificare le competenze più importanti non solo oggi, ma anche nel prossimo futuro.
Una nota sulla terminologia: parlo di competenze di ingegneria dell'AI piuttosto che del ruolo di "AI Engineer" (una persona il cui lavoro è costruire sistemi AI), perché si tratta di un ambito molto più ampio. Oggi tutti gli sviluppatori dovrebbero saper lavorare con il cloud, e solo una minoranza ha il titolo di "Cloud engineer". Allo stesso modo, tutti gli sviluppatori — ingegneri full-stack, ingegneri dei dati, ingegneri DevOps, ingegneri del machine learning e, sì, ingegneri AI — avranno bisogno di competenze di ingegneria dell'AI.
Sviluppare e distribuire applicazioni AI. La differenza fondamentale tra applicazioni AI e non AI è che le prime producono output imprevedibili. Quando invii un prompt a un LLM, non sai cosa riceverai in risposta. Quando addestri un algoritmo di deep learning, non sai quale previsione farà su nuovi esempi. Al contrario, il software tradizionale si comporta in modo più prevedibile.
Chi è competente nello sviluppo e nella distribuzione di applicazioni AI comprende i mattoni fondamentali dell'AI (come LLM, context engineering, RAG, workflow agentici, machine learning e deep learning) e, soprattutto, sa come utilizzare tecniche statistiche per misurare, guidare e governare i sistemi AI affinché si comportino in modo più prevedibile. Una competenza fondamentale per riuscirci è saper condurre cicli rigorosi di valutazioni (eval) e analisi degli errori.
Fondamenti di ingegneria del software. Quando capisci a fondo come funziona il software, puoi sviluppare in modo molto più efficace. L'ingegneria del software richiede di fare tradeoff tra costi, scalabilità, affidabilità, velocità e altro ancora. La sicurezza e la privacy aggiungono ulteriore complessità.
Comprendere i fondamenti del software ti permette di riconoscere quali tradeoff esistono. Questo porta a decisioni migliori nella scelta dello stack software, nella progettazione dell'architettura di sistema, nella progettazione del data store, nei test e così via. Porta anche a risultati molto migliori rispetto a quelli di uno sviluppatore inesperto che vibe-codifica una soluzione senza conoscere i tradeoff che il suo agente di programmazione sta facendo — tradeoff che spesso saranno scadenti, perché non sa che contesto fornire al proprio agente. Comprendere i fondamenti dell'ingegneria del software ti permette di fare buoni tradeoff guidando gli agenti di programmazione con il linguaggio preciso dell'ingegneria del software.
Usare gli agenti di programmazione. Saper usare efficacemente la programmazione agentica è oggi una competenza chiave per ogni sviluppatore. Quando possiedi questa competenza, hai un buon modello mentale di come funzionano gli agenti. Ne comprendi i limiti e sai come aggirarli, e sei in grado di guidarli rapidamente — sapendo quando intervenire e quando lasciarli lavorare da soli — per sviluppare software robusto senza sprecare troppo tempo o troppi token.
Questo richiede di saper gestire il contesto di un agente di programmazione, bilanciare pianificazione ed esecuzione e aiutare l'agente a chiudere autonomamente i cicli fornendo verificatori o eval. Devi anche saper lavorare con una specifica chiara (e sapere quando non vale la pena farlo), orchestrare più agenti che lavorano insieme ed evitare insidie come il rischio che un agente rovini il tuo database di produzione. Poiché la programmazione agentica si evolve rapidamente, usare gli agenti di programmazione con competenza significa non solo conoscere le pratiche all'avanguardia, ma anche avere routine per continuare a provare nuovi strumenti e far evolvere i propri flussi di lavoro man mano che le best practice cambiano.
Dare forma al progetto. Data una specifica chiara, gli agenti di programmazione stanno migliorando rapidamente nel realizzarla. Il nostro lavoro di ingegneri si sta quindi spostando verso la decisione di cosa debba contenere la specifica. Gli ingegneri non dovrebbero più aspettarsi di ricevere un design pixel-perfect e doverlo solo implementare. Al contrario, un'ingegneria dell'AI efficace richiede di avere product sense e di comprendere il contesto di business e gli obiettivi dei clienti, così da poter contribuire





