Cosa c’è dietro lo sviluppo di un’app

Qual è l’ELEMENTO a cui dare più importanza quando si sviluppa un’app?

Se stai pensando al codice, ai linguaggi di programmazione o alle tecnologie da conoscere, ti capisco…
anch’io sino a qualche anno fa facevo lo stesso ERRORE!

Poi ho provato sulla mia pelle che non è cosi, ho iniziato a studiare e mi son documentato e posso dirti con assoluta certezza che il codice di un’app è la cosa che meno conta per il suo successo.

Questo mese ti spiego: Cosa c’è dietro lo sviluppo di un’applicazione!
Assieme vedremo sia la risposta più tecnica che quella più lontana dalla programmazione ma che comunque influisce al 99% sul risultato.

Questo mese parleremo di:

  • User Interface e User eXperience
  • Server e Linguaggi lato server
  • Database SQL e NoSQL

Clicca sull'immagine per aprirla in alta risoluzione!


Trascizione video

Lo spiegone del mese di Giugno ha raggiunto più di 28.000 persone raccogliendo più di 161 reaction e tantissimi commenti da leggere. Fantastico! Vediamo se con questo nuovo spiegone del mese di Luglio riusciamo a fare di meglio. Dopo lo spiegone del mese scorso ho ricevuto un sacco di messaggi, di email, di commenti e ho conosciuto un sacco di persone fantastiche, e volevo dire semplicemente grazie!

Oggi proveremo a rispondere a un’altra domanda, la Developer Society, la scelta e l’argomento più votato del sondaggio è stato: cosa c’è dietro a un’applicazione? Quindi benvenuto o benvenuta al nuovo spiegone del mese di Luglio! Cosa c’è dietro a un’app?

Ciao, io son Alberto Olla del sito imparareaprogrammare.it e so già che cosa ti stai chiedendo: sì, qui in Sardegna fa caldo. Ok, iniziamo con lo spiegone.

Cosa c’è dietro a un’app?

Elementi che compongono un'applicazione mobile: Codice, UI e UX
Elementi che compongono un’applicazione mobile: Codice, UI e UX

Per essere più specifici, cosa c’è dietro lo sviluppo di un’applicazione? Quindi, iniziamo, parliamo di codice, di user interface e di user experience. Ok, partiamo!

La user interface

La user interface è quello che noi vediamo quando usiamo un’applicazione, quindi la barra di navigazione, il menù, i bottoni o anche le animazioni, quello che noi vediamo fa parte della user interface; è l’unica parte dello sviluppo dell’app che l’utente finale può vedere, non solo può vedere ma deve anche interagire con la user interface.

Il codice

Il codice può essere nativo, può essere ibrido. Non è così importante la tecnologia che andiamo ad usare per svilupparlo, l’importante è che noi tramite il codice possiamo trasformare un’idea astratta, quindi l’idea della nostra applicazione, in qualcosa che funzioni, quindi in qualcosa di concreto che poi il dispositivo possa eseguire. Il codice è l’unica parte che il nostro utente finale non vedrà mai, quindi non sa se abbiamo scritto il codice migliore del mondo o il codice più scadente che c’è.

La user experience

User experience, cioè esperienza utente: cosa vogliamo che provi il nostro utente quando usa la nostra app? In che circostanze la utilizza? Che problemi li va a risolvere? Chi è il nostro utente? Abbiamo cercato di fare uno studio per capire quali sono le sue esigenze? Chi è? Che persona è? Quindi che tipo di istruzione ha? Che cosa sta cercando?

Cosa preferirebbe vedere in un’applicazione; qui dentro, nella user experience, dobbiamo andare a rispondere a tutte queste domande in maniera molto dettagliata, ed è qui dentro che c’è la chiave del successo di un’applicazione perché la scrittura del codice non è altro che una piccolissima parte di tutta quella che è la fase di sviluppo; nella user experience noi che cosa facciamo?

Mettiamo al primo posto l’utente finale, quindi è l’unica fase nello sviluppo di un’app in cui noi diamo la precedenza ai bisogni dell’utente; quindi, noi dopo che facciamo questo studio tramite delle ricerche, tramite delle interviste, tramite dei test di usabilità e così via, allora sì che possiamo andare a modellare la nostra UI, quindi l’interfaccia utente, in base alle esigenze specifiche dei nostri utenti.

Ovviamente, la User Interface viene poi implementata tramite il codice, quindi sarà sempre il programmatore che dovrà andare a scrivere i codici dell’interfaccia utente, però, in ogni caso noi avremo fatto uno studio per capire come e perché deve essere strutturato in un certo modo.

Ora la maggior parte delle persone, informatici e programmatori inclusi, credono e sono fortemente convinti che per poter sviluppare un’applicazione basti soltanto una cosa: saper scrivere il codice, e io stesso sino a qualche anno fa avevo questa forte convinzione e poi, ovviamente, è stata demolita dalle prove e dai miei test; se noi ci concentriamo soltanto sulla scrittura del codice, quindi su tutto quello che è l’aspetto più tecnico che c’è dietro lo sviluppo di un’applicazione, possiamo andare a creare un’applicazione che effettivamente è funzionante, ma non abbiamo dato nessun tipo di importanza, nelle fasi di sviluppo, all’utente finale.

Voglio farti un esempio molto concreto per capire l’importanza della user experience: prova a pensare all’ Apple Store, vengono pubblicate circa 1000 app ogni singolo giorno, cosa vuol dire questo? Che son state pubblicate 1000 app ieri, che verranno pubblicate 1000 app oggi e che domani saranno pubblicate 1000 nuove app, il trend è sempre in salita.

Noi non possiamo concentrarci sulla nostra applicazione soltanto su un punto di vista tecnico, quindi soltanto sulla scrittura del codice, perché un’ app scritta in questo modo dovrà andare a competere, se la pubblichiamo oggi, con altre 999 applicazioni, ma l’utente finale non potrà percepirne la qualità perché il codice, in ogni caso, non lo vedrà mai, quindi valuterà tutt’altro, l’utente finale valuterà la user experience, quindi è qui dentro, è in questi studi, è in queste ricerche che noi possiamo creare qualcosa di valore per l’utente.

Panoramica

Adesso che abbiamo visto quanto è bella e quanto è importante l’UX nello sviluppo di un’applicazione, parliamo di qualcosa di un pochino più tecnico e più frizzante: iniziamo a parlare di dati.

Che cosa sono i dati?

Quando parliamo di sviluppo di un’app, i dati non sono altro che le informazioni che l’utente inserisce all’interno della nostra applicazione, quindi facciamo degli esempi pratici: immaginiamo di voler aggiungere un nuovo numero nella nostra rubrica di contatti, quindi inseriamo il nome, il numero, magari l’email, quelli sono dei dati, quindi dobbiamo salvarli in qualche modo, oppure supponiamo di inviare una foto ad un amico, di inviargli un audio, quelli sono dei dati e vanno salvati; possiamo salvare i nostri dati in 2 modi diversi:

  • Il primo, in locale, quindi il dato viene salvato nel singolo dispositivo che utilizza l’applicazione;
  • Il secondo modo, esterno, quindi il dato viene salvato da qualche altra parte.

Esempio salvataggio locale

Facciamo un esempio di salvataggio locale, quindi l’app della sveglia: apriamo l’app, impostiamo le varie sveglie, chiudiamo l’applicazione, quei dati continuano a rimanere dentro l’app, quindi in qualche modo sono stati salvati; se noi spegniamo e accendiamo un cellulare, in ogni caso, quei dati continueranno a restare sul dispositivo.

Se noi, però, installiamo la stessa sveglia, quindi la stessa applicazione su un altro cellulare, non avremo gli stessi dati, questo vuol dire che sono stati salvati in maniera locale sul nostro singolo dispositivo; questo metodo noi lo possiamo usare sia nello sviluppo nativo sia nello sviluppo ibrido utilizzando tecnologie diverse.

Esempio salvataggio esterno

Adesso, invece, andiamo a parlare di quello che è il modo esterno, cioè quando noi vogliamo salvare i nostri dati da qualche altra parte, non sul nostro cellulare ma altrove, e questo è il metodo, diciamo, più interessante; facciamo un esempio pratico così lo capiamo subito: l’app di Facebook, vogliamo effettuare il login, inseriamo la nostra email e inseriamo la password, che cosa accade?

Ti voglio fare una domanda: secondo te, quei dati per essere controllati, cioè per sapere se hai inserito un’email e una password corretta e farti effettuare l’accesso su Facebook, sono nel tuo singolo dispositivo o sono da qualche altra parte? Secondo me, non possono stare sul tuo singolo dispositivo e, infatti, sono da qualche altra parte che vedremo tra poco.

Quello che voglio farti vedere adesso è tutto il percorso che fanno i dati quando noi li inviamo dal nostro dispositivo, quindi dal nostro cellulare, per farli arrivare al server e poi al database per poi tornare alla nostra applicazione, quindi, ti faccio vedere il percorso e poi piano piano torniamo su ogni punto: abbiamo detto login di Facebook, inseriamo email e password, clicchiamo su accedi o continua e che cosa accade?

Anche se noi non lo vediamo, la nostra applicazione va a inviare una chiamata, una richiesta al server; questa richiesta è nascosta, è invisibile all’utente, quindi viene effettuata da un punto di vista del codice; l’applicazione chiama il server e chiamerà probabilmente una pagina come questa, quindi http://www.facebook/login, gli invia i nostri dati e qui dentro il server si attiva, elabora i nostri dati e deve verificare se effettivamente l’email e la password sono corretti, quindi se esiste un utente registrato su Facebook che ha questi dati d’accesso, però, il server non ha i dati, quindi che cosa fa?

Contatta il database e gli fa una domanda, lo interroga e gli dice: “database, esiste un utente che ha questi dati ed è registrato nella nostra lista?”, e il database controlla e successivamente manda i dati al server; il server che cosa fa? Elabora la risposta, quindi elabora i dati che gli ha dato il database, e successivamente invia la risposta al client, ovviamente la risposta viene gestita tramite il codice, quindi a noi ci apparirà semplicemente qualcosa come “uhm, mi sa che hai sbagliato i dati” oppure “ ok, vieni a divertirti su Facebook!”, questo è quello che noi vediamo nell’applicazione, però in realtà c’è stato tutto questo percorso. E adesso iniziamo a parlare di server!

Che cos’è un server?

Cos'è un server, web server e linguaggi backend
Cos’è un server, web server e linguaggi backend

Immaginatelo come un computer, come quello che hai a casa, quindi che sia un portatile o un desktop. Adesso prendi lo schermo e buttalo via! Togli la tastiera e togli il mouse, quello che resta è un server, quindi un computer connesso a Internet 24 ore su 24, e viene chiamato web server perché è accessibile tramite http, www e così via.

Qui dentro, dentro questo computer ci sono dei file che sono scritti in un linguaggio lato server; i linguaggi lato server sono tanti, ovviamente possiamo usare quello che preferiamo, ognuno ha delle caratteristiche diverse, ci sarà quello che è più facile da imparare, quello che è un pochino più difficile ma è più sicuro, ci sarà quello che, invece, è altamente performante, quindi ha un’esecuzione molto veloce e così via.

Non è tanto importante il linguaggio che noi andiamo ad utilizzare, è importante che questo linguaggio vada a chiedere delle informazioni al database.

Che cos’è un database?

Cos'è un database e come funziona: query ed sql
Cos’è un database e come funziona: query ed sql

Immaginati il database come un magazzino per i nostri dati, quindi possiamo inserire tutti i dati che vogliamo; un utente si registra? Ci buttiamo dentro i dati! Un utente scrive un post? Di nuovo dentro i dati! Scrivono i commenti? Buttiamo tutto dentro il nostro database!

Il database è molto utile perché è facile effettuare le 4 operazioni di base, quindi possiamo effettuare gli inserimenti; possiamo inserire dei nuovi dati in maniera molto, molto semplice; possiamo effettuare delle letture, quindi delle ricerche; nei dati che abbiamo precedentemente inserito possiamo effettuare delle modifiche e delle eliminazioni.

Ora voglio farti vedere un esempio reale di interrogazione, quindi di una query, che noi possiamo fare al database, prendiamo sempre l’esempio di Facebook: quindi, abbiamo inserito l’email e la password, l’abbiamo passata al server, il server la passa al database per controllare se esiste o meno l’utente e gli dirà qualcosa di molto semplice come: “ ehi ,database, controlla se nella nostra lista di utenti esiste un utente con questi dati”, questa è la traduzione di quello che io ti ho appena detto; quindi, che cosa gli diciamo?

Gli diciamo: ”seleziona l’email”, da dove? “Dalla nostra lista di utenti”, quindi da tutta la lista degli utenti registrati, “where? Quando?”, quindi inseriamo una condizione in questa ricerca e gli diciamo “quando l’email degli utenti registrati è uguale a l’email che ci è stata passata, EEE, AND, la password è uguale a quella che ci è stata passata”; quindi, noi qua gli stiamo dicendo praticamente: “prendi la lista dei nostri utenti, scorrila tutta, appena trovi qualcuno che ha come email quella che ci è stata data e come password quella che ci è stata data, visualizzami il suo indirizzo email”, quindi noi con questa query, con questo SQL, otterremo un dato che sarà uguale o a 0 nel caso l’utente non esista oppure a un’ email, quindi, nel caso l’utente esista.

I database che utilizzano il linguaggio SQL, ovvero questi qui, sono tra i più diffusi al mondo e i più utilizzati, questo perché possono essere applicati a tanti tipi di app diverse, quindi si possono adattare a varie situazioni.

Questi database, però, hanno una pecca, ovvero non riescono a gestire le grandi mole di dati o comunque i dati che sono in continua evoluzione e in continua crescita, magari una crescita anche molto rapida, facciamo un esempio pratico: immaginiamo di creare il nuovo social network, quindi creiamo un’app e quest’app si diffonde rapidamente in tutto il mondo, quindi arrivano nuovi utenti, creano nuovi post, ci sono nuovi commenti, nuove interazioni e così via, tanti dati che arrivano ogni secondo; per gestire questi dati sono stati creati dei database diversi che rinunciano all’SQL e cercano di dare priorità a qualcos’altro come, per esempio, le performance, quindi la velocità di lettura, la velocità di scrittura dei dati e così via; questi database prendono il nome di Not only SQL, quindi NoSQL.

Qui io ti ho inserito una lista di quelli che sono i database più famosi e più diffusi del mondo NoSQL, però ognuno di questi è diverso dagli altri e va a utilizzare un approccio molto, molto particolare alla gestione dei dati.

Precisazioni su come scegliere i server

Ok, adesso parliamo un attimo di server. Volevo dirti che se vuoi prendere un database server e un web server in appoggio alla tua applicazione devi pagare; sì, i web server si pagano, hanno un affitto mensile, possono costare anche poco, puoi partire, magari, da 3 euro al mese, 2 euro al mese oppure puoi pagare annualmente, dipende dal piano che scegli.

Man mano sali o comunque aumenti le performance e le prestazioni dell’hardware in base a quello che è il carico della tua applicazione; anche i database si pagano, tendenzialmente, cioè il database non è altro che un programmino che viene installato su un server, quindi potresti installarlo sul tuo web server così da avere un solo server che ti fa sia da web server che da database server, oppure potresti separarli, quindi un web server e un database server, e in questo caso dovresti pagarli separatamente.

Quando è importante fare uno studio sull’UX?

Ovviamente, se ci stanno commissionando un lavoro, quindi se qualcuno ci sta pagando per scrivere del codice di un’applicazione, non ha senso che noi spendiamo tempo e energie su uno studio di UX, non ci compete, ci stanno pagando per fare un lavoro tecnico, quindi noi dobbiamo andare a scrivere il codice in quel caso; oppure se stiamo andando a creare noi una nostra app per testare un nuovo linguaggio o una nuova tecnologia, in quel caso non ci interessa fare uno studio sull’UI nè tantomeno sull’UX, però se noi abbiamo idea di creare una startup e, quindi, di ricevere dei finanziamenti oppure vogliamo creare una nostra applicazione e abbiamo un budget a disposizione da spendere in pubblicità e in marketing, prima di spendere anche soltanto un centesimo in pubblicità, noi dobbiamo fare uno studio sull’ UX, quindi prendere un po’ di budget e destinarlo a un professionista che ci faccia un piano dettagliato di UX.

Conclusioni

Ci sarebbe tantissimo di cui parlare sia per quanto riguarda i linguaggi lato server dato che è qui che c’è il cuore di applicazioni come Facebook, Google, e così via, Youtube, insomma, tutte si concentrano qua, il vero sviluppo è qui, ma anche per quanto riguarda il database NoSQL dato che negli ultimi anni, soprattutto, si sta sviluppando moltissimo questa parte e c’è una forte attenzione alla gestione di grandi moli di dati; quindi, sicuramente, i database NoSQL sono la prima scelta per quanto riguarda quella problematica.

Bene! Il video è finito qui. Quello che ti chiedo è di non lasciare un like, dico sinceramente, non mi interessa il tuo like, preferisco leggere un tuo commento, il tuo parere, che cosa ne pensi del video; quindi, lasciami un commento, dimmi se ti è piaciuto, se non ti è piaciuto, ma soprattutto il perché, così ci conosciamo e diventiamo amici. Se vuoi scegliere l’argomento per il prossimo spiegone del mese o se ti è venuta qualche idea di nuovo argomento da propormi, ti invito a venire nella Developer Society, il gruppo chiuso che ho creato, trovi il link in descrizione in cui troverai un sondaggio, in questo sondaggio puoi aggiungere le tue idee, gli argomenti oppure puoi votare gli argomenti proposti dagli altri sviluppatori; l’argomento più votato alla fine del mese lo prenderò e lo utilizzerò per fare lo spiegone del prossimo mese.

Bene, ci vediamo online!

Ciao!