Un framework con linguaggio dedicato per realizzare applicazioni cross-platform: intervista a uno sviluppatore Flutter
Apogeonline: 1. Non è la tua prima esperienza con i framework per lo sviluppo web e mobile; in passato hai usato Angular (e ci hai anche scritto sopra un libro). Che cosa è cambiato da allora? Usi anche altri framework o hai adottato Flutter? Che pensi di questo cambiamento?
Vincenzo Giacchina: A mio parere l’uso dei framework ha caratterizzato negli ultimi anni il mondo dello sviluppo proprio per la complessità dei software che è aumentata e probabilmente continuerà ad aumentare nel tempo. I framework offrono la possibilità di semplificare innumerevoli integrazioni e processi, di fatto sono complementari a linguaggio di sviluppo e direi che se usassi il termine imprescindibili non commetterei un errore poi così grave.
Angular rimane tra le scelte migliori per lo sviluppo di applicativi web di grosse dimensioni, diversamente Flutter si focalizza sul mobile cross platform. Sono due framework nati in periodi diversi e con scopi inizialmente diversi. 6 o 7 anni fa fare girare un app mobile dentro una webview non era una cosa poi così strana per cui anche una soluzione Angular con Ionic per lo sviluppo di un app mobile era ragionevole. Oggi questa architettura non mi sento assolutamente di raccomandarla, e opterei in favore di Flutter o di altre alternative.
2. Tornando un momento indietro, avevi un’esigenza specifica da risolvere, per rivolgerti a Flutter, oppure hai abbracciato questo framework per passione, studio, curiosità…?
No, nessuna esigenza specifica mi ha spinto all’uso di Flutter e faccio difficoltà ad immaginarne realmente una. Ho semplicemente approcciato lo sviluppo di app con Cordova più di dieci anni fa, ci sono stati diversi passaggi tecnologici intermedi, tanta acqua sotto i ponti, ma nessuno di questi ha realmente rivoluzionato l’approccio al mobile cross platform come ha fatto Flutter.
Leggi anche: React visto dallo sviluppatore front-end
Ho iniziato a giocare con Flutter circa due anni e mezzo fa e mi ha subito colpito la sua architettura, e per quanto possa sembrare strano, il fatto che non fosse JavaScript based, mi ha incuriosito positivamente fin da subito. Passione studio e curiosità sono stati il motore principale, e sono anche alla base motivazionale che mi spinge ad essere autore, ma lo sviluppo è imprescindibile. Uno strumento lo si apprende a fondo usandolo, poiché solo usandolo ti troverei a fare troubleshooting, e a mio parere, rimane quest’ultima la vera fonte di conoscenza.
3. Flutter è nato all’interno di Google. Questa parentela si nota nell’utilizzo del framework? In qualche modo facilita o complica il lavoro su questa o quella piattaforma?
Credo che il valore aggiunto di casa Google sia legato all’effort che si cela dietro lo sviluppo del prodotto. La quantità e la qualità dei widget, l’ingegnerizzazione che sta alla base della codebase non è poca cosa. Google è certamente sinonimo di garanzia, supporto ed affidabilità, ma come abbiamo visto in altri campi, anche le piccole realtà possono rivoluzionare interi ambiti tecnologici, penso a ChatGPT. Come in tutti i campi, anche nel modo dell’IT esiste il marketing, e non di rado capita che viene scelto un prodotto o un servizio a discapito di un altro per il brand che ci sta dietro, ma non è il caso di Flutter.
4. C’è bisogno di qualche setup particolare per mettersi a lavorare con profitto in Flutter?
No, il setup è semplice, oltre che veloce. Credo che perderei più tempo ad articolare una risposta che il lettore ad installare Flutter, un IDE, Android Studio e/o Xcode.
5. Impiegare Flutter implica cimentarsi con un linguaggio di programmazione creato ad hoc, Dart. È una barriera di ingresso aggiuntiva o un vantaggio per lo sviluppatore? Come ti trovi a usare Dart?
Dal mio punto di vista, assolutamente un vantaggio. Per uno sviluppatore, approcciare un nuovo linguaggio è certamente interessante ma capisco che farlo in corsa con una scadenza progettuale non è uno scenario desiderato. Dart è un linguaggio recente ma il framework è strutturato in modo da rendere, come dire, meno ostico l’impatto di un nuovo linguaggio rispetto alla creazione di un applicativo senza l’uso del framework. Questo concetto è piuttosto banale tra gli addetti ai lavori. Approcciare il linguaggio contestualmente a Flutter è possibile e ha una curva di apprendimento tale che rende possibile creare un applicativo senza aver destinato ore di studio al linguaggio in sé.
Credo personalmente che questo concetto sia un po’ un limite che introduce l’uso di un framework per chi lo approccia contestualmente ad un nuovo linguaggio e ad oggi è sempre più uno scenario ricorrente. Il mio consiglio è dedicare del tempo al linguaggio, apprendere più in profondità punti di forza e debolezze; questo faciliterà lo sviluppo, oltre ad aumentarne la qualità del codice e del software in generale. In Sviluppare applicazioni con Flutter ho dedicato più di un capitolo al linguaggio, proprio per quanto appena detto.
6. Hai scritto il tuo libro mentre man mano acquisivi conoscenza degli aspetti di Flutter oppure come una conseguenza di averlo imparato e messo a frutto? Hai impiegato più tempo a imparare Flutter o a scrivere il libro?
Con l’editore abbiamo parlato di Flutter per la prima volta nel luglio del 2019. Negli anni siamo ritornati diverse volte sull’argomento, con benchmark, bozze di un indice, analisi dei trend e così via. Nel frattempo avevo già preparato bozze di alcuni capitoli e proseguivo nell’approfondire il framework. Vedi, scrivere un libro è tutt’altra cosa rispetto al suo utilizzo. La sicurezza necessaria per spiegare nel dettaglio un argomento nasce, in primis, dallo studio approfondito, e in secundis dall’uso prolungato nel tempo.
È vero, puoi trattare il tema con superficialità e cavartela discretamente, ma con Sviluppare applicazioni con Flutter, tento di spiegare l’uso di Flutter ai novizi e allo stesso tempo entrare nella profondità delle dinamiche interne al framework stesso. Scrivere un libro, se fatto come si deve, ti costringe ad approfondire temi che da utilizzatore potresti tranquillamente ignorare, l’opposto può rivelarsi controproducente. Per quanto riguarda le tempistiche, quando ho iniziato ufficialmente il lavoro di scrittura, ho impiegato circa 7 mesi per avere una bozza di tutti i capitoli.
7. Il tuo testo su Flutter rappresenta praticamente una corsia preferenziale per arrivare prima e meglio a diventare abbastanza esperti nell’uso del framework da usarlo come strumento di sviluppo. Quanto dura il viaggio, per una persona completamente digiuna di sviluppo? C’è forse qualcosa che converrebbe imparare prima e taglia nettamente i tempi?
Non credo esistano scorciatoie. Si utilizza e si studia contestualmente. A me piace approcciare un nuovo linguaggio o framework che sia, prima da un punto di vista, diciamo più teorico, ma niente vieta di fare l’opposto. Si può creare un’applicazione con Flutter in pochi giorni e impiegare diversi mesi per rendersi conto che la si poteva scrivere in modo differente, ma credo che questo valga un po’ per tutto il mondo IT.
8. Com’è la comunità degli sviluppatori Flutter? Ti è capitato di fornire o ricevere supporto?
Il supporto è piuttosto attivo e vale il concetto che più è utilizzato il prodotto più grande è la community. Flutter ad oggi ha una grande adoption, pertanto fornire e ricevere supporto è molto facile. I canali principali sono su Discord e il solito Stackoverflow.
9. Che aspettative posso farmi rispetto a Flutter, se sono uno sviluppatore che fino a oggi ha lavorato creando app senza un framework? Che vantaggi ho? Quanto tempo risparmio?
I tempi rispetto al nativo sono praticamente dimezzati, proprio perchè con una sola codebase riesci a gestire lo stesso applicativo per due OS differenti. Per non parlare poi di un applicativo cross platform che ha necessità di girare anche sul web piuttosto che sul desktop, cosa che Flutter rende possibile, ed a questo punto il risparmio di tempo è davvero notevole. Non trascuriamo neanche il tempo necessario alla fase di test, piuttosto che a quella di deploy e delivery. Insomma, se utilizzassimo solo il tempo risparmiato come discriminante non ci sarebbe storia. Il tempo risparmiato si porta dietro, ovviamente, anche un vantaggio economico ed una complessità generale più bassa, e direi che abbiamo già raccolto un 90 percento delle motivazioni che si celano dietro una scelta di questo tipo.
10. C’è una ragione specifica per la quale consiglieresti specialmente l’adozione di Flutter?
Il ragionamento più semplice è: che alternative ci sono? Le motivazioni per escludere il nativo, le abbiamo sommariamente introdotte poco fa, per il resto ad oggi non vedo alternative superiori a quanto offerto da Flutter.
Sviluppare applicazioni, che siano app, desktop o web, con Flutter si rivelerà piacevole, e, ve lo assicuro, meno stressante che con altre tecnologie. La ragione principale sta proprio nella sua architettura e l’uso del linguaggio Dart, che a mio parere, risulta più semplice da imparare ed utilizzare proprio per la maturità del contesto in cui è nato. Detto ciò, invito i lettori a contattarmi via mail o tramite social per un confronto sul tema, e per qualsiasi feedback sul libro. Grazie a tutti.
Immagine di apertura di Markus Spiske su Unsplash.