martedì 24 settembre 2013

Perchè odio i frameworks

(libera traduzione del post “Why I hate frameworks” di BenjiSmith  http://discuss.joelonsoftware.com/?joel.3.219431.12)

Attualmente sto pianificando la realizzazione di una applicazione web in Java (deve essere Java per una serie di ragioni che non ho voglia di raccontare in questo momento).
In relazione alla suddetta attività, sto valutando una serie di portlet J2EE-enabled JSR-compliant MVC role-based CMS web service application container frameworks.

Dopo aver speso decine di ore a leggere lunghi elenchi di funzionalità e tanta tanta documentazione, sono pronto a storcere il naso nell’utilizzo di un framework.
Per spiegare i miei dubbi in tal senso, procedo con un esempio: facciamo finta che io abbia deciso di costruire un Portaspezie.

In passato ho fatto piccoli lavoretti con il legno e quindi credo di avere un'idea abbastanza precisa di quello che mi serve, un po’ di legno e altri strumenti fondamentali: un metro, una sega, una livella e un martello.
Se dovessi costruire una intera casa piuttosto che un portaspezie, tra le altre cose avrei ugualmente bisogno di un metro a nastro, di una sega, di una livella ed un martello.

Quindi vado al negozio di ferramenta per comprare gli strumenti e chiedo al commesso dove posso trovare un martello.

"Un martello?" chiede sorpreso il commesso, "Nessuno compra più martelli. Sono una cosa vecchio stile, ormai superata. "

Io, basito da questa affermazione, gli chiedo perché.

"Beh, il problema con martelli è che possono essere di tanti diversi tipi: mazzette, martelli artigliati, martelli a rotondi, ecc.. Cosa succederebbe se, dopo aver comprato un tipo di martello, vi rendeste conto che avevate bisogno di un altro tipo ? Dovreste comprare un altro martello per fare il vostro lavoro.
Come abbiamo riscontrato, la maggior parte dei clienti vorrebbe un singolo martello universale in grado di andare bene per tutti i tipi di lavoro".

"Hmmmmmm. Bene, posso essere d’accordo. Puoi dirmi dove posso trovare un martello universale ?"
"No, noi non li vendiamo più. Sono obsoleti."

"Davvero?!!?? Anche questi ?!?!? Ma mi sembra di aver capito che mi hai appena detto che il martello universale è la cosa più richiesta per poter fare anche in futuro lavori di tutte le tipologie".

"Si, ma come abbiamo riscontrato, se avessi un solo tipo di martello universale in grado di eseguire tutte le operazioni fattibili con tutti i diversi tipi di martelli, non sarebbe in effetti specifico per nessuna di esse.
Per esempio, mettere un chiodo con un mazza non è molto efficace oppure se volete uccidere la vostra ex-fidanzata non c'è davvero niente di meglio di un martello con la testa arrotondata ".

"OK, quindi se nessuno compra più martelli universali e voi non state più vendendo i vecchi tipi di martelli di una volta, che tipo di martelli vendete? ".

"In realtà, noi non vendiamo martelli per niente".

"Quindi ...".

"Secondo la nostra ricerca, quello di cui la gente ha davvero bisogno, dopo tutto non è un martello universale dato che è 'sempre meglio avere il giusto tipo di martello per ciascun lavoro.
Quindi, abbiamo iniziato a vendere fabbriche di martelli in grado di produrre qualunque tipo di martello che potrebbe essere utile.
Tutto quello che devi fare è riempire la fabbrica con i lavoratori, attivare le macchine, comprare le materie prime, pagare le bollette e ... avrai esattamente il tipo di martello che ti serve".

"Ma io non voglio comprare una fabbrica di martelli ...".

"Giusto !! E’ per questo che noi non le vendiamo più.".

"Come ?!??!?!    Ma... io pensavo di aver capito che ....".

"Si, ma abbiamo scoperto che la maggior parte delle persone non ha effettivamente bisogno di un’intera fabbrica di martelli. Alcune persone, per esempio, non hanno mai bisogno di un martello con la testa rotonda (forse non hanno mai avuto ex-fidanzate o forse le uccidevano con le pinze per ghiaccio),
quindi non c'è alcun motivo per chi compra una fabbrica di martelli di produrre ogni tipo di martello".

"Certo, quello che dici è sensato".

"Così, abbiamo iniziato a vendere Template di fabbriche di martelli, permettendo ai nostri clienti di costruire le loro fabbriche di martelli, personalizzando i progetti al fine di produrre solo i tipi di martelli di cui hanno effettivamente bisogno. ".

"Lasciami indovinare.... ora non vendete più neanche i template".

"No, certo che no. A quanto pare, la gente non vuole progettare e personalizzare un’ intera fabbrica solo per costruire un paio di martelli ".

"Mi pare chiaro".

"Quindi abbiamo smesso di vendere i template ed iniziato a vendere fabbriche di fabbriche di martelli. Ogni fabbrica di fabbriche di martelli è realizzata per voi dai migliori esperti in fabbrica di fabbriche di martelli, quindi per il cliente non c'è bisogno di preoccuparsi di tutti i dettagli che servono nella costruzione di una fabbrica.
In questo modo, i clienti hanno ancora tutti i benefici di avere una propria fabbrica di martelli al fine di produrre i propri martelli personalizzati secondo le proprie specifiche, ma non hanno problemi di progettazione e realizzazione".

"Beh, ma poi....".

"So cosa stai per dire!! ... Che noi non vendiamo più neanche quelle.
Infatti, per qualche ragione, non molte persone hanno acquistato le fabbriche di fabbriche di martelli, così siamo arrivati ​​a una nuova soluzione per affrontare il problema".

"Dimmi dimmi".

"Abbiamo fatto un passo indietro e guardato l'infrastruttura globale, stabilendo che le persone erano frustrate dal dover gestire una fabbrica di martelli, nonché la fabbrica di fabbriche che l’ha prodotta.
Questo tipo di sovraccarico può diventare molto pesante quando bisogna gestire analoghe situazioni di fabbriche di fabbriche di metro a nastro, fabbriche di fabbriche di seghe, fabbriche di fabbriche di livelle.
Quando abbiamo analizzato la situazione, abbiamo determinato che questo è troppo complesso per chi davvero vuole solo costruire un portaspezie ".

"Sì, condivido".

"Così questa settimana, stiamo introducendo un strumento generico, la fabbrica di fabbriche di fabbriche, in modo che tutte le tue fabbriche di fabbriche di utensili possano essere prodotte da una singola, unica fabbrica.
La fabbrica di fabbriche produrrà solo le fabbriche di fabbriche di cui si ha veramente bisogno e ciascuna di queste fabbriche di fabbriche produrrà una singolo fabbrica in base alle specifiche da voi fornite riguardo allo strumento personalizzato.
Alla fine, gli strumenti che usciranno da questo processo, saranno gli strumenti ideali per lavorare al vostro particolare progetto. Avrete esattamente il martello che vi serve ed esattamente il metro giusto per il vostro scopo, il tutto con la semplice pressione di un pulsante (anche se potrebbe essere necessario valorizzare alcuni files di configurazione per far funzionare il tutto secondo le vostre aspettative). ".

"Quindi non ci sono martelli? Niente? Neanche un avanzo di magazzino ?".

"No. Se si vuole veramente produrre qualcosa alta qualità, ad esempio un portaspezie realizzato industrialmente, hai disperatamente bisogno di qualcosa di più avanzato di un semplice martello preso in un negozio di ferramenta ".

"Chiariscimi bene, questo è quello che tutti stanno facendo ora ? Tutta la gente usa un general-purpose tool-fabbrica di fabbriche di fabbrica ogni volta che hanno bisogno di un martello? ".

"Sì".

"Beh ... Va bene. Credo che è quello che dovrò fare. Se questo è il modo con cui le cose vanno fatte, credo che sia meglio imparare a farlo".

"Buon per te!".

"Scusami ancora, con questa tool fabbrica di fabbriche di fabbrica di...... viene fornita la documentazione, giusto ?".

Giorni dopo l’acquisto....

Ora che sono l'orgoglioso proprietario del mio general-purpose tool-fabbrica di fabbriche di fabbrica, sono soddisfatto di sapere che esso soddisfa con il progetto 0,97 specifiche GPTBFFF RC2 per lo strumento di costruzione fabbrica di fabbriche.
Per fortuna, il 70% dei lavoratori nel Tool-Oriented Metafactory Union sono certificati con questa versione di specifiche.
All'orizzonte però c’è uno standard concorrente: il molto convincente metafactory technology chiamato UXCTBFFF (Universal Trans-Continental strumento per la creazione FFF), che promette di unificare la fabbrica fabbrica industria fabbrica per rispettare le linee guida dei paesi che utilizzare entrambi gli strumenti metrici e standard.
La mia comprensione è che ci sarà un service pack al mio GPTBFFF0,97 RC2 per portare in quasi il 95% di conformità con il UXCTBFFF standard, semplicemente creando un livello di astrazione attraverso la sua facilità di utilizzo dell’interfaccia.
Grandioso !!
Sicuramente questo nuovo sviluppo migliorerà la qualità del mio portaspezie.
(che dovrò in effetti costruire uno di questi giorni, appena avrò in esecuzione la mia fabbrica fabbrica di fabbriche, la mia forza lavoro addestrata, le mie materie prime importate dalla Cambogia, ecc.).

Traduzione di Savedev


Image courtesy of jscreationzs / FreeDigitalPhotos.net