Perchè odio i Framework
From The Joel on Software Translation Project
Tratto da: The Joel on Software Discussion Group
Testo originale: Why I Hate Frameworks
Attualmente sono alla fase di pianificazione dello sviluppo di una web application Java (sì, deve essere Java, per una serie di ragioni che non mi va di discutere in questo momento). Per questo lavoro sto valutando un po’ di J2EE portlet-enabled JSR-compliant MVC role-based web service application container frameworks.
E dopo aver speso dozzine di ore leggendo liste di caratteristiche e documentazione, sono pronto a storcere il naso.
Supponiamo che io debba costruire un portaspezie di legno.
Ho già fatto piccoli lavori di fai-da-te con il legno prima d’ora, e penso di avere idea di cosa ho bisogno: un po’ di legno e qualche semplice utensile: un metro a nastro, una sega, una livella ed un martello.
Se dovessi costruire un’intera casa, al posto di un semplice portaspezie, avrei ancora bisogno di un metro a nastro, una sega, una livella ed un martello (tra le altre cose).
Allora vado dal ferramenta per comprare gli strumenti, e chiedo al commesso dove posso trovare un martello.
“Un martello?” chiede. “Nessuno compra più martelli, ormai. Sono roba vecchia.”
Sorpreso, gli chiedo perché.
“Beh, il problema dei martelli è che ce n’è di moltissimi tipi diversi. Mazze, martelli levachiodi, martelli a testa arrotondata. Cosa fai se compri un tipo di martello e poi ti rendi conto che in realtà te ne serviva un altro? Dovresti comprare un altro martello per il prossimo lavoro. Come risultato, la maggior parte delle persone in realtà vuole un singolo martello che possa eseguire tutti i lavori che si possono incontrare nel corso della vita”.
“Hmm. Beh, mi sembra giusto. Mi puoi indicare dove posso trovare un Martello Universale?”
“No, non ne vendiamo più. Sono obsoleti.”
“Davvero? Pensavo avessi detto che il Martello Universale era il futuro.”
“Pare che se si fabbricasse un solo tipo di martello, capace di eseguire tutti i lavori di tutti i tipi di martello, non sarebbe un buon martello per nessuno di essi. Fissare un chiodo con una mazza non è molto comodo. E, se uno vuole uccidere la propria ex fidanzata, non c’è miglior martello di uno con la testa arrotondata.”
“Questo è vero. Quindi, se nessuno compra più Martelli Universali e voi non vendete più tutti i vari classici tipi di martello, che martelli vendete?”
“Veramente non vendiamo più martelli.”
“Quindi?”
“Secondo una nostra ricerca, quello che serve davvero alla gente non è un Martello Universale, dopo tutto. E’ sempre meglio avere il giusto tipo di martello per ogni lavoro. Quindi abbiamo iniziato a vendere fabbriche di martelli, capaci di produrre qualunque tipo di martello potresti essere interessato ad usare. Tutto quello che devi fare è riempire la fabbrica di operai, attivare i macchinari, comprare le materie prime, pagare le bollette e - voilà - hai esattamente il tipo di martello che ti serve, in un batter d’occhio.”
“Ma non voglio assolutamente comprare una fabbrica di martelli…”
“Ottimo. Perché tanto non le vendiamo più.”
“Ma hai appena detto…”
“Abbiamo scoperto che alla maggior parte della gente non serve un’intera fabbrica di martelli. Alcune persone, per esempio, non avranno mai bisogno di un martello a testa arrotondata. (Magari non hanno mai avuto ex fidanzate. Oppure le hanno uccise con delle pinze per ghiaccio.) Quindi nessuno compra una fabbrica di martelli che può produrre ogni tipo di martello.”
“Sì, in effetti ha senso.”
“Allora abbiamo iniziato a vendere diagrammi schematici di fabbriche di martelli, permettendo ai nostri clienti di costruire le loro fabbriche di martelli, progettate in modo personalizzato per produrre solo i tipi di martelli che servono loro.”
“Mi faccia indovinare. Non li vendete più.”
“No. Per forza. Pare che la gente non voglia costruire un’intera fabbrica solo per costruire un paio di martelli. Lascia la costruzione delle fabbriche agli esperti di costruzione di fabbriche, è quello che dico sempre!”
“Non potrei essere più d’accordo.”
“Quindi abbiamo smesso di vendere i diagrammi schematici e abbiamo iniziato a vendere fabbriche di fabbriche di martelli. Ogni fabbrica di fabbriche di martelli viene costruita per te dai migliori esperti nel mercato delle fabbriche di fabbriche di martelli. Continui ad avere tutti i vantaggi del possedere la tua fabbrica di martelli, ottenendo i tuoi martelli personalizzati, secondo i tuoi progetti specifici.”
“Beh, ma non è quello…”
“So quello che stai per dire! … tanto non le vendiamo più. Per qualche ragione, non molte persone compravano le fabbriche di fabbriche di martelli, quindi abbiamo pensato ad un’altra soluzione.”
“Uh uh.”
“Riguardando l’infrastruttura globale per gli utensili, abbiamo determinato che la gente era frustrata dal dover gestire e far funzionare una fabbrica di fabbriche di martelli, come anche le fabbriche di martelli che producono. E’ un overhead che può diventare veramente esagerato quando sei nel probabile scenario in cui devi far funzionare anche una fabbrica di fabbriche di metri a nastro, una fabbrica di fabbriche di seghe, e una fabbrica di fabbriche di livelle, senza menzionare le compagnie di legno truciolare. Quando abbiamo analizzato la situazione, abbiamo determinato che è semplicemente troppo complesso per uno che deve costruire un portaspezie.”
“Sì, infatti.”
“Quindi questa settimana stiamo introducendo una fabbrica di fabbriche di fabbriche di utensili general-purpose, quindi tutte le fabbriche di fabbriche di diversi utensili possono essere prodotte da una singola, unica fabbrica. La fabbrica di fabbriche di fabbriche produce solo le fabbriche di fabbriche che ti servono, e ciascuna di queste fabbriche di fabbriche produce una singola fabbrica basata sulle tue specifiche. L’insieme finale di utensili che esce dal processo saranno gli strumenti ideali per il tuo specifico progetto. Hai esattamente il martello che ti serve, ed esattamente il metro a nastro per il tuo lavoro, tutto con la semplice pressione di un pulsante (anche se potresti aver bisogno di fare il deployment alcuni file di configurazione per far funzionare tutto secondo i tuoi bisogni).”
“Quindi non avete martelli? Per niente?”
“No, se davvero vuoi un portaspezie di alta qualità industriale, hai disperatamente bisogno di qualcosa di più avanzato di un semplice martello da ferramenta da quattro soldi.”
“E’ questo è il modo in cui fanno tutti, oggi? Tutti usano una fabbrica di fabbriche di fabbriche di utensili general-purpose, quando hanno bisogno di un martello?”
“Sì.”
“Beh, va bene. Allora è quello che dovrò fare anch’io. Se questo è il modo in cui le cose vengono fatte adesso, allora è meglio che impari come farle.”
“Buon per te!”
“Questa cosa ce l’ha la documentazione, vero?”
