Poniamo molta attenzione alla qualità del codice che scriviamo e facciamo code review su tutte le pull request per accertarci di avere scritto del JS performante veloce e bug free. Utilizziamo spesso Typescript che oltre a migliorare l’esperienza di sviluppo permette di abbassare notevolmente bugs di tipo statico.
Scegliamo tra reactive programming, OOP o functional programming in base alle applicazioni.
Scriviamo unit ed integration tests.
Abbiamo sistemi di CI / CD su tutti i progetti ed hooks che fanno girare linter e tests quando creiamo pull requests.
Utilizziamo tutte le ultime features di JS, CSS ed HMTL con gli opportuni polyfill per scrivere codice performante e veloce su tutti i browser.
Teniamo sott’occhio le complessità O(.) degli algoritmi che usiamo per minimizzare uso di memoria e CPU.
Usiamo design patterns per ridurre la duplicazione del codice, riutilizzare parti comuni e per manipolazioni di algoritmi o flussi complessi.
Less is more! Poniamo massima attenzione sulle dimensioni dei bundles, cercando di tenere le dipendenze con librerie esterne al minimo.
Scriviamo HTML 5 semantico utilizzando tutte le sue ultime features. Conosciamo molto bene il costo che hanno per i browser i vari selettori CSS (https://csstriggers.com/) e scriviamo gli stili di conseguenza aiutandoci con pre processori come SASS. Stiamo anche attenti a servire set di stili differenziati in base al device, e progressivamente in base alle sezioni vistate dal navigatore.
Per gestire al meglio i deploy utilizziamo tools come AWS, Netlify, Heroku, IBM Cloud e molti altri che dispongono di CDN ridondate e distribuite in tutto il pianeta, per offrire massima affidabilità nel delivery degli assets e tempi di risposta molto bassi. Nessuna procedura manuale o obsoleta come upload FTP
Tutti i nostri progetti sono configurati per lavorare in CI ed in modalità Agile. Tutto il workflow è automatizzato, sicuro testato e veloce. Per la continuous integration utilizziamo tools come Azure devops, Gitlab, CircleCI, Jenkins
Generiamo bundle ottimizzati per i vari tipi di browser, per inviare JS transpilato o non ed soltanto i polyfill necessari.
Inoltre non ci limitiamo ad usare media query per realizzare app responsive, ma effettuiamo dynamic serving, ovvero distribuiamo bundle che contengono HTML CSS e JS specifici per il dispositivo che li richiede. Quindi se l'app viene aperta su un desktop riceverà un bundle, se aperta su un mobile un altro, ovviamente molto più leggero.
Nei nostri software includiamo un sistema di log degli errori che ci permette di sapere in tempo reale i dettagli del browser, tipo di device, OS e condizioni in cui si è verificato il bug, in modo da riprodurlo localmente e fixarlo il prima possibile.
Utilizziamo sistemi simili anche per tracciare metriche importanti come i tempi di risposta delle chiamate API, interazioni utente e qualsiasi altra cose ci possa far comodo monitorare.