Gestire al meglio le performance per guadagnare importanti vantaggi business
Qualche settimana fa alcuni sviluppatori del team di Antreem hanno partecipato al Css Day di Faenza, di cui ha già parlato anche Massimo Artizzu. È stata un’edizione molto ricca di aggiornamenti e riflessioni, da cui tutto il gruppo continua a prendere spunto anche per alcuni progetti in corso. Ecco alcune riflessioni
Performance
Per il tipo di lavoro che svolgiamo, siamo abituati ad avere, in ogni progetto, il Service Designer come mediatore di interessi. Il Service Designer raccoglie infatti esigenze che provengono da diversi canali: business, sviluppo, comunicazione, per citarne alcuni.
Comprendere il ruolo di questa figura e stabilire una collaborazione proficua, è un requisito chiave per la buona riuscita di un progetto.
Sappiamo che le aziende che utilizzano metodologie di Human Centered Design come strumento di integrazione, riescono a innovarsi con successo e in maniera efficiente, guadagnando vantaggi business importanti. Si calcola, infatti, che il vantaggio competitivo delle organizzazioni che adottano metodologie di design incentrate sull’utente, guadagnano mediamente un mercato che è almeno il doppio, rispetto a quello dei competitor che sono indietro da questo punto di vista.
Si riporta come riferimento l’articolo originale: “DESIGN-DRIVEN COMPANIES OUTPERFORM S&P BY 228% OVER TEN YEARS – THE ‘DMI DESIGN VALUE INDEX”
Il tema delle performance, ha un impatto business egualmente significativo, le statistiche ci dicono che un utente, si aspetta che il tempo necessario al caricamento della pagina, sia sotto i 3 secondi. Qualora questo requisito non venga soddisfatto, l’utente tende ad abbandonare la pagina (53% dei casi) e cercare un competitor al quale affidarsi.
Si riporta come riferimento lo studio fatto da Google nel 2016: “The need for mobile speed: How mobile latency impacts publisher revenue”
Sappiamo inoltre, che generalmente il margine più ampio di miglioramento, risiede proprio nel front-end.
Qualsiasi buon tecnico è consapevole di questi numeri, e nell’ambito delle sue responsabilità, cerca di fare il miglior lavoro possibile per avere performance ragionevoli.
Tuttavia, non è difficile immaginare degli scenari in cui si manifestino dei conflitti d’interesse riguardo questa tematica.
Consideriamo, ad esempio, il caso in cui sia necessario ridurre le dimensioni, e di conseguenza, in qualche misura, la qualità delle immagini ospitate all’interno di un’applicazione web. Il designer si troverà a dover difendere la ragioni per le quali un calo di qualità risulterebbe inaccettabile, il sistemista, evidenzierà magari i limiti tecnici dell’infrastruttura, lo sviluppatore probabilmente, dopo aver minificato e organizzato in maniera modulare tutte le risorse, non possiede altro spazio di manovra.
Avere quindi un interlocutore, che è responsabile delle performance, che può stabilire un budget riguardo il peso totale di tutti i contenuti da caricare su una determinata pagina, e che può mediare gli interessi di tutti, e fornire una soluzione accettabile, può risultare particolarmente importante per certi scenari.
Pattern
Implementare lo stile di un front-end web, è un lavoro particolarmente complesso. Il CSS si è evoluto in maniera eccezionale negli ultimi anni, facendosi carico di tante nuove responsabilità (densità di pixel eterogenee dei dispositivi, fattori di forma, animazioni, 3d, …) e aprendo strade ad approcci e linguaggi più o meno sperimentali.
Questo particolare livello di codice, se confrontato con i suoi parenti maggiori, che utilizziamo per esprimere logiche business ed applicative, soffre della mancanza di tutta una serie di strumenti che permettono di guadagnare un certo livello di confidenza riguardo la correttezza statica formale ed il comportamento dinamico.
È certamente buona norma, in determinati contesti, riflettere sulle responsabilità che vengono assegnate a questo livello di codice, e valutare gli approcci alternativi che è possibile integrare o adottare.
Tuttavia, in buona parte dei casi, si fa totale affidamento sulla disciplina del tecnico responsabile dell’implementazione. Un pattern interessante, è mantenere un template completamente semantico, evitando l’uso di classi presentazionali.
Si tratta di un design pattern piuttosto semplice da mettere in campo, che fornisce almeno due vantaggi:
- Maggiore semplicità e chiarezza del template. Possibilità di separare completamente l’ownership della gestione del template da quella dello stile
- Creazione di un livello di disaccoppiamento tra il template e lo stile, all’interno del quale è possibile declinare l’aspetto delle entità business rappresentate in termini più generali di aspetto visivo.
Il senso è semplice: comporre lo stile delle entità rappresentate, utilizzando gli strumenti messi a disposizione dai preprocessori css, come i mixin.
CSS testing
I test automatici (unitari e di integrazione, in particolare), sono una risorsa particolarmente importante che accompagna lo sviluppo di applicazioni. Per quanto riguarda il CSS, le metodologie attualmente in sperimentazione sono ancora piuttosto lacunose, non standardizzate, ed inefficienti, ed offrono probabilmente poco valore business risultando difficilmente giustificabili.
Tuttavia, si tratta di un territorio dove è giusto che si faccia ricerca. Avere delle metodologie e degli strumenti che permettano di avere confidenza sull’impatto dei nostri refactoring e sull’introduzione di nuove funzionalità, comporterebbe certamente un costo sensibilmente inferiore di gestione.