
Ricopri il ruolo di CTO per oltre 20 anni. Puoi portarci indietro agli inizi? Cosa ti ha ispirato a intraprendere una carriera nel mondo della tecnologia e dellโinformatica?
Primo ProgettoLa mia carriera professionale, a oggi, รจ lunga 30 anni, 32 per la precisione: i primi 10 anni sono stati di libera professione, mi occupavo principalmente di sviluppo di soluzioni software nel mondo dellโindustria. Poi ho intrapreso la carriera imprenditoriale e, con altri soci, ho fondato lโazienda (una software house) dove tuttora lavoro. Sin dalla fondazione di tale azienda, per i miei skill e il mio mindset, era naturale che io facessi il CTO. Adesso lโazienda รจ di proprietร di una multinazionale con base in Germania e io sono sempre lรฌ a fare (anche) il CTO. Dico โancheโ perchรฉ oltre ad essere il CTO sono pure il CISO dellโazienda e team leader di un gruppo interno di sviluppo dedicato a sviluppi software speciali.
Mi chiedi dei miei inizi: posso dire che nemmeno quei 10 anni di libera professione sono gli inizi; ho scritto il mio primo programma a 13 anni su un VIC 20 della Commodore, poi penso che la mentalitร dellโinformatico io lโabbia realmente formata tra i 14 e i 18 anni sul Commodore 64 programmando in BASIC prima e linguaggio macchina poi. A 19 anni ho frequentato lโuniversitร di Scienze dellโInformazione a Pisa per 4 anni (piรน uno per la tesi) e la partita IVA lโho aperta quando ero ancora studente del terzo anno. Non ho quindi scelto esplicitamente di fare carriera nellโIT, ci sono scivolato dentro naturalmente.
Ricordi il tuo primo progetto realizzato? Quali linguaggi o strumenti hai utilizzato e quali sfide hai affrontato in quei primi passi?
Evoluzione del ruolo CTOTralasciando il software scritto in gioventรน sui Commodore, il primo progetto professionale realizzato รจ stato un generatore di file PostScript scritto in C++ su SCO Unix, correva lโanno 1992, si trattava di un modulo di un prodotto software nellโarea applicativa del medicale. In questo primo progetto scrissi il mio primo parser, usando lex e yacc. Ero ancora studente del terzo anno dellโuniversitร , avevo skill in C++ e PostScript oltre che in grammatiche formali, risposi a un annuncio di una azienda fiorentina che faceva capolino sulla bacheca degli annunci della facoltร , feci il colloquio, mi presero, aprii la partiva IVA e iniziรฒ cosรฌ ufficialmente la mia carriera.
Come รจ cambiato il ruolo del CTO negli anni? Quali nuove sfide sono emerse con lโavvento di tecnologie come il cloud computing, lโintelligenza artificiale e i modelli linguistici di grandi dimensioni (LLM)?
Approccio alla progettazione softwareIl ruolo del CTO รจ cambiato tantissimo. Intanto รจ bene precisare che il ruolo del CTO dentro una software house รจ diverso dal medesimo ruolo in unโazienda che non produce software, ma considera il software un asset. Nel rispondere a questa domanda mi riferirรฒ solo al ruolo del CTO in una software house.
20 anni fa il CTO era principalmente responsabile della supervisione tecnica dello sviluppo del software, si concentrava sullโadozione delle tecnologie piรน adatte al ciclo di vita del prodotto e gran parte del lavoro era legato al codice, ai linguaggi di programmazione e alle architetture dei sistemi. Era il punto di riferimento per i team di sviluppatori, garantendo che i prodotti fossero tecnicamente solidi e ben progettati; sebbene lโinnovazione fosse importante, il focus era spesso sulla consegna puntuale dei prodotti e sulla stabilitร tecnica, piรน che sullโanticipare le tendenze di mercato.
Oggi รจ diverso. Il CTO รจ una figura chiave nella definizione della roadmap tecnologica e del posizionamento strategico dellโazienda, collabora con CEO, COO, CPO e altre figure dirigenziali per identificare opportunitร di mercato e guidare lโazienda verso nuovi trend tecnologici. In una software house moderna, il CTO promuove una cultura aziendale basata sullโinnovazione, sulla collaborazione e sullโapprendimento continuo, guida lโadozione di metodologie nuove (agili, DevOps, processi CI/CD, ecc) per accelerare il time-to-market, si occupa di garantire che i prodotti e le piattaforme siano scalabili e ottimizzati per i mercati globali ed รจ responsabile anche di garantire che il software rispetti standard tecnologici, etici, normativi e di sicurezza, protezione dei dati e impatti ambientali.
E ora vi รจ lโAI che avanza in modo pervasivo e gli LLM sono, a oggi, la falange piรน avanzata (o quantomeno quella che fa parlare piรน di sรฉ) e questo richiede un nuovo mindset per i CTO di oggi e domani.
Sei esperto in programmazione web, ad esempio AngularJS e React.js. Come scegli quale framework o tecnologia utilizzare per un determinato progetto?
Scalabilitร & efficienzaLa scelta dei framework รจ sempre una decisione delicata in azienda perchรฉ una volta presa poi diventa, per anni, standard aziendale; lโazienda investe in formazione prima e poi tanto nuovo codice viene scritto usando quel framework e non si puรฒ poi cambiare da un giorno allโaltro quando cโรจ qualcosa di migliore a disposizione. La scelta di un framework รจ una scelta condivisa con gli altri attori aziendali coinvolti nella tecnologia, si valutano pregi e difetti, si valuta il ToC (total cost of ownership), si valutano gli skill giร presenti in azienda, si compila la matrice Pro/Cons e alla fine si decide.
Quali sono le migliori pratiche che segui per garantire scalabilitร ed efficienza nello sviluppo e nella gestione di sistemi software moderni?
Machine Learning & LLMPer la scalabilitร , secondo me, a oggi la migliore strategia รจ progettare applicazioni multi-tenant su cloud pubblico e distribuirle ai clienti in modalitร SaaS. Per lโefficienza, il discorso รจ complesso, le tecniche sono tante, comunque in primis รจ seguire i pattern standard architetturali e usare strumenti disponibili oggi sul cloud, ad esempio database no-sql (anzichรฉ andare per abitudine sui database relazionali) e utilizzare quanto piรน possibile approcci serverless (anzichรฉ le classiche macchine virtuali installate a mano). Per la gestione dei sistemi sicuramente il paradigma e la cultura DevOps sono fondamentali, i rilasci manuali oramai sono ingestibili, il deploy dei sistemi e delle applicazioni deve essere fatto in modo scriptabile. Infine lโanalisi statica del codice e i test automatici devono essere attivitร ineludibili che devono essere perfettamente integrati nelle pipeline CI/CD.
el tuo blog [ettoremessina.tech], nel tuo sito web [computationalmindset.com] e su GitHub [github.com/ettoremessina] dai grande importanza alle reti neurali e allโintelligenza artificiale. Cosa ti entusiasma di piรน riguardo al futuro dei modelli linguistici di grandi dimensioni (LLM)?
Machine Learning & LLMCome CTO di una azienda ovviamente non posso divulgare, nemmeno parzialmente, gli artefatti prodotti al lavoro. Perรฒ io credo nella cultura della condivisione, mi sono sentito eticamente obbligato a condividere alcune cose che ho costruito o che ho imparato nelle mie attivitร informatiche svolte al di fuori del contesto lavorativo. computationalmindset.com รจ un sito web verticalizzato in cui condivido frammenti di codice nel mondo delle reti neurali, della computazione quantistica, della matematica sottostante (calcolo differenziale e integrale multivariato, equazioni differenziali, trasformate di Fourier) e mostro lโuso di questa matematica nel contesto del machine learning dellโAI pre-generativa.
Invece ettoremessina.tech รจ un blog meno verticalizzato, dove condivido altri aspetti dellโinformatica senza un format ben preciso; lรฌ si spazia dalla cybersecurity al disassembler del malware, dallโAI generativa allโhigh performance computing e presto ci saranno post sugli LLM, ma soprattutto sui loro usi applicativi. Nel mio sito web e nel mio blog evito di ripetere informazioni che sono giร disponibili in rete, mi sforzo di contribuire in modo originale. Su github.com/ettoremessina ci sono i sorgenti degli artefatti originali da me prodotti nelle mie attivitร personali.
Come vedi l’evoluzione degli LLM negli ultimi anni? Quali progressi ritieni piรน significativi?
Machine Learning & LLMSecondo me bisogna distinguere due ere: quella dellโAI pre-generativa e quella dellโAI generativa. Per essere precisi lโAI generativa esisteva giร da tempo (le GAN sono nate del 2014, i transformers sono del 2017), ma io qui intendo il momento spartiacque in cui lโAI generativa รจ diventata usabile da tutti; diciamo che considero lโuscita di ChatGPT 3.5, nel novembre 2022, il momento il cui lโAI generativa รจ diventata di dominio pubblico. Da quel momento tante cose sono cambiate.
LโAI pre-generativa รจ fondamentale per realizzare task quali la classificazione, la regressione (ovverosia lโequivalente della classificazione ma su variabili continue), il clustering, ecc, ma non impone un cambio di mentalitร , offre strumenti potentissimi che si affiancano al normale sviluppo applicativo classico. Diciamo (semplificando tantissimo) che lo sviluppo classico copre i casi dโuso in cui serve determinismo e i requisiti sono ben definiti mentre lโAI pre-generativa copre quei casi dโuso in cui i requisiti non sono fortemente definibili e una certa dose di non determinismo รจ accettabile, se non addirittura auspicabile.
LโAI generativa invece impone un cambio di prospettiva perchรฉ va a coprire casi dโuso nuovi: il futuro degli LLM non sarร un nuovo chatbot ancora piรน potente degli esistenti (che comunque arriverร ), il futuro dei prossimi 2 o 3 anni degli LLM sono gli agent: componenti software che interpretando il linguaggio naturale svolgono azioni applicative complesse, dialogando con altre applicazioni tramite API. Ad esempio un agent potrebbe emettere ordini di acquisto in automatico analizzando in autonomia le scorte di magazzino e chiamando le API delle varie applicazioni coinvolte per emettere gli ordini, controllare poi il tracking della merce ordinata (chiamando le API dei corrieri) e lanciare alert in caso di problemi nella consegna (interagendo con le app di messaggistica) al responsabile di magazzino, proponendo anche soluzioni per gestire i problemi. Si tratta di un cambio di paradigma in quanto oggi le applicazioni rispondono agli umani ed eventuali automatismi oggi presenti sono comunque deterministici (eseguono azioni basate su un sistema di regole), domani invece gli agent possono โcomprendereโ cosa stia avvenendo nei sistemi e intervenire operativamente. Sentiremo prestissimo parlare di RAG, di knowledgement base, di applicazioni โagenticheโ, di fine-tuning e refinement di LLM. Tutto ciรฒ รจ il progresso piรน significativo che gli LLM stanno portando in dote.
Gli LLM sollevano numerosi dilemmi etici, come la gestione dei bias nei dati. Come pensi che possano essere affrontati questi problemi?
Applicazioni pratiche per LLMDomanda difficilissima. Avrei tante possibili risposte e nessuna soddisfacente. Sono un tecnico, non sono nรฉ un filosofo, nรฉ un sociologo nรฉ un futurologo. Rischierei di dire cose troppo banali se provassi ad articolare una risposta alla tua domanda. Non รจ scortesia non rispondere, รจ che cโรจ troppa gente che non sa niente di AI perรฒ pretende di dire la sua sullโeticitร dellโAI. Conosco lโAI dal punto di vista tecnico, sugli impatti etici dellโAI ne posso vedere i pericoli, e anche le potenzialitร , ma non mi sento di dire la mia sullโargomento dellโeticitร dellโAI, non voglio aggiungermi alla schiera di chi parla senza avere le giuste qualificazioni sullo specifico argomento.
Secondo te, quali sono oggi le applicazioni reali piรน promettenti degli LLM e come pensi che influenzeranno le industrie nei prossimi 5-10 anni?
LeadershipCome accennato sopra, le applicazioni reali piรน promettenti sono gli agent. Ci saranno vari tipi di agent, implementati in svariati modi sul cloud, sullโedge, on premise. Si parla anche di AI fisica, ci saranno degli agent che gireranno a bordo di supercomputer che gireranno dentro il robot stesso. Non bisognerร aspettare tanto tempo, tra pochi mesi ci sarร in commercio un supercomputer in miniatura a costi simili a quelli di un buon laptop.
Cโรจ anche unโaltra evoluzione degli LLM: gli LCM, acronimo di Large Concept Model, che sono dei modelli che lavorano con intere frasi anzichรฉ con parti di parola (i c.d. token) come avviene per gli LLM.
Agent e LCM saranno il prossimo futuro che influenzeranno le industrie nei prossimi 5 anni.
Come CTO, qual รจ la tua filosofia quando si tratta di guidare team tecnici? Come stimoli lโinnovazione e mantieni alta la motivazione del tuo team?
TrendsLa โTโ di CTO ovviamente mi porterebbe a massimizzare il risultato tecnico, ma la โCโ e la โOโ mi portano a considerare altri aspetti, quali i costi, il rispetto delle normative, lโutilitร commerciale. Invito quindi i team a considerare il fatto che non si vive solo di tecnologia, ma che nella vita aziendale vi deve essere un equilibrio. Solo sulla sicurezza non faccio sconti perchรฉ la sicurezza รจ un aspetto non derogabile, mentre lโadozione immediata dellโultimo grido della tecnologia non รจ un must. Stimolo lโinnovazione mostrando che non si deve restare sempre nella propria zona di confort ma nemmeno bisogna sempre saltare al volo sullโultimo treno tecnologico appena partito.
Il mondo tecnologico รจ in continua evoluzione. Come resti aggiornato sulle nuove tendenze e decidi su quali investire o implementare?
Il ruolo della curiositรUso al massimo tutto quello che la tecnologia oggi offre a livello formativo e informativo: ebook, paper, forum specializzati, abbonamenti a riviste online, podcast, corsi online, ecc. La cosa piรน importante, per me, resta la sperimentazione: fare esperimenti, fare prototipi, esercizi. Sperimentare senza supporto teorico non va bene, si perde tantissimo tempo e si procede a tentoni, ma limitarsi ad ascoltare passivamente la divulgazione รจ troppo poco. Se la sperimentazione rientra nel contesto lavorativo, ovviamente la svolgo in azienda con strumenti aziendali; se invece riguarda la sfera extra-lavorativa, svolgo i miei studi e i miei esperimenti dopo cena e, quando ha senso, li condivido su https://ettoremessina.tech/, su https://computationalmindset.com/ e su https://github.com/ettoremessina/.
Cosa alimenta la tua curiositร in campi come il calcolo quantistico e il reverse engineering?
Bilanciare lavoro e passioneAlcuni tecnici informatici sono troppo verticalizzati, hanno forti skill su un solo argomento e trascurano gli altri. Io, per mia mentalitร , preferisco avere skill a โTโ, ovvero avere una conoscenza ampia su molti settori e poi verticalizzare su quei 4 o 5 (mai uno solo) argomenti con cui si ha una certa affinitร . Ad esempio il calcolo quantistico mi attira (anche se a oggi i casi dโuso pratici sono limitatissimi) perchรฉ la matematica รจ sempre stata la mia materia preferita al liceo, ho avuto modo di approfondire molto la matematica allโuniversitร (e anche dopo); la programmazione quantistica richiede, ad oggi, una necessaria conoscenza di una certa matematica avanzata che conosco e che amo poterla applicare in contesti informatici pratici.
Riguardo al reverse engineering, questo deriva dal lontano passato, da quando da ragazzo programmavo in assembly sul 6510 (la CPU del Commodore 64) e poi intorno ai 20 anni in assembler sulle CPU x86 (facevo driver per MSDOS e per le prime versioni di Windows). Da lรฌ poi ho sempre seguito le evoluzioni dellโassembly, sia x64 che ARM che delle GPU. Naturalmente ora non uso lโassembly per sviluppare, perรฒ ho imparato lโarte (dellโassembly) e lโho messa da parte, e adesso lโho tirata fuori e la uso per il reverse engineering anti malware.
Con una gamma cosรฌ ampia di interessi, come riesci a bilanciare le tue responsabilitร professionali con i progetti personali e il blogging?
Competenze chiavePer me รจ un must, tengo fortemente separati gli ambiti lavorativi dagli ambiti personali. Nel mio blog, nel mio GitHub, nel mio sito non cโรจ mai niente che riguarda gli artefatti prodotti al lavoro, la cui proprietร intellettuale รจ dellโazienda. Vale anche il viceversa: al lavoro non utilizzo mai artefatti personali che ho condiviso su Internet. Uso anche computer diversi, i computer che uso al lavoro non sono quelli che uso per i progetti personali. Anche le licenze software che ho in azienda non le uso per i progetti personali e quando mi servono personalmente le compro con il mio account personale.
ร chiaro che poi la mente รจ una sola e se imparo una cosa in un ambito poi non posso far finta di non saperla nellโaltro; perรฒ per deontologia professionale sto molto attento a separare i due ambiti e direi che vi riesco molto bene.
Quali qualitร consideri essenziali per chi vuole intraprendere una carriera nel settore IT e distinguersi in un ambiente tecnologico sempre piรน competitivo?
Impatto della tecnologiaLa qualitร che considero essenziale รจ avere la capacitร di formarsi skill a โTโ: quindi avere curiositร e voglia di conoscere tutti i vari aspetti dellโIT e di conoscerne gli scopi, i confini e le evoluzioni (e anche un poโ di storia). Dopodichรฉ scegliere 4 o 5 argomenti (anche 2 o 3 a limite, ma mai uno soltanto) e approfondire questi a livello professionale; ed essere sempre pronti poi ad abbandonarne qualcuno a favore di qualche altro argomento piรน attuale. Secondo me se si intraprende la carriera IT specializzandosi solo su un argomento si rischia lโobsolescenza professionale giร a 30 anni.
Qual รจ la cosa principale che vorresti che piรน persone comprendessero riguardo alla tecnologia e al suo impatto sul mondo?
Futuro professionaleBasterebbe leggersi lโโEU Cyber Resilience Actโ o lโโEU AI Actโ o il โGDPRโ per capire lโimpatto della tecnologia sul mondo. Ovviamente chi dirige unโazienda ne รจ a conoscenza, ma sarebbe bello che tutti gli attori coinvolti avessero contezza dei danni che si possono involontariamente provocare con lโinformatica per superficialitร o irresponsabilitร โฆ
Puoi darci unโanteprima di ciรฒ che ti aspetta nella tua carriera o nei tuoi progetti personali?
Sicuramente un forte impegno sugli agent LLM (quindi RAG, fine tuning, knowledgement base, ecc). Questo impegno รจ giร in essere e avrร implicazioni sia sulla mia carriera professionale che sui progetti personali (ovviamente sempre tenendo distinti gli ambiti). Sui progetti personali prevedo inoltre studi sullโhigh performance computing (anche in vista dellโuscita di un supercomputer miniaturizzato tra pochi mesi) e in particolare la programmazione CUDA in C/C++. E sulla sicurezza, oltre al reverse engineering su ARM, prevedo esperimenti nel mondo degli IDS (intrusion detection system). Questโultima cosa degli IDS potrebbe avere anche applicazioni al lavoro nello svolgimento dei mio ruolo di CISO.