Intervista a Samantha Giro, Team Lead Mobile Engineering @ Bitrock
Qualche mese fa abbiamo deciso di arricchire ulteriormente l’area User-Experience & Front-end Engineering di Bitrock creando un’unità verticale dedicata allo sviluppo di applicazioni mobile.
La decisione è maturata a seguito di diversi elementi: in primo luogo, abbiamo riscontrato un’elevata domanda da parte di organizzazioni alla ricerca di professionisti specializzati nello sviluppo di applicazioni mobile che potessero supportarle nel loro percorso di evoluzione digitale.
In secondo luogo, avevamo già avuto modo di realizzare progetti di successo legati allo sviluppo di app per dispositivi mobile per alcuni dei nostri clienti, principalmente nei settori fintech e bancario.
Inoltre, poiché siamo un team di giovani imprenditori e tecnici alla continua ricerca di nuove opportunità e sfide, abbiamo voluto esplorare quest’area all’interno dell’ingegneria Front-end, che abbiamo trovato estremamente interessante e che si inseriva perfettamente nell’approccio di consulenza tecnologica a 360° offerto da Bitrock.
Creare un’unità specificamente dedicata alla programmazione mobile è stato quindi un passo naturale verso il miglioramento continuo e la crescita.
Siamo ora pronti ad approfondire il mondo dello sviluppo di applicazioni mobili ponendo alcune domande a Samantha Giro, Team Lead Mobile Engineering di Bitrock.
Che cos’è lo sviluppo di applicazioni mobile? E quali sono i principali vantaggi di investire in un’applicazione?
Lo sviluppo di applicazioni mobile è fondamentalmente l’insieme dei processi e delle procedure relative alla scrittura di software per piccoli dispositivi informatici wireless, come smartphone, tablet e altri dispositivi portatili.
Le applicazioni mobile offrono un’ampia gamma di opportunità. Innanzitutto, vengono installate su dispositivi mobile – smartphone, iPhone, tablet, iPad – che gli utenti possono facilmente portare con sé, ovunque vadano.
È quindi possibile utilizzarle in ambienti di lavoro, come le industrie manifatturiere (basti pensare a quando gli operai controllano le operazioni di carico e scarico da un unico dispositivo), per gestire i flussi di vendita o gli eventi. Molte soluzioni funzionano anche offline, consentendo alle persone di utilizzarle continuamente e senza interruzioni.
Inoltre, le app mobile danno agli utenti la possibilità di interagire con il prodotto in modo immediato ed efficace. Attraverso una campagna di push-notification, ad esempio, è possibile attivare meccanismi di affiliazione tipici del marketing. Questi consentono alle aziende di realizzare campagne pubblicitarie e di fidelizzare i clienti attraverso un utilizzo continuo, ad esempio invitando gli utenti a scoprire nuove funzionalità del prodotto o altre soluzioni correlate.
Le tecnologie mobile possono anche essere associate ad altre soluzioni hardware esterne tramite connessione bluetooth o Wifi, ampliando così la gamma di possibilità di utilizzo.
I sensori e l’hardware del dispositivo, come la fotocamera integrata, aumentano il numero e il tipo di funzionalità che un prodotto può svolgere. Questo porta grandi vantaggi e comodità alla nostra vita quotidiana: ad esempio, se avete bisogno della copia digitale di un documento firmato, con la fotocamera del vostro dispositivo mobile potete facilmente scansionarlo e avere il documento online in tempo reale, pronto per essere condiviso con altri utenti.
Infine, l’interazione e l’integrazione con i sistemi di intelligenza artificiale, la realtà aumentata e gli assistenti vocali garantiscono un accesso più semplice e un’esperienza d’uso aggiornata.
Gli utenti possono ad esempio “governare” la propria casa da remoto: come tutti sappiamo, oggi possiamo facilmente accendere le luci della nostra casa o attivare il sistema di allarme semplicemente accedendo a un’applicazione sul nostro dispositivo mobile.
Quali tipi di applicazioni mobili esistono?
Esistono diversi modi per sviluppare un prodotto dedicato al mobile: applicazioni native, ibride e web.
Lo sviluppo di applicazioni mobile native implica l’impegno di risorse dedicate a dispositivi che utilizzano Android come sistema operativo e altre risorse che utilizzano sistemi Apple. Non ci sono limiti alla personalizzazione del prodotto, se non quelli definiti dai sistemi operativi stessi (Android e iOS).
Le app native devono essere approvate dagli store prima di essere pubblicate e richiedono una base di conoscenze diversa, poiché ogni piattaforma ha un sistema operativo, un ambiente di sviluppo integrato (IDE) e un linguaggio specifici che devono essere presi in considerazione.
Inoltre, comportano costi più elevati in termini di aggiornamento e manutenzione rispetto alle app ibride, poiché di solito richiedono almeno due diversi sviluppatori dedicati al prodotto.
Le app native possono sfruttare appieno l’hardware con cui interagiscono e sono solitamente più performanti e veloci rispetto alle rispettive versioni ibride. Anche la dimensione finale beneficia del fatto che non hanno alcun framework che le converte. La compatibilità è sempre garantita nel tempo, al netto degli aggiornamenti che devono essere eseguiti seguendo le linee guida della casa madre.
Grazie a specifici framework, lo sviluppo di app mobili ibride permette di creare applicazioni per entrambi i sistemi operativi con un unico codice condiviso, riducendo così i costi di manutenzione. Lo sviluppo è soggetto alle limitazioni del framework e ai suoi aggiornamenti, che devono essere frequenti e seguire quelli nativi. Per le funzionalità complesse è comunque necessaria una personalizzazione della parte nativa. Infine, devono essere sottoposti all’approvazione degli store prima di essere pubblicati.
I framework di sviluppo più popolari sono React Native e Flutter. Basato su Javascript, React Native è ampiamente utilizzato e conosciuto da molti sviluppatori web. È altamente compatibile con lo sviluppo di applicazioni ibride ed è molto veloce e performante. La sua natura di interfaccia per lo sviluppo nativo
rende le applicazioni meno performanti rispetto a quelle puramente native; ciononostante, è un buon prodotto perché facilita la condivisione del codice anche per le applicazioni web. La comunità è ampia e l’elevato numero di librerie open-source consente di integrare qualsiasi funzionalità. Ha due diverse modalità di sviluppo che permettono di creare applicazioni interamente in Javascript o con la possibilità di personalizzazione su nativo.
Flutter è un prodotto più recente rispetto a React Native ed è basato sul linguaggio Dart sviluppato dal team di Google. La facilità del linguaggio e dello strumento sta convincendo sempre più sviluppatori a utilizzarlo. A differenza di React Native, i componenti di Flutter non dipendono da quelli nativi: per questo motivo, quando i sistemi operativi vengono aggiornati, il prodotto continua a funzionare bene. I plugin per funzionalità specifiche, come la localizzazione e le mappe, sono creati e gestiti dal team di Google, che garantisce veridicità, compatibilità e aggiornamento costante. Dart è comunque un linguaggio ancora poco conosciuto rispetto a Javascript, che richiede una conoscenza molto specifica del settore.
Infine, ma non meno importante, ci sono le applicazioni web, che sono simili alle applicazioni mobile, ma sono sviluppate utilizzando le tecnologie web. Non vengono installate attraverso gli store, ma come un sito web: l’utente può aggiungere un breve link nella schermata del cellulare e lanciare l’applicazione web. In questo caso, l’usabilità offline è limitata e non è garantita. Inoltre, non è possibile sfruttare appieno le risorse hardware.
Come si crea un’applicazione mobile? E quali sono i linguaggi di programmazione più utilizzati?
Lo sviluppo di un’app mobile inizia generalmente con lo studio delle sue funzionalità chiave e con l’analisi delle esigenze del cliente, oltre che con la creazione di un design dedicato. Un’altra fase preliminare consiste nel lavorare sull’esperienza utente: per questo è fondamentale una stretta collaborazione con un esperto di UI/UX.
Una volta definito tutto questo, il team decide quali sono le tecnologie e le soluzioni migliori per sviluppare quella specifica applicazione. Quindi, gli sviluppatori scrivono il codice, ricreano il design e le funzionalità ed eseguono alcuni test per verificare che tutto funzioni correttamente.
Una volta che l’intero pacchetto è stato creato attraverso il sistema e approvato dal cliente, viene pubblicato sui vari store (Google o Apple) – naturalmente, solo se è il caso.
Diamo ora una rapida occhiata ai principali linguaggi di programmazione.
Se parliamo di sviluppo ibrido, gli strumenti principali sono Ionic (JavaScript), Flutter (Dart) e React Native (JavaScript). Per quanto riguarda le app native, il linguaggio di sviluppo iOS più diffuso è Swift o, in alternativa, il precedente linguaggio Objective-C. Mentre il linguaggio di sviluppo Android più diffuso è Kotlin, alcuni utilizzano ancora Java. Naturalmente, gli sviluppatori devono affidarsi a un IDE. Sebbene esistano molte altre alternative, quelle sopra citate possono essere considerate le più utilizzate.
Quali sono le principali differenze di mercato rispetto allo sviluppo di siti web?
Vorrei iniziare dicendo che i siti web non moriranno mai, per il semplice motivo che quando si ha bisogno di informazioni rapidamente e per una circostanza molto specifica, il sito web del prodotto o del servizio è sempre disponibile. Tuttavia, i siti web non possono sfruttare tutti gli strumenti e l’hardware disponibili per un’applicazione mobile.
Le applicazioni mobile consentono di memorizzare una certa quantità di dati, cosa che un sito web non può sempre fornire (a meno che non si disponga di un proprio account e si lavori sempre online).
Possono accedere rapidamente alle informazioni provenienti da hardware come l’accelerometro, il giroscopio e altri. E altri strumenti consentono di adottare strategie di fidelizzazione dei clienti (anche se oggi esistono notifiche push anche per i siti web). Con un’applicazione mobile è quindi possibile fidelizzare i clienti con caratteristiche e funzionalità specifiche.
Inoltre, le applicazioni mobile sono progettate specificamente per garantire la facilità d’uso, mentre i siti web offrono tradizionalmente un altro tipo di usabilità.
Nella maggior parte dei casi, web e mobile possono funzionare perfettamente insieme (si veda, ad esempio, quanto accade con Amazon: gli utenti possono acquistare un articolo tramite il sito web o utilizzando l’applicazione mobile); altre volte, un’applicazione mobile può “superare” la sua controparte web, soprattutto quando gli utenti devono gestire cose o dati specifici, o utilizzare tecnologie particolari. Ad esempio, difficilmente l’autenticazione biometrica avviene tramite un sito web.
In Bitrock mettiamo sempre al primo posto le esigenze dei clienti: la creazione della nuovissima unità di Mobile Application Development all’interno del nostro team User Experience & Front-end Engineering ha l’obiettivo di ampliare la nostra offerta tecnologica nel settore. In questo modo, possiamo fornire un’ ampia gamma di soluzioni tecnologiche mobili all’avanguardia, versatili e scalabili a una varietà di mercati e aziende.
Collaboriamo sempre a stretto contatto con i nostri clienti per pianificare, creare e implementare soluzioni su misura per i loro requisiti specifici e in linea con le loro esigenze contingenti.
Se vuoi saperne di più sulla nostra proposta, visita la nostra pagina dedicata sul sito web di Bitrock o contattaci inviando un’e-mail!
Grazie a Samantha Giro > Team Lead Mobile Engineering @ Bitrock