Usare o non usare un Framework?
Stasera ho avuto una interessante conversazione con un amico sull’opportunità o meno di utilizzare un framework di sviluppo (o una o più librerie, come ad esempio JQuery e Bootstrap di Twitter) per la realizzazione di applicazioni.
Da questa semplice premessa è iniziato uno “scontro tra titani”: da una parte il mio amico, che difende la modalità di sviluppo completamente “da zero”, realizzando da zero tutte le funzionalità necessarie per lo sviluppo dell’applicazione (comprese le funzionalità ancillari, come un DatePicker JavaScript ed un framework di validazione dell’input utente JavaScript, ad esempio), dall’altra c’ero io che ovviamente difendevo la modalità di sviluppo che prevede l’utilizzo di framework o librerie di terze parti.
Chi difende la modalità di sviluppo “da zero” porta a sostegno della propria tesi alcune motivazioni come:
- Estrema personalizzazione: il software fa esattamente quello per cui è stato progettato, massimizzando le performances;
- Leggerezza: essendo il codice sviluppato estremamente minimale ed estremamente personalizzato, non c’è nemmeno “un byte” di troppo rispetto a quanto necessario;
- Controllo: si è assolutamente certi di cosa il codice sorgente faccia, senza doverlo controllare e verificare;
- Conoscenza: risolvendo in proprio ogni problema, si aumenta la propria “conoscenza di base”, entrando nel merito ed analizzando ogni singolo piccolo problema che si può presentare;
Dall’altra parte, ovviamente, chi difende la modalità di sviluppo basata su software di terze parti, porta altre motivazioni:
- Rapidità di sviluppo: utilizzando framework o librerie già pronte, si accorciano notevolmente i tempi di sviluppo (cosa che rende intrinsecamente più competitivi, potendo offrire al cliente dei tempi di sviluppo minori e conseguentemente minori costi di sviluppo);
- Riusabilità: un proprio snippet di codice sviluppato utilizzando un framework standard può essere facilmente riutilizzato in un altro progetto, senza alcun o con pochissime modifiche;
- Evitare di perdere tempo “reinventando la ruota”: non si perde tempo a risolvere per ogni progetto una problematica già affrontata e risolta da tempo, magari da decine di sviluppatori, arrivando ad una soluzione largamente accettata e condivisa, che ormai può essere data quasi per “scontata”;
- Aderenza agli standard: l’uso di framework e librerie ampiamente diffusi rende facilmente condivisibile e manutenibile anche da persone terze il proprio codice sorgente, per la standardizzazione della sintassi e la necessaria adozione delle best practices che con il tempo di sono venute a creare;
- Accrescimento personale: imparando a sviluppare con framework diffusi comporta implicitamente un accrescimento personale ed una “maggiore rivendibilità” dello sviluppatore sul mercato del lavoro;
- Concentrarsi sul reale obiettivo del progetto: non dovendo investire parte del proprio tempo a risolvere problemi ancillari, si può massimizzare i propri sforzi sull’analisi delle problematiche per la quale l’applicazione è in fase di sviluppo, magari investendo parte del tempo nella ricerca di qualche algoritmo particolarmente efficiente o innovativo per la problematica in oggetto;
E voi, cosa ne pensate?
Sviluppate tutto “da zero”, oppure preferite appoggiarvi a framework e librerie già pronti? Fatemi la vostra opinione.