標籤:

含德之厚

在知乎上申請的這兩個專欄(「道德經直譯」和「軟體構架設計」),經常讓我精神分裂,每個寫的文檔我都不知道讓它屬於哪個好。我常常借道德經的概念證明我的構架設計理念,反過來又用構架設計的理念來證明道德經的概念。但這兩方面的讀者常常又是不同的,這在寫作的時候很容易讓我把腦子亂掉,最後權衡厲害,我就的策略是:隨便吧,愛誰誰:)

什麼是含德之厚呢?我覺得要理解好這個概念,應該先理解好另一個概念,什麼叫「數窮」?大家玩過2048這個遊戲嗎?

這就叫數窮:

能機動的都被你機動完了,怎麼玩都是個死字,這就叫「數窮」,已經沒有小狡猾可以玩了。什麼是不數窮呢?這樣:

大把餘地,想怎麼玩就怎麼玩。想死都不容易,這就是「含德之厚」。我們做戰略,千方百計,都是讓自己含德厚。所以我們走大路,不走鋼絲。走大路無名,不牛逼,但走大路有無數的餘地可以面對未來的風險。時間總是在前進的,包袱總是越來越多,如果我在剛開始的時候就耗盡我的餘地,後面就沒有什麼「機數」可以用了。

所以我們喜歡這樣的狀態:

走到相當的高度了,但還有很高的自由度。這就是含德之厚。

所以,為什麼做戰略這麼強調「慈」和「儉」,「慈」和「儉」是不把「機數」用盡。讓自己擁有更高的自由度。為了寫這一篇,我先用了前一篇「報怨以德」來做準備,你可能以為,老子報怨以德,壞人不會得到報應了,但各位可注意到道德經是怎麼說的?「常有司殺者殺。夫代司殺者殺,是謂代大匠斫(zhou2)。夫代大匠斫者,希有不傷其手矣」。聖人不來殺你,是為了不傷手而已,你以為沒人殺你?

我以前談過構架設計的基本策略:反者道之動--欣賞架構設計的基本邏輯 - 知乎專欄 ,裡面談到的「控制熵增」,其實本質也是這個道理,是要保證不要早早把「機數」耗盡了,為無所謂的目的而把自己的餘地全部消耗了,這樣的東西就不會長久。

餘地是用來解決關鍵問題的,不是用來求禮的。如果你用來求禮,就怪不得為什麼自己是個小人。

很多人覺得我解釋道德經解釋得很簡單,覺得自己懂了,在那裡夸夸其談,卻不知道這些只是照出自己的無知。我以前給一個產品介紹開源的原理。有個工程師問我,Linus Torvards經常在網上罵人,是不是因為現在他已經控制不住Linux了,所以需要通過罵人來刷存在感?

我心裡不由得說,你真是外行以小人之心度君子之腹。Linux兩個半月一個版本,每個Open Window 2000(好像是1000,無所謂了,差不多吧)一級開發者(這意味著背後還有不知道還有多少公司在撐腰)向裡面提交代碼。還有幾個軟體有這樣的演進速度啊?你也不看看多少嘻嘻哈哈一片平和的著名開發社區現在越走路越窄的?

如果你們要理解Linus是個什麼人,應該好好去聽聽他在DebConf14上的Q&A(網上應該有視頻),那裡深刻地給你展示了Linus是個什麼人。那個演講有好幾個地方值得關注的:

第一,有人問他,Debian做什麼特性,會讓你喜歡?Linus說,我不太關心發行版給我做了什麼,我有自己的生活,發行版也不是給我做的。

第二,有人問他,我們在社區中一起努力,不是應該互相尊重的嗎?這已經明顯在暗示Linus老罵人了。Linus說,每個人有自己的性格,我們不強求別人是什麼性格,就我個人來說,我和我喜歡的人合作,社區的其他人,也應該可以找到自己喜歡的人來合作。也許有人喜歡互相尊重,禮貌地交談。但我個人認為,「尊重」,你要自己earn it,而不是ask for it. (信不足焉,有不信焉)。但即使如此,「我認為,(你喜歡工作在一個互相尊重的環境中),it just fine,你可以找另外的人合作,社區(比如Linux)不會拒絕的」

第三,說到glibc的介面標準化問題,Linus諷刺了半天,說自己在內核中大力保證了介面的兼容性,而glibc就一天到晚因為標準問題而更改兼容性。他甚至很武斷地說,如果有人依賴一個bug,那麼這個就不是bug,這是個特性!這些話,如果細究,其實都是有問題的。在討論中,很多人都不接受這些觀點,但他們一方面考慮這個問題,一方面卻不會因為他這樣說而不去解決具體問題。而且我認為在討論中,那些人也讓Linus接受了這個東西的難處了。如果你不明白什麼是「民不畏威,則大威至矣」是什麼,這就是了。

所以,很多人以為「慈」,「儉」,「不為天下先」是有樣子看的,有樣子看的就不是「大」了。天下皆謂我道大似不肖。夫唯大故似不肖。若肖,不久矣。整天做出一個隨和老頭的樣子就是「聖人」了?那是名!那是眾矢之的好吧?只要你個人有利益可圖,你就是可以被獨立突破的對象,你就是破綻了。化身天下,是把你個人殺了,你的戰略都不會死。所以你才是含德之厚,沒有必要把你殺了。

所以,「聖人」眼中是不看「名」的,你聖人追求的是「利」而不「害」,「利」是真切的「利」,不是你小心思里的那個「待人隨和」的那個「名」。利是「樂與餌,過客止」那樣的「利」,是能吃進肚子里的,不是表面的Nice。Linux天天罵人,無數公司還是屁顛屁顛送代碼過去,那是什麼?那是「利」!

你以為Nice是利,那因為你還是把那個「名」捧在手上愛不釋手吶。

至於剛剛開始做事的學生,還是好好學習知識,道德經這種東西不會適合你的。


推薦閱讀:

讀《代碼不朽:編寫可維護軟體的10大要則》C# 版
Logging,Metrics 和 Tracing
理解架構版本
如何成為一名軟體架構師?
使用 caddy 作為微服務的 API gateway

TAG:软件架构 |