Blu Sistemi rilascia in produzione il suo primo software sviluppato tramite Intelligenza Artificiale


La notizia è di quelle forti, probabilmente destinata a rinfocolare il dibattito, ma anche le polemiche, che in questi mesi sono in corso, riguardo all’impatto che le nuove Intelligenze Artificiali Generative stanno avendo, e avranno sempre più in futuro, sul mondo del lavoro.

Cominciamo con il dare la notizia.

La nostra azienda ha rilasciato in esercizio un sistema software il cui codice è stato interamente realizzato da una intelligenza artificiale.

È la prima volta che questo avviene in assoluto? Ovviamente no. In Italia non è ancora molto diffuso l’impiego, a livello industriale, di sistemi di generazione del codice basati sull’intelligenza artificiale, ma esistono già diversi esempi, anche nel nostro paese, di impiego sistematico di strumenti quali GitHub CoPilot e simili, che permettono la generazione automatica di parti di codice.

Da uno studio condotto da CNA Digitale Roma, è stato rilevato che l’uso di questi strumenti è molto più diffuso tra i tecnici, soprattutto i più giovani, di quanto gli imprenditori stessi siano portati a pensare.

In pratica sta avvenendo con l’IA generativa quello che era già avvenuto con altri strumenti legati alla facile reperibilità delle informazioni su Internet, come Stack Overflow e Reddit. In maniera latente, e senza che vi fosse stata una specifica attività di reingegnerizzazione dei processi di sviluppo, i developer hanno imparato a sfruttare la grande disponibilità di codice già scritto e di informazioni e soluzioni relative agli errori di coding più frequenti, incrementando di fatto la propria produttività.

Il semplice ChatGPT, reso universalmente disponibile da OpenAI, è già sufficiente a supportare i programmatori nella stesura e nell’interpretazione del codice e, inevitabilmente, è già usato da moltissime persone con questo scopo.

Quello che abbiamo fatto in Blu Sistemi è qualcosa di più strutturato ed è frutto di un preciso progetto di ricerca avviato nel 2021 presso il Digital Innovation Hub di Roma, assieme alle aziende partner Chirale e TCH Sistemi e con la collaborazione di studenti e ricercatori delle università con cui abbiamo degli accordi di partenariato.

Abbiamo disegnato un nuovo processo per lo sviluppo di applicazioni software che di fatto può essere considerato a “zero coding” almeno dal punto di vista del lavoro umano.

Che vuol dire zero coding? Questo termine inizia ad essere abbastanza di moda e si riferisce solitamente all’impiego di piattaforme e prodotti, già pronti e ricchi di funzionalità, che permettono la realizzazione di applicazioni web semplicemente configurando determinati parametri e spesso utilizzando meccanismi GUI di tipo drag and drop.

L’impiego di sistemi e piattaforme commerciali di questo tipo, specie se consolidate e ampiamente diffuse sul mercato, può essere in molti casi la soluzione più opportuna, in alternativa allo sviluppo di software custom, per quei progetti che non dispongono di budget elevati e che nello stesso tempo sono caratterizzati da vincoli temporali stringenti.

Già da tempo per l’offerta rivolta al segmento PMI, le attività di sviluppo del Gruppo Blu Sistemi erano state riorganizzate prevedendo un ampio uso di framework CMS e piattaforme di data storage e data analytics di questo tipo.

Tuttavia, per i progetti più innovativi, strutturati e complessi resta indispensabile lo sviluppo di codice ad hoc.

In questo ambito, a partire dalla fine del 2017, il nostro centro di ricerca ha iniziato a guardare con interesse i nuovi modelli di reti neurali, nell’area dei cosiddetti Large Language Model (LLM), dove l’oramai celebre articolo di Vaswani e altri, “Attention is All You Need” mostrava tutte le potenzialità delle strutture denominate “Transformer” e del paradigma di “Self Attention”, che entro pochi mesi avrebbero dominato e cambiato radicalmente il settore del Deep Learning, con la comparsa sul mercato dei nuovi e stupefacenti modelli generativi.

Essendo già molto attivi nel settore del Deep Learning, non poteva sfuggirci il fatto che la generazione automatica del codice sarebbe stata l’applicazione perfetta di questo tipo di modelli, per cui, con la pubblicazione delle API Codex da parte di OpenAI abbiamo deciso di avviare, assieme ai nostri partner, un progetto di ricerca per mettere a punto un nuovo processo di sviluppo basato sulla generazione di codice efficiente e qualitativamente superiore a partire dalla definizione in linguaggio naturale delle specifiche software.

Gli obiettivi erano piuttosto ambiziosi e in particolare il risultato finale doveva essere un processo di sviluppo, general purpose, in grado di incrementare la produttività della software factory, migliorandone nel contempo la qualità del software.

In particolare gli obiettivi del progetto erano:

  • Strumenti di generazione di codice integrati con gli IDE diffusi in azienda.
  • Capacità di ricevere input da specifiche incomplete, in linguaggio naturale, ma anche in forme sintetiche tabellari o attraverso esempi.
  • Codice generato nel rispetto di standard di nomenclatura, con naming delle strutture sintattiche in inglese e ben commentato con commenti in italiano.
  • Codice di qualità, conforme ai più recenti principi di software engineering e facilmente comprensibile e mantenibile da esseri umani.

Per circa 18 mesi sono stati sviluppati diversi prototipi e sono stati affrontati diversi ordini di problemi, ma sin dai primi giorni i risultati ottenuti sonno apparsi sorprendentemente migliori del previsto, a dimostrazione che il training operato sul modello GPT alla base di Codex era stato di prim’ordine ed includeva anche molto software di tipo specialistico, affine ai nostri tipici campi di applicazione.

La derivazione del modello Codex dallo stesso LLM pre-addestrato da cui è derivato il celeberrimo ChatGPT si è rivelata da subito un fattore determinante per il successo del progetto.

Finalmente pochi mesi fa, praticamente in concomitanza con il rilascio delle nuove API di OpenAI che hanno superato l’oramai vecchio modello Codex, è arrivata l’opportunità di mettere in pratica il nuovo processo.

Una importante impresa consortile che opera a livello nazionale nel settore del monitoraggio ambientale, energetico e della mobilità, ci ha chiesto di progettare il reengineering della propria piattaforma di acquisizione e analisi dei dati verso un modello di “edge computing” più scalabile ed economico da esercire, rispetto alla soluzione legacy basata su dispositivi relativamente costosi collegati attraverso una VPN proprietaria implementata su rete GPRS/4G.

La nostra risposta è stata la realizzazione di un nuovo sistema, basato su dispositivi remoti a basso consumo energetico, equipaggiati con microcontrollori a 32 bit, rete LoRaWan e impiego di soluzioni cloud computing con hosting dedicato e gestito.

Per la prima volta, il nuovo processo di sviluppo è stato messo in pratica, e il risultato è stato quello atteso.

Per la raccolta, memorizzazione e analisi dei dati, dopo una accurata ricerca comparativa, è stata individuata una piattaforma ‘low code’ leader di mercato, che offre tra i suoi servizi l’hosting dedicato e il cosiddetto ‘white labeling‘, cioè la possibilità di operare su un dominio web di proprietà del cliente e con il logo del cliente, mascherando totalmente il brand della piattaforma.

Dato l’elevato grado di specificità del sistema da realizzare nel nostro caso, il low coding promesso dalla piattaforma era prevedibilmente ottimistico, trattandosi di impegnative funzioni di decodifica di payload associati ai messaggi LoRaWan scambiati nell’ambito di un protocollo applicativo molto complesso e articolato.

L’attività di progettazione e ottimizzazione del protocollo applicativo è stata molto accurata e particolare cura è stata posta nel rispetto degli stringenti vincoli di occupazione di banda, caratteristici dello standard LoRa ed essenziali per garantire il rispetto delle normative europee sull’uso dei canali RF utilizzati e il basso consumo energetico dei dispositivi sensori.

Tutto il codice necessario all’implementazione del sistema è stato generato dai nostri nuovi strumenti AI, basati sulle nuove API di OpenAI, a partire dai documenti di specifica e dai prompt del nostro, ridottissimo, team di progetto.

Il risultato è stato un sistema funzionante al primo colpo e la produzione di un software di estrema qualità.

Questo progetto dimostra senza alcun dubbio che un solo specialista, esperto nello sviluppo di software e competente sullo specifico dominio applicativo, è in grado di dirigere uno strumento AI, indirizzando lo sviluppo di software in un tempo drasticamente inferiore a quello tipico dei corrispondenti processi basati sul lavoro umano di coding.

Ma se il nuovo processo di sviluppo che abbiamo messo a punto è così efficace ed efficiente rispetto ai metodi tradizionali, quale impatto potrà avere sulla futura organizzazione aziendale? Quali sono le implicazioni sulla forza lavoro?

Lo abbiamo chiesto in modo esplicito al nostro Presidente, Stefano Capezzone, che è anche Presidente di CNA Digitale Roma, e in questa veste ha già rilasciato sulla stampa nazionale alcune dichiarazioni che hanno destato l’attenzione di molti.

Presidente, sappiamo che non ami comparire su questo blog con nome e cognome, trattandosi del sito web che hai praticamente allestito tu stesso, occupandoti spesso di comunicazione, ma il tema è troppo importante per restare dietro l’anonimato del generico autore “redazione”, per cui, qual’è la tua personale opinione e cosa c’è da aspettarsi nel prossimo futuro?

Il mio pensiero l’ho già ampiamente formulato nelle interviste rilasciate all’Huffingthon Post e al Messaggero in occasione della presentazione dell’Evento che CNA Roma ha organizzato assieme alla Camera di Commercio per approfondire il tema degli impatti che le nuove IA avranno sul mercato, e si sintetizza nel fatto che l’impiego di questi strumenti, ora che sono così facilmente accessibili e diffusi, sarà inevitabile e cambierà per sempre molti scenari. A breve sarà evidente la differenza tra chi avrà imparato a lavorare con i nuovi strumenti e chi invece perderà competitività. Vale per le imprese ma vale anche per i professionisti.

Tuttavia, il vero problema, a detta di molti, è costituito proprio dalla maggiore produttività che si associa a questi strumenti. Il progetto che è stato l’occasione per scrivere questo articolo è la dimostrazione che per sviluppare un prodotto, occorrono decisamente meno persone di prima. C’è da attendersi una sensibile riduzione del personale nel settore ICT?

Secondo me il problema, espresso così, è mal posto. Il nostro nuovo processo di sviluppo ci rende più produttivi. Questo è il punto. Per anni nella nostra, come in tutte le altre aziende ICT, ci siamo lamentati della carenza di risorse e dell’impossibilità di seguire efficacemente tutti i clienti. La realtà di mercato è che il software è sempre più pervasivo, non c’è mai stata così tanta richiesta di nuovo software come negli ultimi anni e la situazione non potrà che seguire questo trend per molto tempo ancora.

Quello che accade, e qui parlo da portavoce e rappresentante delle aziende del digitale, è che nella maggior parte dei casi si tende a sviluppare il software contraendo eccessivamente i tempi e stressando le risorse, con il rischio di abbassare la qualità e rilasciare sul mercato prodotti che richiederanno impegni gravosi in attività di manutenzione, peggiorando lo stress sui team di sviluppo e riducendo ancora di più il tempo e la forza lavoro disponibile per i nuovi sviluppi.

Un sistema più efficiente e in grado di produrre software di qualità in modo automatico riduce i costi di sviluppo permettendo alle aziende di essere più competitive sui prezzi, permette di ridurre i carichi di manutenzione correttiva liberando risorse per i nuovi progetti e consentendo la crescita aziendale in modo più sano, veloce e meno stressante per tutti, dipendenti e management.

Ma in sostanza, prevedete un aumento o una diminuzione del personale, almeno nel breve termine. In altre parole, l’AI ci ruberà il lavoro? Le rivolgiamo la domanda da dipendenti ovviamente.

Quello a cui la nostra azienda, e tutte le aziende che hanno avviato un percorso di process reengineering come il nostro, dovranno gestire sarà un periodo di transizione, relativamente breve, in cui dovrà essere portata a termine una operazione di reskilling o turn over del proprio personale. Le nuove competenze richieste sono di maggiore livello, non più programmatori operativi in grado di scrivere codice un tanto al chilo, ma veri e propri progettisti in grado di disegnare processi di elaborazione, definire architetture software e strutture per l’integrazione di dati e processi. Persone con un background solido e strutturato in grado di governare il processo di sviluppo e guidare correttamente gli strumenti AI.

Le attività umane diventeranno sempre più orientate ai processi genuinamente creativi, legati alla progettazione, e alle attività di quality assurance dei sistemi.

Il codice generato deve essere analizzato, valutato e accuratamente testato.

I nostri strumenti sono in grado di generare migliaia di linee di codice in pochi minuti, laddove un bravo programmatore impiega alcuni giorni, ma le attività di quality assurance non sono comprimibili, anzi, la nuova efficienza nel coding deve portare ad un incremento dei tempi dedicati al testing e alla validazione del software.

Seguendo questo nuovo processo produttivo, le aziende ICT miglioreranno qualità e tempi di risposta e il risultato sarà la possibilità di accogliere più lavori. Alla fine il vero costo e il vincolo sarà sempre la disponibilità del personale. Aumentando il lavoro da svolgere e diminuendo i rischi di fallimento dei progetti, alla fine le aziende, sono sicuro, assumeranno di più.

Nella storia è sempre accaduto e accadrà anche questa volta: le nuove tecnologie creeranno più posti di lavoro di quanti ne avranno cancellati.

Per concludere, cosa consiglia ad imprese e professionisti dell’ICT?

Alle imprese del nostro settore che non vogliono perdere competitività suggerisco di intraprendere subito il reengineering del proprio processo di sviluppo, CNA Roma e il Digital Innovation Hub di Roma sono strutture a cui rivolgersi per essere supportati in questo tipo di iniziative,

I carichi di lavoro attuali sono impegnativi per tutti e in molte impresse gli sviluppatori affrontano periodi di stress. In questo scenario è possibile e forse opportuno favorire il turnover fisiologico che caratterizza il nostro settore e, anziché sostituire immediatamente le risorse coinvolte ripristinando la forza lavoro senza realmente cambiare nulla, è opportuno iniziare ad assumere persone giovani con un profilo più orientato ai nuovi processi, eventualmente da formare sugli specifici settori di mercato in cui opera l’impresa.

Nel breve termine una forza lavoro ridotta ma più qualificata e in grado di lavorare sfruttando i nuovi strumenti può essere la soluzione per incrementare le performance dell’impresa e guadagnare risorse economiche che possono finanziare il reengineering del proprio processo produttivo.

Ai professionisti del nostro settore suggerisco di investire sulla propria formazione cercando di assumere una nuova forma mentis, perché ben presto il loro modo di lavorare diventerà obsoleto. un cambio di lavoro può essere l’occasione per ridefinire anche il proprio profilo professionale.