「涌現式」 產品架構設計

2024年3月2日 18点热度 0人点赞

文|輕流CPO嚴琦東

去年我們開始組織兩個活動,一個叫「超級星企」、一個是「輕朋好友聚一聚」。這兩個活動有一個共同的目的:輕流的「搭建者」人群一個發聲和交流的平台。

通過這個平台,一方面同行業不同行業的搭建者可以互相交流搭建經驗,分享自己設計的系統的經驗。這個過程中讓我很驚訝的是:

搭建者對於系統功能的運用遠遠地超出了設計者的預期。

從服務業到互聯網再到製造業,在不同行業的業務專家手裡,輕流展現了無數種功能組合方式,用戶產出了大量之前從來沒見過的系統形態。


一直以來我都對這種現象非常地好奇,但找不到一個詞來形容這種現象。

直到去年我在玩一款游戲的時候找到了類似的感受,這款游戲叫「塞爾達傳說-王國之淚」。在這個游戲裡面,你可以通過一個叫「究極手」的能力,將游戲中幾乎所有的物品進行設計組合,從而拼裝出例如載具、橋梁甚至機器人等等。

於是我花了點時間研究了一下這款游戲的設計思路。找到了很多分析視頻,其中有一個詞很高頻地出現,這個詞叫:「涌現式設計」

「涌現式」的現象在我們所感知到的世界中非常普遍存在,這源於我們對於世界的特殊的理解方式。這一篇文章我盡可能地介紹什麼是「涌現式設計」,同時也會結合輕流的實踐讓大家更好地理解這套方法論如何在軟件設計領域落地;


抽象:人類最主要的理解世界的方式

首先我想先介紹一下人類是如何理解這個世界的。其中最常用的方法是「抽象」

「抽象」是一種降低復雜度的綜合性方法,通過這種方法人類把所觀察到的現象的基本特徵凸顯出來。

軟件設計的目的是通過抽象的方式把在現實世界中所觀察到的實體基本特徵表達出來。

例如微信抽象了現實世界中「交流」;天貓淘寶則是抽象了現實世界中的「商場貨櫃」。

所以軟件世界的豐富程度很大程度上是依賴於現實世界中實體的豐富程度。

「抽象」往往有三個步驟:

建模:降低對於這個世界理解的復雜度;

「抽象」的第一步是「建立模型」,主要表現為通過語言和符號表徵索要研究的現象和系統的過程,最直接的表現是命名;

例如把符合某個特徵的東西命名為「石頭」,盡管這些東西在形狀、顏色、材質等方面千差萬別,但是大腦卻可以抽象他們的共同特徵。這是人對於世界進行心理理解的重要一步。

再比如輕流的定位是:面向業務人員的系統快速開發平台。這個定義的過程就是對於一個事物本身進行了建模。

聖經中記載神造人之後讓人做的第一件事情就是給萬物起名字:

耶和華 神說:「那人獨居不好,我要為他造一個配偶幫助他。」耶和華 神用土所造成的野地各樣走獸和空中各樣飛鳥都帶到那人面前,看他叫什麼。那人怎樣叫各樣的活物,那就是它的名字。那人便給一切牲畜和空中飛鳥、野地走獸都起了名;(創世記 2:18-20 和合本)

分層:降低所建立的模型的復雜度;

完成建模之後,為了更好地理解它,我們會從觀察維度上對所建立的模型進行結構分層,其中的每一層都會通過適當的抽象與上一層建立關系;

在物理學、計算機領域、軟件工程等領域都被廣泛運用。下圖為 ChatGPT 給出的物理學的分層:

結合輕流本身,作為一個開發平台,我們將它拆解為了平台層、引擎層、組件層、屬性層

屬性作為用戶操作的最基本操作單元構成組件,每一個具備業務意義的功能單元構成引擎,為數不多的引擎對開發範式對業務人員進行重定義從而構成整個開發平台;

通過分層一個模型的基本框架就初步建立起來了,通過分層我們可以清楚地理解一個模型是如何運作的。

模塊化:降低每一個層級的復雜度;

完成分層後,為了進一步降低每一個層級的復雜度,人類傾向於在每一個層級通過模塊化的方式進一步完善模型。德謨克利特提出的原子假說認為自然是由原子組成的。物理學和化學的發展就是這種「原子假說」的最好證明。

模塊化主要表現在:

  1. 當前層級是由類型數量有限的模塊組成的;
  2. 每一類模塊具備單獨不重復的特性;
  3. 每個模塊可以互相組合會在高層級表現出新的屬性。

這幾個點單獨理解可能有些不太好理解,同樣回到輕流本身。輕流的門戶引擎的最基本單元其實就是一個個的門戶組件,每一個組件的功能獨立且不重復:

  • 宮格組件提供一個系統應用的快速訪問入口;
  • 報表組件可以將零散的可視化報表整合在一個界面觀看;

每一個層級只有模塊是不夠的,設計好模塊之間的「關系」(如何互相作用)也非常重要;門戶作為交互界面的開發引擎,組件與組件之間的關系主要有:位置關系、大小關系、數據關系等等。通過這些關系的設計,讓組件的組合模式具備非常大的想象空間。

在這件事情上,樂高做到了極致,樂高對於模塊之間「關系」的設計幾乎是最優的解決方案了,積木之間只有少數幾種連接方式,但是一個 3 歲的小孩就可以在沒有什麼學習的情況下完成個各個角度各種方式的組合。

通過對每一個層級的組件的結構化整理,我們可以很快降低整個系統的設計復雜度,同時也在客戶側達到不錯的一致性,降低使用復雜度;


涌現現象

上面我介紹了「抽象」的基本框架和方法。主要包含:建模、分層、模塊化三個步驟。

通過抽象我們能夠降低我們理解世界的復雜度。如今在各種專業領域被普遍運用的架構圖就是「抽象」方法的重要實踐運用。在軟件領域尤其,下圖我展示了輕流的產品架構圖:

輕流架構圖

前面說到,人類為了理解現實世界,進行了大量的「抽象」。通過對各種各樣抽象後的概念進行觀察,我們會發現一個很重要的特點:

「我們無法通過低層級的模塊特性來解釋高層級的模塊特性」;

例如,即便我們了解了氫原子的所有特性,通過氫原子和氧原子的組合相互作用,水分子所表現出來的是完全不同的新特性。同樣的情況也出現在對於大腦的研究中,即便我們能夠觀察到神經元的所有運動,我們依然無法理解和預測「心理以及意識」的產生。

而這種現象就是我想說的「涌現現象」

我們有能力將復雜的現象抽象成簡單的概念結構,但是並沒有能力從這些簡單的概念結構組合得出整體的所有性質。

一個好的產品架構能夠讓創意涌現,你並不需要將功能進行窮舉,用戶依然可以涌現出大量超出設計者預期的使用方式。

你可以嘗試用這套抽象的方法論(建模、分層、模塊化),重新審視自己產品的架構。

封面圖為 ChatGPT 繪制,名為《抽象》