棄聰明,求質樸

2021-07-04 11:18:42 字數 1447 閱讀 4241

智力超群、足智多謀、深思熟慮、知識廣度與深度兼備、追求準確性,這對任何人來說都是值得稱道的品質。對架構師來說,這些素質尤其被看重。

然而,聰明(cleverness)也包涵某些額外的隱含意義。它也暗指能夠快速想出脫身之計的能力,但這種本領最終要依靠一些小技倆(gimmick)、**(shell game)或調包計(switcharoo)。從中學時代起,我們就應該己經領教過那些巧舌如簧的聰明傢伙,他們總是靠玩文字遊戲或邏輯謬論來取勝。

聰明的軟體**昂貴,不易維護,僵脆易折。所以,不要追求聰明,盡量用最淺顯易懂的質樸(dumb)方法,恰如其分的進行設計。恰如其分的設計捨棄聰明。如果聰明看似必不可少,那麼只能說明問題仍未正確界定。這時要去重新界定問題,直到一切再次變得淺顯質樸為止。你可以使用粗粉筆畫些草圖,保持常規思維。別去理會什麼流行風潮。只有真正睿智的架構師才懂得如何保持質樸。

小聰明會誘導我們在軟體開發中使用奇技淫巧。不要依賴某個技術細節使軟體跑起來。我們不是魯布﹒戈德堡(rube goldberg)(譯註①),不是麥吉弗(macgyver)(譯註②),無法隨時用乙隻回形針、一支爆竹或一片口香糖就能從帽子裡揪出各種複雜的設計來。先清空你的大腦,不要帶著閉包、泛化及如何操控堆中的物件這些豐富的知識去解決問題。當然,有時候我們的確剛好需要這些玩意,但是這種情況往往比我們以為的要少。

越來越多的開發人員己經懂得如何實現和維護質樸的解決方案(dumb solutions)。在質樸的解決方案中,每個元件只做一件事。這些元件耗時少,易於建立,以後要改變也無須花很多時間。它們可以從當前使用的構造塊(building blocks)中繼承己有的優化(optimization)。這些元件會隨著鮮活的設計開發過程自己湧現(emerge)出來,那時你可以感覺到它們的優雅和簡潔。聰明的設計僵硬難改,其細節會對全域性產生太多的牽扯,往往會一觸即毀。

譯註①:魯布﹒戈德堡(全名reuben garrent lucius goldberg),是美國著名的漫畫家、雕刻家、作家、工程師、發明家、全美漫畫家協會的創立者和主席。2023年因他的政治漫畫而獲得普利茲獎。因創作魯布﹒戈德堡機械(rubegoldberg devices/machines)系列漫畫受到大眾歡迎。他的漫畫系列《發明家》異想天開地表達用複雜機械完成簡單任務的可笑設計,想不到因此而聞名於世。他畫了許多用極其複雜的方法從事簡單小事的漫畫,贏得了許多讀者的喜愛。比如把雞蛋放進小碟子這種事,在戈德堡筆下大概是這樣的:乙個人從廚房桌子上拿起晨報,於是牽動了一條打鳥籠的線,鳥被放出來,順著鳥食走向乙個平台。鳥從平台摔到乙個水罐上,水罐翻倒,拉動扳機,使手機**。猴子被槍聲嚇得把頭撞在系有剃刀的杯子上,剃刀切入雞蛋,打到雞殼,使雞蛋落入小碟子中。如今,「rube goldberg」己成為「簡單事情複雜化」的代名詞。

譯註②:麥吉弗(macgyver)是20世紀80年代在美國熱播的冒險題材連續劇《macgyver》(中文譯名《百戰天龍》)的主人公,麥吉弗是個足智多謀的人,擅長用普通生活用品作為工具幫助自己和搭擋擺脫困境,常常是一把一刀走天下。他擁有廣博的知識,還有一套特立獨行的「麥吉弗主義」,憑著過人的智慧型,化解各種危機。