小小樹葉,藏著哪些技術之道?你一定沒想到

阿里云云棲社群發表於2019-01-19

640?wx_fmt=png

阿里妹導讀:一花一世界,一葉一菩提。境由心生,你心裡有什麼就能看到什麼。牛頓痴迷科學,從蘋果中看到“地心引力”;阿基米德洗澡看到水面升起,發現浮力原理。今天,我們一起來看看,在阿里資深技術專家燕標的眼裡,樹葉和技術究竟有何相似之處。


樹葉的故事


宋國有一個人為國君用玉雕刻楮樹葉,花了三年時間才完成。樹葉無論是輪廓還是紋理光澤都惟妙惟肖,扔在真的樹葉中也完全分辨不出來。這個人就因為這個手藝而在宋國得到一份俸祿。列子聽到了,就說:如果天地長養萬物,要三年才能生成一片葉子的話,那天下有葉子的東西就很少了。所以明智的人依賴道來化育萬物,而不依仗智力和工巧。


注:宋人有為其君以玉為楮葉者,三年而成。鋒殺莖柯,毫芒繁澤,亂之楮葉中而不可別也。此人遂以巧食宋國。子列子聞之,曰:“使天地之生物,三年而成一葉,則物之有葉者寡矣。故聖人恃道化而不恃智巧。”——列子 · 說符


640?wx_fmt=jpeg


這是一個很有意思的故事。每年春生夏長,天地間長出無數樹葉來。相對於那個工匠,其效率豈可以千倍萬倍計算。如此看來,天地一定掌握了我們所不知道的祕密,所以才能呈現出這麼一個花繁葉茂的世界。列子稱這個祕密為道。但是這個道到底是什麼呢?


首先的猜測,生長樹葉的這個道一定是非常簡單的。因為唯有如此,一棵樹上才能同時長出千萬片葉子。到底有多簡單呢?我們還不知道大自然的樹葉生長之道,不過我想可以用一個近似的東西來類比一下。


下面的圖形是在混沌理論中著名的曼德布洛特集合分形圖形。這個圖形總體的輪廓看起來像一片葫蘆形的葉子,上面還長著許多小的葫蘆,結構並不複雜。但是如果不斷深入細節,就發現它實際上具有非常豐富的結構。在某些區域性我們可以發現類似樹葉的經絡的結構。在深入細節的過程中,我們還會不時發現小葫蘆的形狀,類似於最大的葫蘆,而又不全相同,具有自相似性。最後的動畫可以讓我們一睹奧妙。


640?wx_fmt=jpeg

640?wx_fmt=jpeg640?wx_fmt=jpeg

640?wx_fmt=gif

如果要畫家來畫如此精細而變幻無窮的圖片將是一件非常費時費力的工作。但是數學家們卻為如此豐富的結構和圖案,找到了一個復二次多項式來表示:

640?wx_fmt=png

其中c是一個復引數。對於每一個c,從開始對fc(z)進行迭代。序列的值或者延伸到無限大,或者只停留在有限半徑的圓盤內。曼德布洛特集合就是使以上序列不延伸至無限大的所有c點的集合。如果要用計算機來進行最簡單的迭代計算,程式碼應該在10行左右,從原理上講是非常簡單了。

 

從資訊理論的角度講,簡單的公式中蘊含影像的所有細節。不過要在計算機上產生如上非常精確的影像細節是一個非常耗費時間的計算過程。要判斷每一個點最後是否能收斂所需要的迭代次數是不確定的。因為著名的蝴蝶效應,相鄰兩點間的計算結果是沒有辦法進行借用的,因為小小的初始差異就可能導致結果非常大的差距。要畫出圖形的輪廓可以很快,但是要求的影像越精細,則迭代次數要越高。以前就看到有高效能運算團隊就用這個影像產生的過程來演示平行計算框架的加速效果。

 

類比兩個例子,我們可以猜測樹葉的生長也是基於某一個規則。並且從某種意義上講,樹葉的生長也是一個計算的過程。每一片樹葉就是一臺計算機。這臺計算機要經歷一個春天把樹葉畫了出來,但是能耗低。如果你仔細觀察周圍,你會發現很多動植物身上和自然界的現象都具有類似的分形結構。自然界在無比豐富的表象後面控制的規律實際非常簡單,實現了簡單和豐富的完美統一。大道至簡,信哉斯言!

 

樹葉的生長,對於我們的工作,特別是產品的設計和開發,有哪些啟示呢?下面是一些不成熟的想法的總結。


啟示和思考


產品的研發過程,實際上也就是產品的不斷生長的過程。每個產品基本都會經過多個版本的迭代,功能不斷完善,場景不斷豐富。這個和生物的生產過程有很多類似的地方。要設計開發一個產品是每個人都覺得具有挑戰性的工作。我們是像那個工匠一樣花三年時間來精雕細琢一片樹葉呢?還是像天地四時一樣順乎自然地長出一個產品出來?

 

採用工匠的思路來工作,可能也可以開發出產品,但是故事中的工匠無論如何努力只能做到形似,而不能神似,因為他雕刻的葉子是沒有生命的。一個好的產品並不是一堆功能的堆砌。自然生長出來的產品才會具有生命力和活力。所以,我們需要脫離工匠的思路,回來找到那個道來,能夠像自然界一樣長出一個產品來。

 

泛泛的談論道是一個很虛的東西。不過如果具體到某一個具體的領域,則每一個事物都有一個事物產生和發展的道,或者稱為規則,是支配事物發生發展的根本。這個根本在不同情況下有不同的名字。生物學稱之為基因,在幾何學稱為公理,物理學上稱為定律。埃隆 · 馬斯克推崇為第一性原理。第一原理的思考方式,就是不斷深入挖掘,直到你找到了最根本的真相[1](First principles thinking requires you to dig deeper and deeper until you are left with only the foundational truths of a situation。)。

 

亞里士多德最早提出了第一原理,定義為每個系統中存在的一個最基本的命題,它不能被違背或刪除。這個定義還是比較抽象。幾何學的公理體系可以用來類比理解第一性原理。歐式幾何的基本就是五條公理。這五條公理缺一不可。所有的定理都是基於這五條公理推理出來的。要知道一個假設是否正確,就需要從公理和已證明的定理出發,通過證明過程來判斷假設是否成立。就是基於這五條公理,歐幾里得構建了一個嚴密的幾何學大廈,成為後人敬仰的典範。

 

我們產品開發就是解決某一個方面的問題。我們所開發的產品和系統,實際上也類似一座大廈。要讓這座大廈能夠屹立不倒,並且能夠不斷豐富和發展,也需要我們回到根本,利用科學的精神和工程化的態度,為產品的設計和開發樹立牢固的根基。沙灘上建摩天大樓,終究會坍塌的。第一性原理對於產品的研發具有重要的意義。 

 

產品的根本原理當然不能找到一個二次多項式來表示,但是也應該不會太複雜。例如歐式幾何的公理只有五條。一般的產品的基本原理也該也在這個範圍內。現在的關鍵是如何回到根本,發現這些基本的原理。這需要一個比較艱苦的摸索的過程,也是最具有創新意義的工作。

 

產品的演化過程,就是一個對於第一原理不斷提煉和昇華的過程。一方面是因為我們難以一次就真正達到根本,隨著認識加深了我們要不斷提煉。正如近代歷史上從經典牛頓力學到相對論到量子力學的發展過程一樣。另外也是因為外部條件和環境有了變化,我們需要對已有的假設進行修正。

 

產品的基本模型,應該包括如下部分:


  • 基本概念

  • 外部市場環境的分析=>核心假設=>基本設計理念=>核心模型


基本概念和假設的提取往往是最關鍵的。


簡單的威力


第一原理的威力,來自於其簡單。以簡馭繁,雖繁不亂。產品設計需要頭腦風暴進行發散性思維,但更需要嚴謹的推理。以根本的原理作為基礎來進行推理,才有可能為產品設計打下基礎,不會導致掛一漏萬,並且也更加有法可循,不是完全隨機的思維。基於第一原理進行頂層設計,產品間的協作也可以更加清晰有條理。


任何一個產品都是多個崗位、多個個人互動合作的結果。分工合作是產品開發的常態,在現代技術背景下也是必須的。但是如何讓一個團隊能夠避免只見樹木不見森林,一個產品的基本設計思路和原理的不斷完善和提煉也是凝聚團隊向心力的最有效的手段之一。


使用者覺得產品不好用,往往不是因為一個介面的得失,顏色的美醜,而是因為產品是否能夠幫助使用者建立一個協調一致的心智模型(Mental Model)。第一原理有利於讓我們保持系統的一致性。有了基本原理,就可以判斷某個新功能是否重要,優先順序是否高。否則系統就是功能的堆砌,系統的可擴充套件性和一致性都無法得到保證,元件間的相互互動產生的效果就是無法預測的。

 

我們開發產品,是為了為使用者提供價值,最重要的是能夠給使用者提供新的理念和思路。我們要傾聽使用者的需求,但不是簡單地支援它,而是需要歸納到根本的原理上去,通過產品內部模型的完善和豐富以及知識的積累,積累對使用者的價值。基於根本的原理,提取產品理念,給使用者講故事,用新的思路和方法來改造使用者,提供系統的解決方案,打動客戶,才是最有效的營銷之道。

 

產品不斷演化的過程,也是產品創新的過程。第一原理有助於我們面對快速變化的市場,實現創新。同一個產品,隨著市場情況的變化,對於其基本的假設需要不斷回過頭來進行審查,看是否仍然成立,是否需要修改。如果僅從表面的功能出發,無法實現有意義的創新。創新需要對問題域的深度理解和認知。需要我們跳出原有的認知侷限,從全新的維度去思考,尋找新的商業機會。敢於挑戰自己的成見,善於打破自己定下的規則,從這裡才能夠做出順應潮流的變化。以系統重構為例,電商平臺的演化歷程就非常清晰地說明了這一點。每一代電商平臺都是因為新的技術條件和新的業務需求的雙重變化之下,打破原有的架構而開發出新的平臺。

 

世上沒有兩片相同的樹葉。因為控制樹葉生長的機理雖然相同,但是因為樹葉長的位置、時間、氣候各不相同,所以葉子形狀只是相似,而不完全相同。自然界同時兼顧了簡單性和靈活性。如同樹葉一樣,每一個客戶也都是獨特的。回到根本,我們才擁有如大自然般的靈活性,以共性為基礎提供定製化能力,實現千人千面的效果。

 

總結起來,對產品的深層原理挖掘,應該有助於達到如下幾個目的:


  • 凝聚團隊內部的意志,明確方向。方便協作,做好頂層設計。

  • 給使用者明確的心智模型(Mental-Model),有助於建立良好的使用者體驗。

  • 明確給客戶傳輸的先進的理念,方便營銷。

  • 明確演化的路徑和思路,對於歷史和未來都有理有據。

  • 足夠的抽象,保持系統的靈活性,千人千面,優化不同客戶體驗。


小結


這裡寫的只是一點不成熟的體會,沒有來得及結合實際的產品設計展開說明,許多觀點還有待討論,如何落實也是一個值得思考的問題。之所以還是寫出來,是因為參加產品討論會,經常看著琳琅滿目的產品大圖和功能列表,卻無法對於產品的設計思路和發展階段有一個清晰的判斷,因為這些都是表面的東西。對於產品更重要的是系統性深入的思考。論語上說:君子務本,本立而道生。抓住了產品的第一原理,我們才可以不迷失在複雜的功能中。我們面對的問題是複雜的多樣的。需要我們用科學的精神和方法,研究實際的工程問題。科學的進步標誌是發現新的定律。產品進化的標誌也應該是對問題域認識的深度和廣度。不忘初心,方得始終。時時回到事物的根本,我們才能看得更清楚,走得更遠。


REFERENCES

1. https://jamesclear.com/first-principles 

2. https://en.wikipedia.org/wiki/Mandelbrot_set 



640?wx_fmt=gif

你可能還喜歡

點選下方圖片即可閱讀


640?wx_fmt=jpeg

今天1024,什麼會引起程式設計師的強烈舒適?


640?wx_fmt=jpeg

阿里巴巴為什麼選擇Apache Flink?

640?wx_fmt=jpeg

關注「阿里技術」

把握前沿技術脈搏

相關文章