A inizio anno ha fatto molto scalpore il grafico delle inserzioni di lavoro dedicate agli sviluppatori software mostrato nella seguente figura. Il grafico usa come scala il livello degli annunci al primo febbraio 2020, subito prima dell’inizio della pandemia, e suggerisce come il 2025 inizi con un livello vicino al 60%.
L’impatto dell’AI nel mondo dello sviluppo software
Inevitabili i commenti che correlano questi dati con l’impatto dell’AI nel mondo dello sviluppo software, anche se non è l’unica lettura possibile, in fondo se per oltre due anni si è assunto oltre il doppio può trovare spiegazione questo rallentamento in una saturazione parziale del mercato. È indubbio però che l’intelligenza artificiale sta avendo un impatto nel mondo dello sviluppo software, si cominciano a vedere listini di aziende software che offrono significativi sconti a coloro che accettano che il ciclo di sviluppo possa usare modelli AI.
La nuova era di co-sviluppo tra uomo e macchina
Il mondo dello sviluppo si sta adeguando a questa nuova era di co-sviluppo tra uomo e macchina, e ne è testimone l’annuncio di fine dicembre che l’assistente Copilot di GitHub sia disponibile anche in una versione gratuita all’interno di VS Code, l’editor di Microsoft open source più usato al mondo per lo sviluppo (con oltre il 70% degli sviluppatori che lo usano).
L’integrazione dell’AI in VS Code: come funziona
Cerchiamo di capire come funziona l’integrazione dell’AI in VS Code e quali modelli di AI sono disponibili a un’ampia platea di sviluppatori per scrivere codice in modo più efficace e rapido.

GitHub Copilot in VS Code
Non stupisce l’integrazione di GitHub e VS Code, sia il popolare sito GitHub per la gestione di codici sorgenti che l’editor sono di proprietà di Microsoft, è quindi naturale una stretta integrazione tra i due.
Quando si apre VS Code la pagina di benvenuto offre la possibilità di attivare la versione gratuita di Copilot accedendo a GitHub. Una volta attivata la funzione l’assistente è accessibile mediante un’icona a destra della barra di ricerca da cui si apre il menu di controllo dell’assistente.

L’interazione con l’AI avviene in un pannello a destra della finestra e assomiglia molto a quella che ormai i vari applicativi implementano per dare accesso ai servizi AI.
È possibile selezionare il modello che sarà usato da VS Code e non può non colpire il fatto che VS Code e GitHub Copilot, entrambi targati Microsoft, forniscano accesso non solo ai modelli OpenAI ma anche a Claude Sonnet 3.5 e a Gemini Flash 2.0.
Un esempio pratico: creare un’applicazione desktop .NET
Per provare l’integrazione ho creato un’applicazione desktop .NET core con il supporto alla grafica Windows Forms. Ho quindi aperto la cartella con la bozza di applicazione generata dal comando ‘dotnet new winforms -o mandelAI’ ed ho chiesto di generare il codice nel file Form1.cs che implementi un visualizzatore di frattali Mandelbrot con la capacità di selezionare rettangoli per fare zoom.
Si tratta di un prompt già sperimentato sul Canvas di OpenAI e con gli artefatti di Anthropic, ma il codice generato per un compilatore è soggetto a molti più controlli rispetto alla sua controparte HTML5.


Il modello genera il codice nel pannello e non nell’editor e al termine è possibile utilizzare una delle opzioni in cima al riquadro di codice generato per inserirlo nel file corrente. L’editor evidenzia gli inserimenti (in giallo) e le eliminazioni (in rosso) per capire l’impatto sul codice che può essere definitivamente accettato.


Il codice generato ha compilato subito e abbiamo così un’applicazione nativa per Windows che consente di navigare il frattale di Mandelbrot.

Una volta visualizzato è evidente che il risultato è un po’ “schiacciato”, chiediamo quindi all’assistente di sistemare questo funzionamento e il modello propone le modifiche evidenziando il codice che sarà cambiato.


Possiamo quindi navigare il frattale con questa applicazione interamente generato dall’AI.

Problemi e come risolverli
Per chi, come me, ha scritto numerose implementazioni del frattale di Mandelbrot risulta evidente che i bordi del frattale non sono definiti come uno vorrebbe, e la questione è legata al numero di iterazioni utilizzate per calcolare ciascun punto. Individuate le linee che si occupano di aggiornare il numero di iterazioni, selezioniamo quindi le linee che sono coinvolte nel cambio del numero massimo di iterazioni e chiediamo di spiegare al modello il codice.

Otteniamo una breve descrizione del funzionamento e della logica del codice scritto.

Proviamo quindi a chiedere un cambio puntuale nel cambio del numero delle iterazioni.

Le modifiche proposte e accettate non hanno migliorato la situazione, e ponendo un po’ più di attenzione al codice generato è evidente, almeno a un programmatore, che le due variabili sono definite ma non utilizzate e quindi naturalmente non condizionano il calcolo del frattale man mano che si procede con lo zoom.
Ho richiesto quindi di aggiustare il codice ed ho ottenuto una versione decente dell’applicazione che avevo in mente e come si può vedere con il calcolo corretto del numero di iterazioni i bordi del frattale risultano decisamente più evidenti e vividi.

Un potente alleato
Da questa semplice applicazione si imparano molte cose, sia sull’impatto dell’AI nello sviluppo che sul ruolo che comunque, almeno per ora, gli sviluppatori dovranno svolgere. Innanzitutto le interazioni complessive per ottenere un’applicazione interamente funzionante sono state meno 10, molto meno delle 80 incluse con il piano gratuito di Copilot offerto da GitHub.
Lo sviluppo di un’applicazione come questa avrebbe richiesto qualche ora di programmazione di un programmatore esperto, capace di implementare tecniche di computer graphics come il double buffering per evitare il flickering durante l’aggiornamento della vista mentre si seleziona l’area. Ho ottenuto il codice desiderato in pochi minuti, un’accelerazione sorprendente e impensabile solo pochi mesi fa (i primi tentativi di ottenere il codice del Mandelbrot con ChatGPT 3.5 erano decisamente lontani da quello ottenuto e per lo più errati). Resta il fatto che il codice generato aveva un problema subdolo: il programma era corretto e passava i controlli del compilatore ma la funzione richiesta era assente a causa di un errore di gestione delle variabili. Da programmatore con esperienza ho facilmente individuato il bug che altrimenti sarebbe stato difficile da individuare.
Si conferma quindi l’impressione che, almeno per ora, l’AI nel mondo dello sviluppo consenta di accelerare i tempi di implementazione a patto che vi sia qualcuno capace di verificare che l’output sia corretto ed eventualmente aggiustare il tiro ponendo le giuste questioni al modello.
Conclusioni
L’introduzione dell’AI all’interno dell’editor di codice più utilizzato al mondo rappresenta, se avevamo ancora dubbi, il segno che l’AI è un supporto ormai irrinunciabile per la programmazione.
Sempre più codice sarà generato e, almeno per un po’, i programmatori dovranno supervisionare l’output che come abbiamo visto può essere “quasi” corretto, e un “quasi” in un programma può corrispondere a un malfunzionamento significativo che può compromettere un intero sistema. È necessario quindi ripensare, almeno in parte, il ruolo che i programmatori svolgono, e anche il percorso formativo per formare i nuovi. La capacità di leggere il codice, abilità che si sviluppa col tempo, dovrà essere più oggetto di studio affinché chi verifica i codici possa farlo in modo critico individuando gli errori introdotti dall’AI.
Resta interessante la scelta di Microsoft di consentire di usare i modelli dei principali attori in questo settore, senza cercare di sfruttare la posizione di vantaggio dell’editor per forzare l’adozione dei modelli di OpenAI nella programmazione.
L’impatto a cui assisteremo contribuirà, se già non lo ha fatto, a ridurre le opportunità di lavoro per sviluppatori, e sicuramente saranno sempre più specialistici i posti messi a disposizione data la necessità di verificare il lavoro dell’AI in materia. Non resta che chiedersi quando anche questa supervisione diverrà superflua.