Sono lontani i tempi in cui il software si acquistava su un supporto fisico, ad esempio le cartucce dei giochi, e non c’era mai necessità di aggiornarlo. Il mondo però è cambiato, e con esso anche il software, nel modo in cui viene utilizzato e creato

Oggi il software non vive più all’interno di una custodia, in modo indipendente, ma su macchine interconnesse tra loro. Per questo, deve reagire al cambiamento e adattarsi continuamente, che si tratti di un aggiornamento di sicurezza a fronte di un nuovo attacco o delle funzionalità per stare al passo con un ecosistema in continua evoluzione. Il software deve essere aggiornato e manutenuto. Il codice deve essere riscritto, le dipendenze aggiornate e le applicazioni ridistribuite.

Come si può immaginare, questo processo non è gratuito e il codice richiede una spesa continuativa per essere mantenuto in funzione affinché fornisca valore. Più codice si deve manutenere, più elevato è l’investimento, motivo per cui spesso si tende a eliminarlo. Una domanda sorge spontanea: perché si dovrebbe eliminare del codice che fornisce ancora valore? E soprattutto, dove risiede il suo valore?

Evoluzione del codice e dell’ecosistema di sviluppo

Per comprendere il valore del codice, bisogna parlare di astrazione. La maggior parte degli sviluppatori non codifica con 0 e 1, o addirittura da 0 a f (alcuni lo fanno ancora). I linguaggi di programmazione sono migliorati per consentire ai programmatori di utilizzare parole vere e proprie invece di 0 e 1 e continuano a evolversi verso livelli di astrazione più elevati per semplificare il lavoro dei programmatori. Vi è stato un passaggio da linguaggi macchina di basso livello (prima generazione o 1GL) all’assembly (seconda generazione o 2GL), a quelli di alto livello più astratti (3GL) come C o Java, a linguaggi più specifici per il dominio (4GL) come R, SQL o PL/SQL, fino a quelli basati su vincoli e logiche (5GL) come Lisp, OPS5 o Mercury. Ogni generazione astrae una maggiore complessità dallo sviluppatore. I 5GL si affidano all’intelligenza artificiale per creare risolutori basati su problemi e condizioni dichiarati. Allo stesso tempo, l’hardware si è evoluto per astrarre in silicio ciò che gli sviluppatori avrebbero dovuto scrivere così come gli ecosistemi di sviluppo. I programmatori non partono da zero quando iniziano un nuovo progetto. Utilizzano librerie, dipendenze, database, piattaforme di dati e no code/low code e interagiscono con il software esistente. Tutto ciò che possa astrarre il codice e fornire lo stesso livello di funzionalità con meno codice scritto.

Ridurre il TCO e migliorare la manutenzione

Ricominciare da zero sarebbe proibitivo. Per fornire valore, è opportuno utilizzare le astrazioni. Meno codice scritto significa meno codice da manutenere, investimenti inferiori per questa attività, e quindi un TCO inferiore.

Il compito di uno sviluppatore è di scrivere codice proprietario, Chi dovesse averne ancora in esecuzione ha fornito valore e continuerà a farlo anche in futuro. Uno dei modi migliori per agire è scegliere saggiamente il proprio ecosistema di strumenti e dipendenze o astrazioni. L’utilizzo di una moderna piattaforma di dati cloud che supporta diverse tipologie di workload e continua a proporne di nuovi è una buona scommessa, in quanto cambiare database lungo il percorso è costoso. Non si tratta tanto di spostare i dati, quanto di riscrivere il codice e mantenere nuove funzionalità e, come già anticipato, più codice si scrive, più alto è il costo di manutenzione.

Impatto dell’Intelligenza Artificiale sullo sviluppo del software

Qual è il ruolo dell’intelligenza artificiale quando si parla di sviluppo software? C’è stato molto entusiasmo per i modelli linguistici di grandi dimensioni (LLM) e sono emersi nuovi strumenti che promettono di scrivere codice al posto degli sviluppatori. Sebbene questo possa ridurre il costo iniziale dello sviluppo del software, è davvero questo che vogliono programmatori, organizzazioni e team? Qual è il costo di avere più codice scritto che possa o non possa fare ciò che viene richiesto, che non è stato scritto da nessuno del team? Quanto sarebbe impegnativo mantenerlo quando potrebbe essere astratto con lo strumento o la libreria giusti? Quanto diventerà costoso?

Si consideri che, a oggi, le IA generative di codice creano debito tecnico per 3GL. Questo potrebbe cambiare in futuro, man mano che diventeranno più precise e miglioreranno l’utilizzo delle astrazioni esistenti e degli ecosistemi circostanti. Tuttavia, non stanno generando valore aggiunto, anzi. Per ridurre il TCO, è necessario scegliere le astrazioni giuste e se si volesse adottare l’intelligenza artificiale generativa, affidandole la scrittura di codice per ridurre il TCO è bene assicurarsi di utilizzarla con la dovuta attenzione affinché produca reale valore aggiunto.

A cura di Laurent Doguin, Director, Developer Relations & Strategy di Couchbase