Negli ultimi anni Kotlin si è affermato come uno dei linguaggi più rilevanti nello sviluppo software. Da tecnologia emergente è diventato una scelta sempre più diffusa nei progetti digitali, in particolare quando si parla di sviluppo mobile e soluzioni cross-platform.
Per capire cosa sta guidando questa crescita e perché sempre più aziende lo adottano, ne abbiamo parlato con Marco Porcaro, Android Tech Lead e Head of Technology in Synesthesia. Marco guida lo sviluppo software mobile e coordina team tecnici su progetti complessi, con un focus su architetture, ottimizzazione del codice e sviluppo Android. È inoltre membro del comitato Call for Papers di droidcon Italy, uno dei principali eventi dedicati alla community Android.
Nel corso di questa intervista abbiamo approfondito le origini di Kotlin, il suo rapporto con l’ecosistema Java, il ruolo che ricopre oggi nello sviluppo Android, il rapporto sempre più stretto tra Kotlin e Android e le prospettive aperte da Kotlin Multiplatform.
Cos’è Kotlin e perché è nato
Le origini del linguaggio Kotlin
Kotlin nasce all’interno di JetBrains con l’obiettivo di migliorare l’esperienza degli sviluppatori sulla JVM, mantenendo al tempo stesso una piena interoperabilità con Java. Secondo Marco Porcaro, uno degli aspetti più interessanti del linguaggio è proprio la sua capacità di innovare senza rompere con l’ecosistema esistente:
“Kotlin non nasce per sostituire Java, ma per risolvere molti dei problemi che gli sviluppatori incontravano ogni giorno, mantenendo la compatibilità con gli strumenti e le librerie già utilizzati.“
L’obiettivo iniziale era quindi molto concreto: ridurre la complessità dello sviluppo, migliorare la produttività e introdurre funzionalità moderne senza costringere i team a ripensare completamente la propria stack tecnologica.
Perché Kotlin ha conquistato gli sviluppatori
La diffusione di Kotlin è legata a diversi fattori. Il primo è la sintassi, più compatta e leggibile rispetto a quella di molti linguaggi tradizionali. Il secondo è la significativa riduzione del codice boilerplate, che permette di concentrarsi maggiormente sulla logica applicativa.
Ma c’è anche un tema legato alla sicurezza.
“Molte funzionalità che in altri linguaggi richiedono attenzione costante sono integrate direttamente nel linguaggio. Pensiamo alla gestione dei null: è uno degli aspetti che più contribuisce a ridurre errori e bug in produzione.”
Kotlin nell’ecosistema Java: continuità e innovazione Perché molti team adottano Kotlin
Uno dei motivi che hanno favorito la diffusione di Kotlin è la possibilità di introdurlo gradualmente all’interno di progetti esistenti.
Kotlin e Java possono convivere all’interno dello stesso progetto, consentendo ai team di evolvere applicazioni e processi senza affrontare migrazioni radicali. A questo si aggiungono una sintassi più compatta e una maggiore leggibilità del codice, aspetti che diventano particolarmente rilevanti nei progetti di grandi dimensioni.
Performance e produttività
Sul fronte delle performance, le differenze sono spesso meno rilevanti di quanto si possa immaginare. Il vero vantaggio di Kotlin riguarda la produttività dei team.
Marco sottolinea come il beneficio principale emerga soprattutto nel medio e lungo periodo:
“La velocità non dipende soltanto da quante righe di codice si scrivono. Dipende anche da quanto tempo si impiega a comprendere, modificare e mantenere quel codice nel tempo.”
La manutenzione risulta infatti più semplice grazie a una struttura generalmente più pulita e a una maggiore espressività del linguaggio.
Come si inserisce Kotlin nei progetti attuali
Java continua a ricoprire un ruolo centrale in molti sistemi enterprise e applicazioni legacy.
Kotlin si inserisce in questo contesto come uno strumento che permette di introdurre pratiche e funzionalità più moderne, mantenendo la compatibilità con tecnologie, librerie e competenze già presenti in azienda.
Per questo motivo viene spesso adottato nei nuovi progetti Android e, sempre più frequentemente, nei percorsi di evoluzione di applicazioni esistenti.
Kotlin e Android: un binomio consolidato
Perché Google ha scelto Kotlin per Android
La consacrazione definitiva di Kotlin è arrivata nel 2017, quando Google ha annunciato il supporto ufficiale al linguaggio per Android.
Da quel momento Kotlin Android è diventato progressivamente il riferimento per gran parte della community mobile.
“L’adozione da parte di Google ha dato fiducia alle aziende, ma il successo di Kotlin non deriva soltanto da questo. È un linguaggio che porta vantaggi concreti nel lavoro quotidiano degli sviluppatori.”
I vantaggi di Kotlin nello sviluppo Android
Tra i principali vantaggi emergono una maggiore leggibilità del codice, una riduzione degli errori e strumenti che consentono di sviluppare applicazioni in modo più efficiente.
La possibilità di integrare Kotlin gradualmente all’interno di progetti esistenti ha inoltre facilitato l’adozione da parte delle aziende.
Quando si parla di Kotlin and Android, uno degli aspetti più interessanti è proprio la naturale integrazione tra il linguaggio e gli strumenti messi a disposizione da Google.
Sviluppo Android con Kotlin: best practice e casi d’uso
Nell’ambito dello sviluppo Android, Kotlin si integra perfettamente con le architetture moderne e con gli strumenti più utilizzati dalla community.
La gestione dell’asincronia, ad esempio, è stata profondamente semplificata grazie alle Coroutines Kotlin, che consentono di scrivere codice più leggibile, più efficiente e più facile da mantenere.
Kotlin Android nelle aziende: stato dell’adozione
Oggi Kotlin Android è ampiamente utilizzato sia nelle startup sia nelle grandi organizzazioni. Per molte aziende non rappresenta più una tecnologia emergente, ma uno standard consolidato per lo sviluppo mobile.
In molti contesti, Kotlin Android è ormai la prima scelta per i nuovi progetti mobile, mentre Java continua a essere utilizzato principalmente per la manutenzione e l’evoluzione di applicazioni esistenti.
Kotlin Multiplatform: sviluppare per più piattaforme con un unico linguaggio
Cos’è Kotlin Multiplatform
Se Android è stato il motore che ha reso Kotlin popolare presso il grande pubblico, Kotlin Multiplatform rappresenta oggi una delle evoluzioni più interessanti del linguaggio.
L’obiettivo è permettere ai team di condividere parte del codice tra diverse piattaforme, come Android, iOS, web e desktop, mantenendo al tempo stesso la libertà di sviluppare componenti specifici per ogni ambiente.
Per molte aziende, Kotlin Multiplatform sta diventando una risposta concreta alla necessità di ridurre duplicazioni e ottimizzare i tempi di sviluppo senza rinunciare alle performance delle applicazioni native.
Come funziona la condivisione del codice
A differenza di altri approcci cross-platform, Kotlin Multiplatform non punta a creare un’unica applicazione identica per tutte le piattaforme.
La logica di business, i modelli dati e alcune funzionalità condivise possono essere sviluppati una sola volta e riutilizzati ovunque, mentre interfacce e componenti specifici rimangono nativi.
Questo approccio consente di trovare un equilibrio tra efficienza e flessibilità, evitando molti dei compromessi tipici dello sviluppo multipiattaforma tradizionale.
Vantaggi rispetto ad altri approcci cross-platform
Secondo Marco Porcaro, uno dei principali vantaggi di Kotlin Multiplatform è la possibilità di mantenere il controllo sull’esperienza utente e sulle caratteristiche specifiche di ciascun ecosistema.
“Il vantaggio non è soltanto condividere codice. Il vero valore è poter costruire prodotti coerenti tra piattaforme diverse mantenendo un approccio realmente nativo.”
Rispetto ad altri framework cross-platform, Kotlin Multiplatform consente infatti di riutilizzare ciò che ha senso condividere, senza imporre una struttura unica all’intera applicazione.
Quando Kotlin Multiplatform è la scelta giusta
Kotlin Multiplatform è particolarmente indicato per progetti che prevedono la presenza di più applicazioni con logiche comuni o per aziende che desiderano ottimizzare la manutenzione del software.
Non rappresenta necessariamente la soluzione ideale per ogni scenario, ma sta diventando sempre più interessante per organizzazioni che cercano un approccio moderno allo sviluppo multipiattaforma.
Coroutines Kotlin: come gestire la programmazione asincrona
Cosa sono le coroutine
Tra le funzionalità che hanno maggiormente contribuito al successo del linguaggio troviamo le Coroutines Kotlin.
Si tratta di uno strumento che permette di gestire operazioni asincrone in modo più semplice e leggibile rispetto all’utilizzo tradizionale dei thread.
Per chi sviluppa applicazioni moderne, eseguire attività in background senza bloccare l’interfaccia utente è fondamentale, e Kotlin offre una soluzione particolarmente elegante a questo problema.
Perché rappresentano una rivoluzione rispetto ai thread tradizionali
I thread rappresentano da sempre uno strumento potente ma complesso da gestire. Le Coroutines Kotlin consentono invece di scrivere codice asincrono mantenendo una struttura molto vicina a quella del codice sequenziale. Questo rende le applicazioni più semplici da leggere, testare e mantenere.
Per gli sviluppatori significa meno complessità e una maggiore facilità nell’individuare eventuali problemi.
Le criticità da conoscere
Come ogni strumento avanzato, anche le coroutine richiedono una comprensione approfondita del loro funzionamento.
Una gestione non corretta dei contesti di esecuzione o delle operazioni concorrenti può generare comportamenti inattesi. Per questo motivo è importante utilizzarle all’interno di architetture ben progettate e seguendo le best practice della community.
Gli strumenti più utili per imparare Kotlin
Kotlin Playground: imparare e testare codice online
Per chi desidera iniziare a sperimentare con il linguaggio, Kotlin Playground rappresenta uno degli strumenti più utili.
Si tratta di un ambiente online che consente di scrivere, eseguire e testare codice direttamente dal browser, senza la necessità di installare software o configurare ambienti di sviluppo.
Kotlin Playground è particolarmente apprezzato dai principianti perché permette di prendere confidenza con la sintassi in pochi minuti, ma viene utilizzato anche dagli sviluppatori più esperti per effettuare test rapidi e verificare nuove soluzioni.
Le migliori risorse per approfondire Kotlin
Oltre a Kotlin Playground, esistono numerose risorse per approfondire il linguaggio. La documentazione ufficiale rimane il punto di riferimento principale, grazie a esempi pratici e aggiornamenti costanti. A questa si affiancano corsi online, contenuti video, conferenze tecniche e una community internazionale estremamente attiva.
Per chi desidera crescere professionalmente, il confronto con altri sviluppatori rappresenta spesso uno dei modi più efficaci per consolidare le proprie competenze.
Il futuro di Kotlin secondo gli esperti
Evoluzione dell’ecosistema
A oltre dieci anni dalla sua introduzione, Kotlin continua a evolversi rapidamente. L’ecosistema cresce grazie al supporto di JetBrains, all’adozione da parte delle aziende e al contributo di una community particolarmente attiva. Le nuove funzionalità introdotte nelle versioni più recenti stanno ampliando ulteriormente gli scenari di utilizzo del linguaggio.
Intelligenza artificiale e sviluppo software
L’intelligenza artificiale sta cambiando profondamente il modo in cui viene sviluppato il software.
Anche per chi lavora con Kotlin, strumenti basati su AI stanno diventando parte integrante del processo di sviluppo, supportando attività come la scrittura del codice, il debugging e l’ottimizzazione delle applicazioni.
Opportunità professionali per gli sviluppatori Kotlin
La domanda di professionisti specializzati in Kotlin continua a crescere.
Dallo sviluppo mobile al backend, passando per Kotlin Multiplatform e le nuove applicazioni cloud-native, le opportunità professionali sono in costante aumento.
Per chi oggi si avvicina al linguaggio, Kotlin rappresenta non soltanto una competenza tecnica spendibile sul mercato, ma anche una porta d’accesso a un ecosistema in continua evoluzione, destinato a giocare un ruolo sempre più importante nel futuro dello sviluppo software.
Antonio, com’è lavorare all’interno del team Technology di Synesthesia?
Entrare nel team Technology di Synesthesia significa trovarsi in un contesto che riesce a combinare in modo raro due dimensioni solo apparentemente opposte: una struttura solida e organizzata e, allo stesso tempo, un clima umano molto coeso, quasi familiare.
Quello che mi ha colpito di più fin dall’inizio è stata proprio questa sensazione di gruppo. Nonostante la complessità dei progetti e il livello tecnico elevato, le persone sono sempre disponibili al confronto e alla collaborazione. C’è la percezione di lavorare insieme verso un obiettivo comune, più che di muoversi in silos separati.
Un altro aspetto distintivo è la reale possibilità di esprimere il proprio punto di vista. In Synesthesia il feedback non è solo “tollerato”, ma ricercato. Anche chi entra da poco può proporre miglioramenti su processi e modalità operative, e vedere che queste proposte vengono ascoltate e, quando valide, adottate. Questo contribuisce a creare un ambiente dinamico, in cui i processi non sono statici ma evolvono insieme alle persone e ai progetti.
Parliamo di metodo. Come approcci la gestione dei progetti tecnologici? In che modo waterfall e agile convivono nel tuo lavoro quotidiano e come incidono sulla riuscita dei progetti?
Per me la gestione di un progetto tecnologico non inizia con il kickoff, ma molto prima: già nella fase di offerta al cliente. Lo scenario ideale, che nella mia esperienza in Synesthesia si verifica nella maggior parte dei casi, è quello in cui il Project Manager è coinvolto in pre-sales. Questo permette di avere fin da subito una visione chiara degli obiettivi, dei vincoli, delle aspettative del cliente e della complessità reale dell’iniziativa.
Da lì, la scelta del metodo è guidata dal contesto. L’approccio waterfall è particolarmente efficace quando i requisiti sono ben definiti e stabili. In questi casi offre al cliente una cornice rassicurante: tempi, costi e perimetro sono chiari fin dall’inizio, e questo riduce l’incertezza.
L’approccio agile, invece, diventa fondamentale quando il progetto ha un alto grado di evoluzione o quando il cliente ha bisogno di confrontarsi frequentemente con il team durante lo sviluppo. È ideale quando il perimetro non è completamente definito all’inizio o quando il valore emerge in modo progressivo, grazie a rilasci incrementali e feedback continui.
Nel lavoro quotidiano, waterfall e agile convivono spesso anche all’interno dello stesso progetto: una cornice più strutturata a livello di pianificazione generale e una gestione agile delle attività operative. Questo non è solo un mio modo di lavorare, ma riflette l’approccio di Synesthesia alla gestione dei progetti tecnologici: non un’adesione rigida a un singolo framework, ma la capacità di prendere il meglio da ciascuno e integrarli in modo coerente.
L’obiettivo è costruire un modello di lavoro che si adatti al contesto reale — al cliente, alla complessità, al grado di incertezza — e non il contrario. È proprio questa flessibilità metodologica, condivisa a livello di team e di azienda, uno dei fattori che incide maggiormente sulla riuscita dei progetti, perché permette di unire solidità, controllo e capacità di evolvere lungo il percorso.
Nella gestione dei progetti, quanto conta per un Project Manager la scelta degli strumenti? Come utilizzi piattaforme come Azure DevOps per il tracking delle attività, la gestione dei backlog e il coordinamento con i team di sviluppo, e che impatto hanno su qualità, tempi e governance del progetto?
Gli strumenti sono un elemento chiave per mantenere ordine e controllo, soprattutto in progetti dove i team sono numerosi e, in alcuni casi, includono anche figure del cliente. Senza una piattaforma condivisa e ben strutturata, il rischio di perdita di informazioni o disallineamenti cresce rapidamente.
Nell’ambito del project management utilizziamo strumenti come Azure DevOps all’interno di un approccio fortemente strutturato alla gestione del lavoro. Ogni progetto viene organizzato attraverso board e backlog che rendono le attività tracciabili, visibili e chiaramente assegnate.
Il punto non è tanto la piattaforma, quanto il metodo: avere un sistema condiviso dove priorità, carichi di lavoro e stato di avanzamento sono sempre aggiornati permette al team di lavorare in modo molto più efficiente. Ad esempio, quando emerge una nuova richiesta o una variazione di priorità, possiamo valutarne subito l’impatto sul backlog, capire quali attività verranno spostate e dare al cliente una risposta rapida e basata su dati concreti.
Questo livello di organizzazione riduce i colli di bottiglia, limita le ambiguità e consente al PM di mantenere una visione costante sull’andamento reale del progetto, migliorando allo stesso tempo tempi di delivery, qualità del lavoro e capacità di governo complessiva.
Negli ultimi anni l’intelligenza artificiale ha cambiato profondamente il modo di lavorare. In che modo ha influito sul tuo ruolo di Project Manager e come la utilizzi concretamente nella gestione dei progetti? Come pensi che evolverà il suo impatto nei prossimi anni?
L’intelligenza artificiale è diventata un supporto concreto nella quotidianità del mio lavoro. Mi aiuta a velocizzare attività che prima richiedevano molto tempo, come l’analisi di documentazione, la redazione di documenti progettuali o la rielaborazione di informazioni raccolte in meeting e scambi con il cliente. È particolarmente utile anche nella gestione della conoscenza: consente di organizzare e mantenere aggiornate le informazioni di progetto, facilitando il recupero di decisioni, requisiti o discussioni avvenute in momenti diversi del ciclo di vita.
Guardando al futuro, mi aspetto un’evoluzione ancora più interessante: strumenti di AI sempre più accessibili permetteranno anche a figure meno tecniche, come un PM, di realizzare in autonomia piccole porzioni di progetto, prototipi o proof of concept, sia lato design che sviluppo. Questo non sostituirà le competenze specialistiche, ma alleggerirà il carico del team su attività a basso valore, lasciando più spazio alla parte strategica e alle sfide più complesse.
Nei progetti complessi, la tecnologia conta, ma sono soprattutto le persone a fare la differenza. In un contesto così dinamico come Synesthesia, dove lavorano insieme developer, designer, stakeholder e clienti, come si costruisce un coordinamento efficace? Quali pratiche, attenzioni quotidiane aiutano a mantenere allineamento, collaborazione e responsabilità condivisa?
Durante il ciclo di vita di un progetto la tecnologia è fondamentale, ma sono le relazioni a determinare davvero il successo. Durante il ciclo di vita di un progetto si presentano inevitabilmente momenti critici: scadenze strette, cambi di priorità, imprevisti. In questi frangenti, la qualità delle relazioni costruite fa la differenza.
Per questo ritengo essenziale creare e mantenere un clima positivo con tutte le persone coinvolte: team interni, stakeholder e cliente. Quando c’è fiducia reciproca, diventa più semplice affrontare le difficoltà e trovare compromessi, anche su temi delicati.
Dal punto di vista operativo, è fondamentale definire un flusso di lavoro chiaro e assicurarsi che venga rispettato. Le “cerimonie” Agile Scrum ad esempio (come planning, review e retrospective) sono strumenti molto efficaci per mantenere allineamento e trasparenza. Allo stesso tempo, bisogna evitare rigidità eccessive: ogni progetto e ogni persona hanno esigenze diverse e un po’ di flessibilità è necessaria per non bloccare il lavoro. Troppa flessibilità, però, genera caos: il ruolo del PM è proprio trovare questo equilibrio.
Infine, anche se spesso il PM ha l’ultima parola, le responsabilità devono essere condivise. Un momento chiave in questo senso sono le review o le demo al cliente: quando ogni membro del team presenta il risultato del proprio lavoro, aumenta il senso di ownership, la consapevolezza del valore prodotto e la responsabilità verso il progetto e verso il gruppo.
Chiudiamo con un aneddoto: c’è un progetto o una situazione particolare che ti ha fatto dire “ok, questo è il motivo per cui amo fare questo lavoro”?
Mi viene subito in mente il lavoro legato allo sviluppo e alla manutenzione dell’app per i clienti di Reale Mutua.
È stato, per me, un esempio molto concreto di come proprio la metodologia agile, quando applicata nel modo corretto e con la giusta mentalità, possa diventare molto più di un framework operativo: diventa un vero motore di dinamiche positive, sia sul piano organizzativo sia su quello umano.
All’inizio c’era una situazione tipica di molti progetti complessi: un rapporto fornitore-cliente ben definito, con ruoli distinti e quella naturale distanza che spesso porta a incomprensioni, attriti o logiche “noi e loro”. Un contesto che, se non gestito bene, rischia di rallentare il lavoro e irrigidire le relazioni.
La svolta è arrivata proprio grazie all’impostazione Agile Scrum del team. Lavorare all’interno dello stesso framework, condividendo cerimonie, obiettivi e strumenti, ha progressivamente cambiato la percezione dei ruoli. Product Owner e Analisti lato cliente, developer e designer provenienti da fornitori diversi: tutti sono diventati parte di un unico team, con lo stesso livello di responsabilità rispetto al risultato finale.
Questo ha avuto un impatto enorme. Le sfide, che in un progetto di questo tipo non mancano mai, hanno iniziato a essere affrontate in modo completamente diverso: non più come problemi “di qualcuno”, ma come questioni del team. Le discussioni si sono spostate dal “chi deve farlo” al “come lo risolviamo insieme”. Ruoli, etichette e provenienza aziendale sono passati in secondo piano rispetto all’obiettivo comune.
In altri contesti, una frammentazione di questo tipo (più aziende, più figure, interessi diversi) avrebbe probabilmente generato rallentamenti o tensioni. In questo caso, invece, la collaborazione è diventata un acceleratore. Ed è proprio questo che mi ha fatto dire: ecco perché faccio questo lavoro. Vedere persone con background diversi allinearsi, fidarsi e costruire insieme valore concreto per l’utente finale è una delle soddisfazioni più grandi che un PM possa avere.