我為什麼不喜歡框架

發表於2011-08-23

導讀:本文由敏捷翻譯 – 李盛暉翻譯自 Benji Smith 釋出在 Joel Spolsky 網站上的文章《Why I Hate Frameworks》。原文寫於2005年9月,已有些年頭了。前幾周有使用者在Hacker News上推薦了這篇文章,相關討論也很激烈,故而翻譯。如需轉載,請檢視文章末尾處的宣告。

我正在規劃構建一個Java web應用程式(是的,它只能是java,由於很多原因,我現在不想談論這個)。在構建過程中,我正在評估一堆J2EE支援資訊組建的符合JSR的基於MVC規則的CMS網路服務應用程式的容器框架。

花了很多時間讀完特徵列表和檔案之後,我的眼睛都快瞎了。

假設我已經決定要搭建一個調味料的架子。

我以前做過一些小型木工專案,我想我完全知道我需要什麼:一些木頭和一些基本工具:捲尺、鋸子、水平儀和錘子。

如果我打算建一整座房子,而不僅僅是一個調味料架子,我還是需要一些木頭和一些基本工具:捲尺、鋸子、水平儀和錘子(以及其他工具)。

所以我去五金商店買工具,問售貨員哪裡能買到錘子。

“錘子?”他說,“再也沒有人買錘子了。他們都過時了。”

驚訝於時代的發展,我問了他原因。

“問題在於錘子多種多樣。大錘、羊角錘、球噴丸錘。假如你買了一把錘子,後來卻發現你需要的是另外一把不同型別的錘子怎麼辦?為了工作你只能再買一把。事實證明,大多數人想要的是一把簡單的能夠完成在你的生活中會遇到的不同鍛造任務的錘子。”

“嗯。好吧,假設你說的全對。你可以告訴我哪裡能找到一把通用的錘子嗎?”

“不,我們這再也沒有賣錘子了。他們都過時了。”

“真的嗎?我還以為你只是說通用的錘子是大勢所趨。”

“事實證明,如果你僅僅製造了一種錘子,它具有完成所有不同型別的錘子所能完成的相同工作,那麼它並不能面面俱到。用大錘來錘擊釘子不是很有效。還有,如果你想做掉你的前女友,那麼一把球噴丸錘無可替代。”

“沒錯。所以,如果再也沒有人買通用的錘子,而且你也沒有再賣所有那些過時的錘子的話,你有什麼型別的錘子賣?”

“事實上,我們根本沒有賣錘子。”

“那麼……”

“根據我們的研究,人們真正需要的終究不是一把通用的錘子。擁有一把適合幹活的錘子往往更加重要。所以,我們開始賣錘子的加工廠,這些工廠能夠製造你有興趣使用的錘子。你所有需要做的事情就是為錘子加工廠配置工人,開動裝置,購進原料,支付公共費用,以及PRESTO……你就可以馬上擁有剛好滿足你需要的一類錘子。”

“但我並非真的想買一個錘子加工廠……”

“這很好。因為我們再也沒有賣錘子加工廠了。”

“但我認為你剛才說的……”

“我們發現大多數人實際上都不需要一整個錘子加工廠。有些人,比如說,他們永遠不需要球噴丸錘。(也許他們至今仍未與女友分手。或者他們改用碎冰錐殺/死她們。)所以對有些人來說,購買一家可以製造幾乎所有型別的錘子的錘子加工廠沒有必要。”

“恩,很有道理。”

“所以,相反的,我們開始賣示意圖給錘子加工廠,讓我們的客戶能夠建立他們自己的錘子加工廠,常規設計製造他們實際上需要的一類錘子。”

“我猜猜。你們再也沒有賣那些示意圖。”

“不。當然不。事實證明,人們不希望建一整個工廠只是為了製造兩把錘子。把工廠製造留給這方面的專家,那是我經常說的。”

“這點我完全同意。”

“是的。所以我們不再賣那些示意圖並開始賣錘廠製造工廠。每一個錘子工廠由錘子工廠業務上的頂級專家為你打造,所以你不用擔心在工廠製造過程中的所有細節。然而,根據你自己特定的錘子設計,你擁有你自己的定製錘子工廠,批量生產你自己的定製錘子,在這些方面還是很有好處的。”

“呃,這不是真的……”

“我知道你想要說什麼!!……我們也不再賣那些(錘廠製造工廠)。因為某些原因,很少人買錘廠製造工廠,所以我們想出了一個新的方案來解決這個問題。”

“恩恩。”

“當我們後退,看著全球工具基礎架構的時候,我們認定人們被錘子工廠的管理和運營,以及其生產的錘子弄得沮喪不已。當你在運營捲尺加工廠、鋸子加工廠和水平儀加工廠,應付類似的情景時,這類開銷也會讓人生厭,更不用說經營一個木材製造集團控股公司。當我們真正面對這種情況的時候,我們認定,對於只是想搭建一個調味料架子的人來說,情況太過複雜。”

“是的,沒錯。”

“所以這個星期,我們在引進一個通用的工具加工廠,那樣的話,你所有由不同的工具加工廠生產的產品,都可以由一個單一的工廠製造。加工廠將生產你真正需要的唯一的工具,而且每一個加工廠將生產基於你的定製工具說明的單一產品。這個過程製造出來的最後一組工具將是適合你的特別專案的理想工具。在你按下按下按鈕之後,你將擁有想需要的最合適的錘子,最適合你任務的捲尺(儘管你也不得不部署一些“配置檔案”,使它能夠按照你的期望執行)。”

“所以你任何錘子都沒有?一把都沒有?”

“不,如果你真的想要一個高質量的工業設計的調味料架子,你迫切需要一些比從劣質的五金店買來的簡易錘子更加先進的東西。”

“這是現在每個人都這樣做的方式嗎?每個人現在都正在使用通用的工具製造工廠,無論他們什麼時候需要一把錘子?”

“是的。”

“恩……好吧。我想這就是我必須去做的。如果這就是當前做事的方式的話,我想我得好好學習怎麼去做。”

“祝你好運!”

“這有一個文件,對吧?”

(編注:下面內容是 Benji Smith 釋出在Joel Spolsky網站後的回覆更新。)

現在我已經自豪地擁有了自己的通用工具工廠的製造工廠,我很高興知道它符合“工具製造工廠”的GPTBFF 0.97 RC2草案。

幸運的是,面向工具的元工廠聯盟裡的70%工人都通過了這個版本規範的驗證。

不過標準之爭即將開始:有一種引人注目的技術,名為UXCTBFFF(Universal Trans-Continental Tool Building FFF)的,它承諾統一製造工廠行業,使之符合那些同時使用公制和標準工具的國家指導方針。

我的理解是,會有一個補丁包,利用UXCTBFF的使用者介面建立抽象層,就可以使 GPTBFF 0.97 RC2 與 UXCTBFF 標準的相容性幾乎達到95%。

不錯!

這種新的發展定當能夠提升調料架的質量(只要我的工廠建造完後開始執行,培訓好工人,從柬埔寨進口原材料,這些天我就要開工做調料架了)。

 

原文:BenjiSmith  編譯:敏捷翻譯李盛暉

如需轉載,但請註明原文/譯文出處、譯文超連結和譯者等資訊,否則視為侵權,謝謝合作!

相關文章