Framework fantastici e come sceglierli

Guida ai framework JavaScript - Edizione 'Festa in Piscina' 2019

Siete in piscina con la vostra compagine, ignari di cosa sta per succedere e con la pelle già color aragosta, quando la domanda fende l’aria: “ma quindi adesso che framework usate in azienda?”
Archiviato il fugace pensiero sul dover espandere la vostra cerchia di amici anche oltre l’ambito tech, il vostro cervello inizia già a girare a mille: scorrendo rapidamente i pochi dati sull’argomento ancora presenti nella vostra (deteriorata) memoria, vi preparate ai cori delle tifoserie opposte che già sentite montare in gola.

Boromir, luogotenente di Gondor, che spiega come non è possibile discutere pacificamente di framework

FERMI! Non fatevi cogliere impreparati! Ecco per voi un’analisi comparata dei due maggiori framework (cosa cambia tra framework e CMS?) che si contendono il trono di spade JavaScript: Angular e Vue.

Sì, vi sento mentre gridate scandalizzati e React?!? quindi affrontiamo subito la questione: è una libreria, non un framework.
I framework si presentano con molte scelte preimpostate (in alcuni casi obbligate), permettendovi di iniziare a lavorare da subito.
React non copre tutti gli aspetti che si incontrano durante lo sviluppo di progetti di complessità medio-alta e richiede, caso per caso, una scelta oculata degli strumenti da affiancargli; per questo non è trattato all’interno di questo articolo, nonostante sia attualmente l’indiscusso leader di mercato del segmento web app.

Disclaimer: Dreamonkey offre consulenze e sviluppo web app in ambito Angular e Vue.
Vue è il nostro framework di riferimento: ho programmato in Angular per più di un anno e questo ha, paradossalmente, rafforzato la nostra scelta.
Alcune opinioni espresse in questo articolo sono basate in parte sulla mia esperienza personale, dunque soggettive.

Abbiamo detto che siamo in piscina? Allora permettetemi di dire che:

  • Angular è il Super Ultra Liquidator della Distruzione Vorpal +1: ha più bottoni e funzionalità di quante se ne possano usare in tutte le estati di un adolescente, ingombrante a tal punto da necessitare tre persone per poter essere maneggiato agevolmente. Esiste la modalità gavettone nucleare, ma non è documentata e avete sempre il terrore di attivarla per sbaglio;
  • Vue è una pistola ad acqua componibile e modulare: la base fa le cose principali (mettere in pressione l’acqua, sputarla fuori, gestire facilmente le animazioni Javascript, cose così), per il resto ci sono i pezzi in più da montare, con relative istruzioni.

Angular è come un ragazzino con tre Super Liquidator

Angular: sembra minaccioso e ha un sacco di risorse, ma di solito finisce infradiciato prima di poter mettere mano al suo arsenale completo.

Metafore a parte, ecco una lista (breve, giuro) dei pro e dei contro dei due framework:

Logo di Angular

Angular
  • Potente, ma complesso: la curva di apprendimento è molto ripida e crea grattacapi nel trovare (o formare) nuove risorse per espandere il team di lavoro; i tempi di sviluppo sono incommensurabilmente lunghi anche per funzionalità apparentemente semplici; non per niente Angular risulta tra i framework più “temuti” dagli sviluppatori nel 2019.
  • Supportato da Google: il programma di avanzamento delle versioni è chiaro e viene fatto tutto il possibile per garantire stabilità e facilità di aggiornamento; al contempo, non è assolutamente garantito che gli obiettivi degli sviluppatori e gli obiettivi di Google siano gli stessi, lasciando per anni in attesa del supporto ufficiale di funzionalità molto richieste.
  • Stile e struttura del codice molto rigida: risorsa preziosa su team di lavoro eterogenei e con più di 10-15 persone, tipici di aziende multiculturali di dimensioni gargantuesche (ho sentito qualcuno urlare Google! dal bordo piscina?), ma genera negli sviluppatori una sensazione quasi claustrofobica, legata ai molti vincoli preimpostati.

Logo di Vue.js

Vue
  • Semplice ed intuitivo: la facilità di inserimento dei nuovi sviluppatori, anche non particolarmente esperti, è motivo di vanto per questo framework, che nel 2019 ha quasi strappato lo scettro a React come “framework più amato” dagli sviluppatori. La documentazione, spesso definita perfetta dagli esperti del settore, contribuisce alla sua fama.
  • Versatile e flessibile: il concetto di Single File Component (SFC), la velocità di sviluppo e la sua natura di framework progressivo (facilmente integrabile in progetti esistenti) sono i suoi più famosi punti di forza.
  • Guidato dalla comunità: vi è una particolare attenzione alle esigenze degli sviluppatori: il progetto è supportato esclusivamente da donazioni e questo ha portato allo sviluppo di una community estremamente coinvolta e impegnata nel rilasciare librerie per le più disparate necessità, tra cui molte collezioni di componenti di alta qualità.
  • Prestazioni sempre al massimo: l’ottimizzazione delle prestazioni è gestita all’interno del framework e nascosta agli sviluppatori, migliora con ogni aggiornamento e senza che lo sviluppatore debba mettere mano al codice.

È importante notare che entrambi i framework hanno un loro ambito di utilizzo: è opportuno valutare caso per caso quale utilizzare.

In generale, il discrimine non saranno le differenze tecnologiche, ma le necessità di gestione del team di progetto e le sue dimensioni:

  • Team numerosi ed eterogenei possono beneficiare di un ambiente di sviluppo fortemente incasellato, che permetta di mantenere il progetto sui binari compensando l’elevato prezzo in termini di tempi di sviluppo e difficoltà di ulteriore espansione del team; in queste situazioni, la bilancia volge a favore di Angular.
  • Team omogenei e con dimensioni ridotte (meno di 10-15 sviluppatori), in cui i tempi ed il costo di sviluppo assumono più rilevanza, giovano dell’approccio più libero e flessibile proposto da Vue, anche su progetti di elevata complessità.

Come avrete intuito, la bilancia volge molto più spesso a favore di Vue, lo dimostrano le statistiche sui siti attualmente online che utilizzano l’uno e l’altro framework.

Psss! Non ditelo a nessuno, ma React su questi dati è in caduta libera nei primi mesi del 2019, gli stessi in cui Vue è in crescita vertiginosa, ed in Italia è già stato sorpassato!

È necessario un appunto di tipo geografico: i progetti per cui Angular può essere adatto sono ancora più rari in Italia. Rilevazioni sul numero di sviluppatori per team di progetto non esistono, quindi dovremo accontentarci, come approssimazione, di trovare il numero di imprese che potrebbero creare un team di progetto di 10 o più sviluppatori.
Dall’ultima rilevazione disponibile (dati 2014, tabelle 1.1 e 1.2) in Italia si contano 18795 imprese con in media 7.4 dipendenti, di cui il 92.4% ha meno di 10 dipendenti.

Questo significa che, su tutto il territorio italiano, meno di 1430 aziende rientrano nel nostro conteggio (il 7.6% del totale).
A ciò si aggiunge un debole coinvolgimento di lavoratori stranieri, con solo il 4,2% per l’intero comparto ICT (dati 2014, paragrafo Età delle imprese IT e caratteristiche dei lavoratori del settore), che non può che riflettersi in team di progetto molto omogenei.

Presi questi dati, che vi ricordo essere una stima per eccesso dell’indicatore che cercavamo originariamente, possiamo affermare che nella stragrande maggioranza dei casi il framework di riferimento, parlando soprattutto del mercato italiano, dovrebbe essere Vue.

Per quali prodotti quindi è auspicabile l’utilizzo di Angular? Può essere usato per progetti di respiro sovranazionale (europeo o mondiale), realizzati in collaborazione con vari team di sviluppo, soprattutto se in remoto. Esempi di questo tipo possono essere social network o software gestionali per multinazionali che controllano aspetti diversi di una certa filiera produttiva. Google per esempio utilizza Angular in quasi tutti i suoi servizi.

Vue è invece adatto a qualsiasi tipo di progetto, anche ad alti livelli, tra cui Alibaba (il più grande e-commerce cinese), alcuni tool interni di Netflix (famosissimo servizio di streaming), GitLab (un prodotto per sviluppatori), 9GAG (il più famoso sito di immagini e video divertenti) e molti altri.
È particolarmente indicato quando vi è la necessità di aggiornare un prodotto web già esistente, essendo pensato per favorire un’integrazione progressiva ed evitare di spendere mesi di lavoro su un nuovo prodotto, prima di poterlo vedere funzionante e valutarlo.
È adatto anche alla realizzazione di normali siti web, sia statici che con componenti più complessi, come il nostro!

Entrambi i framework sono vicini a cambiamenti rivoluzionari sotto al cofano:

  • Angular rilascerà in autunno la versione 9.0, completando la migrazione ad Ivy, il nuovo compilatore introdotto nella versione 8.0;
  • Vue rilascerà la versione 3.0 negli ultimi mesi del 2019, che promette la completa riscrittura del framework in TypeScript e notevoli miglioramenti delle prestazioni sotto ogni aspetto.

Quindi, cosa abbiamo imparato oggi per aiutarvi con l’annosa questione proposta dai vostri sodali? Innanzitutto, che la risposta, come sempre in questi casi, è: dipende. Secondariamente, che nella stragrande maggioranza dei casi quel dipende diventa un Vue!. In ultima istanza, che il settore è in fermento e non accenna a calmarsi: entro la fine del 2019 ne vedremo delle belle!

Rimanete sintonizzati e, se indecisi, contattateci per una consulenza! Accettiamo anche inviti alle vostre feste in piscina 😉

PS: per chi ne capisce un po’ di più, ecco un articolo che confronta i tre Big sulla piazza in modo più approfondito a livello tecnico: Angular, React e Vue a confronto.
PS2: per chi vuole approfondire dati e statistiche su Vue, esiste un breve compendio apposito da mostrare ai vostri colleghi e CTO!