Author:Benji Smith
Translator:Evan Wang
Original Link:Why I Hate Frameworks
我正處于建造一個基于Java的Web應用的規劃階段(是的,必須基于Java,不過我現在還不想討論其中的原因)。在這個過程中,我評估了一系列CMS應用容器框架,它們大多擁有J2EE門戶、采用與JSR相兼容的MVC架構、基于角色等。
然而在花了幾十個小時閱讀功能列表和文檔后,我幾乎想戳瞎我的雙眼。
首先假設我決定做一個調味品架子。
我以前做過一些小的木工活,因此我知道自己需要以下東西:一些木頭和基本工具,包括卷尺、鋸子、水平儀和錘子。
如果我想造一棟房子,而不僅僅是一個調味品架,我還是需要卷尺、鋸齒、水平儀和錘子(以及其它東西)。
所以,我跑到一家五金店,問一個銷售員,哪里能找到一把錘子。
“錘子?”他說:“現在幾乎沒人要買錘子了。這個已經過時了。”
我很驚訝這樣一種發展,于是問他為什么。
“嗯,問題在于有太多種類的錘子。大錘啦,拔釘錘啦,球頭錘等等。你買了其中一種,后來發現你還需要另外一種怎么辦呢?你下次還得單獨買一把。因此,大多數人實際上需要一把能夠處理他們一生中可能碰到的所有敲敲打打的活的錘子。”
“嗯,這個聽起來挺不錯。那么我在哪里能夠找到這樣一把通用錘子呢?”
“不,我們不再銷售了。他們已經廢棄了。”
“真的嗎?我想你剛才不是說通用錘子是將來的趨勢嘛。”
“事實上,如果生產出一種能夠處理所有事情的錘子,反倒不能很有效率地處理其中的任何一件。用一把大錘去拔個釘子很費勁吧。并且,你要殺死你前任女友的話,沒有什么會比一把球頭錘更適合的了。”
“這倒是真的。如果沒有人會買這種通用錘子,而你們又不再銷售老式的各種錘子,那么你們賣什么樣的錘子呢?”
“事實上,我們不賣錘子。”
“那么…”
“根據我們的研究,人們需要的根本不是通用錘子。最好還是用不同的錘子做不同的工作。所以,我們現在銷售錘子工廠,它能夠生成任何你需要的錘子。你所需要的只是為錘子工廠招聘員工,開動機器,購買原材料,付公用事業費,諸如此類的…這樣你就可以隨時得到你需要的錘子。”
“但我真的不想買一個錘子工廠…”
“對頭。我們其實也不再銷售錘子工廠了。”
“但你剛剛還說…”
“我們發現大多數人實際上不需要一整個錘子工廠。比如說,一些人,就不可能用到球頭錘。(也許他們就沒有前女友。或者他們用冰錐來解決她們。)所以對一些人來說一個能生產各種錘子的工廠是沒有什么意義的。”
“耶,這個實際得多。”
“所以,我們開始銷售錘子工廠的示意圖,以便我們的客戶能夠建造他們自己的錘子工廠,自行設計只生成他們實際需要的那些錘子。”
“讓我猜猜看。你們現在也不再銷售這些了。”
“對,真的是這樣。實際上,人們不會為了幾把錘子去建一個工廠。就像我經常說的,讓建造工廠的專家去建造工廠吧。”
“這一點我贊成。”
“對的。所以我們停止銷售這些示意圖,轉而銷售建造錘子工廠的工廠。每個建造錘子工廠的工廠都由這方面的頂尖專家建造,所以,你根本不需要操心建造工廠的任何細節。你依然擁有自定義錘子工廠的好處,根據你自己特定的錘子設計做出你自己的錘子。”
“嗯,這個實際上并不…”
“我知道你想說什么!…我們也不再銷售這些東西了。因為某些原因,也沒有多少人買建造錘子工廠的工廠,所以我們又有了新的解決方法。”
“哇哈。”
“當我們回過頭來審查這個統一工具的基礎時,發現人們被必須管理和運作一個制造錘子的工廠以及它所生成的錘子工廠給困住了。當你需要處理類似的建造卷尺工廠的工廠,水平儀工廠的工廠,鋸子工廠的工廠的時候,這很快就會變得相當棘手。更別提木材生產集團公司了。當我們審查這種狀況的時候,我們意識到這對于僅僅想做個調味品架子的人來說過于復雜了。”
“是啊,這可不是開玩笑。”
“所以,這個星期,我們正在推廣一種通用的建造工廠,用來建造生產工具工廠的工廠,這樣你所有的用來建造不同種類工具的工廠的工廠就可以由一個單一的、統一的工廠來建造了。這種工廠將僅僅生產你所需要的工具工廠的建造工廠,而這些建造工廠將生成一個僅生產你自定義的工具的工廠來。你將得到你要的那種錘子,你要的卷尺,所有這一切僅僅需要按一下按鈕(當然,也許你要發布一些配置文件以便它能根據你的期望來工作)。”
“所以,你們根本就沒有什么錘子?不是嗎?”
“是的。如果你需要一個高質量的,工業標準的調味料架子,你絕對需要這些高級玩意,而不是從那些破破爛爛的五金店里就買得到的錘子。”
“現在所有的人都在這么做嗎?當他們需要一把錘子的時候,所有的人都在使用一個通用的能夠生產工具工廠的建造工廠的工廠嗎?”
“是的。”
“那…好吧。我想這就是我必須要做的。如果這是處理事情的既定方法,我想我最好還是學學怎么來用吧。”
“祝你好運!”
“這些都有文檔的,對吧?”
現在我已經自豪地擁有了自己的通用的工具工廠的建造工廠的建造工廠,我很高興地知道它與GPTBFF 0.97 RC2標準草案兼容,這是“通用的工具工廠的建造工廠的建造工廠”的標準。
很幸運地,面向工具的元工廠聯盟里的工人都通過了這個版本的標準的驗證。
然而標準之爭即將開始:一種名為UXCTBFFF(Universal Trans-Continental Tool Building FFF)很有競爭力的原工廠技術承諾將統一建造工廠的工廠的建造行業,以使之符合那些同時使用公制和當地度量單位的國家的標準。
我的理解是只需要創建一個貫穿用戶界面的抽象層的補丁包,就可以使GPTBFF 0.97 RC2與UXCTBFF標準達到95%左右的兼容。
真是太好了!
想必這種新的發展能夠提升我的調料架的質量(一旦我搭建好我的工具工廠的建造工廠的建造工廠并使之運行,培訓好工人,從柬埔寨進口來原木,在最近的某天,我就要開始做那個調料架了)。
Benji Smith 的回應:
Why China Hates Frameworks