Quando si sviluppa un progetto per il web che sia fruibile anche (soprattutto) dai dispositivi mobili, è necessario muoversi con un algoritmo predeterminato.
Non necessariamente tale algoritmo è standard, ossia uguale per tutti i progetti, anzi, è quasi sempre vero il contrario… Tuttavia ci sono alcune “regole di base” che sembrano essere ormai consolidate come best practice per l’impostazione di un progetto web. Di queste buone pratiche intende parlare questo articolo.
Iniziamo con il dire che un progetto per il web, di media o grande complessità, è generalmente composto da tre macro componenti:
- front end (o front-end o frontend)
- back end (o back-end o backend)
- database
In alcuni casi il database viene compreso nel concetto di back end, ma è meglio sapere che si tratta di un componente a se stante.
In un progetto web, il front-end è la parte del progetto con la quale interagisce l’utente finale (colui che utilizza il software); il back-end è la parte di programmazione in cui si ricevono le richieste dell’utente, le si elabora (secondo quanto necessario a ottenere i risultati per i quali il software è stato scritto) e si preparano le risposte da mostrare all’utente; il database si occupa di memorizzare in modo stabile e rigoroso i dati e le informazioni necessari al corretto funzionamento del software.
Ogni componente necessita di competenze tecniche specifiche, a volte molto variegate.
FRONT-END
Nella realizzazione del front-end servono almeno due diverse competenze difficilmente integrabili (o si ha l’una o si ha l’altra): programmazione e grafica.
In un progetto web, infatti, per poter realizzare una buona componente di front-end è necessario avere competenze approfondite su almeno i seguenti argomenti:
- Html
- Css
- JavaScript
- XML, XSL, XSLT, XSD, json
- una valida competenza sulla psicologia della comunicazione (e quindi sapere quali colori usare e per quale motivo)
- conoscenza dei software che consentono di produrre le componenti necessarie alla realizzazione grafica del progetto.
Servono tutte e almeno queste.
In genere tali competenze vengono da almeno due figure professionali distinte: il programmatore e il grafico.
IL BACK-END
La parte di back-end è invece la parte in cui si espleta quella che si imparerà a conoscere come “logica applicativa”. La logica applicativa è rappresentata da tutti gli algoritmi necessari a esaudire la richiesta che l’utente (tramite il front-end) ha inviato al back-end. Facendo un esempio pratico: quando noi ci troviamo sulla nostra pagina di Facebook (front-end) e clicchiamo sul link delle nostre ultime attività, il front-end invia al back-end la richiesta di comunicargli quali sono le nostre ultime attività; il back-end “capisce” cosa gli sta chiedendo il front-end, esegue tutti gli algoritmi necessari per esaudire tale richiesta e invia il risultato al front-end che, a quel punto, ce lo mostra. Abbiamo quindi capito che Facebook è un’applicazione web.
Nel corso della propria carriera lavorativa, si noterà che alcune tipiche caratteristiche del back-end possono essere demandate al front-end (utilizzando, ad esempio, JavaScript). Ciò allo scopo di limitare le richieste al back-end che implicano la necessità di far attendere l’utente fino a quando il back-end non ha completato le azioni utili al corretto espletamento della richiesta (ciò che accade quando richiediamo a Facebook l’elenco delle nostre attività).
Per poter realizzare una buona componente di back-end le competenze necessarie sono esclusivamente di tipo “programmativo” (bisogna saper programmare!), ma devono essere molto approfondite. Imparare a progettare e realizzare un buon back-end può significare dover studiare e scrivere codice per molti anni. C’è un aspetto positivo: la maggioranza dei linguaggi di programmazione utilizzati lato back-end sono “ad oggetti” e questo garantisce che “ragionino” tutti nello stesso modo. Ecco perché una volta imparato un linguaggio di programmazione ad oggetti, diventa abbastanza semplice impararne un altro. Invece imparare le giuste tecniche di programmazione è molto, molto più complicato. Per potersi definire un programmatore back-end servono almeno le seguenti competenze:
- entrare in estrema confidenza con la programmazione ad oggetti (e UML)
- comprendere il funzionamento dei web service
- conoscere abbastanza bene java enterprise edition, php, pyton, .Net (e magari anche altri)
- avere una buona conoscenza dei design pattern
Anni. Ci vogliono anni di lavoro per apprendere quanto elencato. Senza pazienza, dedizione e forza di volontà… è molto, molto, molto meglio lasciar perdere. Altrimenti si rischia di perdere tempo prezioso e di fare danni colossali a chi cerca di usare i software da noi scritti.
E non è finita…
IL DATABASE
Come abbiamo visto, in un progetto web c’è un’ulteriore componente da progettare e realizzare: il database.
Il database è il luogo in cui tutti i dati necessari a memorizzare (e, quindi, ricostruire) le informazioni vengono salvati in modo permanente.
Ritornando al discorso fatto su Facebook, quando il front-end invia la richiesta al back-end, quest’ultimo deve interrogare il database per andare a recuperare l’elenco delle nostre ultime attività. È nel database che vengono memorizzate ed è da lì che, necessariamente, devono essere recuperate.
Per progettare e realizzare un buon database servono altre competenze, distinte sia della programmazione sia dalla grafica.
- conoscere la teoria delle “basi di dati”
- conoscere i database relazionali
- studiare ORM
- conoscere sql
- conoscere i DBMS: MySQL, PostgreSQL, OracleDB e magari qualche DB NoSQL
Bene, questo è un rapido excursus sul minimo indispensabile per pensare di realizzare un progetto web e per potersi definire un Full Stack Web Developer.
Si, ma… le best practise?
Ci arriviamo subito!
BEST PRACTISE
Abbiamo visto quali sono le competenze tecniche e creative necessarie per creare un progetto web. Adesso entriamo nella procedura operativa focalizzandoci sulla sequenza di operazioni da eseguire per provare a creare un prodotto di successo.
- spegnere il PC
- armarsi di carta e penna (meglio una matita)
- recarsi dal cliente e… imparare il suo mestiere e le problematiche che il software deve risolvere
- disegnare (con carta e penna!) delle bozze di interfaccia grafica che rispecchino le funzionalità richieste
- accendere il PC
- riportare l’interfaccia grafica abbozzata sui fogli, su mockup grafici prodotti da software specifici
- mostrare i mockup al cliente ipotizzandone l’uso e verificando con estrema attenzione che tutte le funzionalità a lui necessarie vengano “svolte” dall’interfaccia disegnata
- assicurarsi che il cliente approvi l’interfaccia grafica e l’elenco delle funzionalità da implementare
- iniziare la progettazione del software dalla base dati
- progettare la logica applicativa (back-end)
- produrre il front-end basandosi sui mockup grafici
- procedere con i vari test
Ora… è chiaro che una figura professionale che sappia fare bene tutte queste cose… deve avere molti anni di esperienza ed è quindi chiaro che avere a propria disposizione una figura professionale con tali competenze… costa un botto di soldi! 😀 Ed ecco perché… certe figure… o si mettono in proprio o, più spesso… espatriano 😉
Viva l’Italia!