在工作中,我們有時會遇到這樣的情況:大家開會討論一個問題,主講人先給大家講講具體情況,講了很久,大家就是找不到那個關鍵線索。聽眾里脾氣大一點的人往往會說:“你能說重點嗎?”如果那個主講人脾氣也大點,就會發生言語沖突,最后弄得不歡而散,而那個討論會只能不了了之。
作為主講人,當然很想避免這樣的尷尬問題,但又不知道從何下手。作為聽眾,我們也想能從雜亂無章的信息中提取出關鍵信息。我們先看一個有點讓人抓狂的講話例子,從中分析原因,之后再想解決方法:
【讓人抓狂的原因】
某人說:“上個星期我去了趟蘇黎世。你知道,蘇黎世是一個比較保守的城市。我們到一家露天餐館吃飯,你知道嗎?在15分鐘里我至少見到了15個留長胡子的人?!?,如果你在紐約的任何一座寫字樓周圍轉一轉,你會發現幾乎沒有不留長胡子或長頭發的人?!斎?,留長胡子在多年前就已經是倫敦街頭的一景了。”
我第一次看到這段話時,真有一種不知所措的感覺。我在想:說話者是在比較哪個城市更保守嗎?或是在比較露天餐館、寫字樓和街頭嗎?他認為留長胡子是保守,還是不保守?……總之,我對于說話者說的每一個字的字面意思都懂了,但就是無法理解說話者的真正意圖。
這是為什么?
某些科學研究表明,沒有前因后果的信息只能存到大腦的臨時存儲區域,有前因后果的信息能夠存到大腦的長期存儲區域。因此大腦在獲得信息的時候,會嘗試捕捉這條信息的目的是什么、會造成什么結果,這是為了把信息盡可能存到大腦的長期存儲區。而在這個例子里,說話者一直沒有把目的、結果明示出來,我的大腦就不得不自己去推測,但就像剛才提到的那樣,我的大腦自動推測出的結果有很多,就是不知道該存儲哪個,于是大腦傻在那里了。
我能怎么做,才能讓變傻的大腦再變回來?
【如何提煉抽象】
我的方法是按照如下順序做提煉和抽象:信息->梗概->意圖->本質。
我們看,那段雜亂無章的文字就是一系列信息,而信息總是有一個梗概的:在蘇黎世、紐約、倫敦,經常能見到留長胡子和長頭發的人。
在提煉梗概的過程中,我們發現:在這三個城市的現象是一樣的,因此可以做出歸納提煉,從而得出以上的梗概。
但是,這個梗概只是一個陳述事實的句子而已,從中看不出任何的意圖,沒有意圖的東西很快就會被大腦遺忘,因為它在大腦里只是一個孤立的知識。其實,我并不相信這段話沒有任何意圖,因為既然有人用了不少語氣詞說出這段話來,它一定有隱藏在背后的意圖。為了獲得這個意圖,只看梗概是不行的,我需要再次回到內容更加豐富的原話中,此時我發現了一些有感情色彩的詞“你知道”、“保守”、“幾乎”,這下我似乎能推斷出:說話者在面對他所看到的這些事實時,有些意外,很可能說話者原本認為留胡子是不被普遍認可的。
因此我可以提煉出他的意圖:男人留長胡子或長頭發,現在已經變得這樣普遍、這樣被廣泛接受:例如在蘇黎世、在紐約、在倫敦。
到了“意圖”的階段,我已經進入到“完全懂”的狀態了,因此大腦產生了長期記憶,同時我可以依據這個意圖去做事情了,例如我留起自己心愛的長胡子、像個藝術家一般去上班。
后來我又發現,我一直認為自己“完全懂”的那個東西,其實還有我并未意識到的深層東西:
留胡子的人,雖然被社會認可了,但是他在別人眼中到底是個什么形象?在一個講究時尚的時代,“大胡子”可能意味著另類,于是大家就缺少了一種文化認同感,自然也就缺乏共同話題?!按蠛印币惨馕吨鴳猩?,因為他懶到連胡子都不刮就來上班,還把“懶散”當作個性展示給同事們。大家會想:如果連刮胡子這種簡單的事情都不愿意去做,其他事情可想而知。如果他是一個不需要和同事協同工作的藝術家,本無可厚非,但同事們需要和他協同工作,誰愿意和這樣的人共事?
歸根結底,這是一個哲學問題,于是我根據如上的這些思考,提煉出了“意圖”背后的那個“本質”:存在不意味著被真正認同。
【本質之后還有本質】
到了哲學層次,比“梗概”、“意圖”層次深刻了許多!
但其實還有一個層次比哲學層次更高,它就是與道相接!在這里請大家注意,“與道相接”這個詞的內涵是深刻的:人類的行為最終都要落到自身的感受上,而這個感受是用文字表達的,建立在這些感受之上的才是剛才提到的本質,“本質”之后才是“意圖”,再之后才是“梗概”。
這里有一個關鍵:“感受”和文字之間是有一個突變的,也就是說,一個是人作為生物的感受,而文字是表達這個感受的,它們之間的連接是非常關鍵的!
舉個例子:“存在不意味著被真正認同”這句話里有一個“不”字,而且“不”字處于這句話的核心地位,因此我們就很有必要研究一下不字。對于“不”字,我們都知道有一個“感受”和這個字對應的,但這個感受是什么?我們去查新華字典,它的意思是“否”。再去查“否”字,它的意思是“不”。查來查去,兩個字的解釋只是互相參照而已,我們從字典中無法獲得這種“感受”的真實涵義。
我們天然地認為“無法獲得不字的真實涵義”是正?,F象,因為我們都知道“不”字代表什么,只是說不出來而已。其實這是不正常的,古代“不”字的涵義比字典里的描述深刻得多,也形象得多,《說文解字》是這樣解釋不字的:鳥飛上翔不下來也。下圖是篆文的“不”字,上邊一橫代表天,下邊有鳥的頭和展開的翅膀,很明顯就是一只鳥向天上飛去的樣子。
古人用一只鳥向天上飛去的場景,來表達鳥的主人的內心“感受”,即便是作為現代人的我們,只要一想起這個畫面,就自然會體會到那種無法用文字表達的感受。這樣從文字直達內心,就做到了與道相接!
【對于寫作者和讀者的巨大作用】
此刻,我們需要總結一下我們到了那里:為了解決說話抓不住重點的問題,我們找出了它的原因在于人腦需要了解前因后果,解決的方法是從雜亂的信息中按照順序提煉出梗概、意圖、本質,本質之后還有文字與自然的貫通,但大多數情況下只需要提煉出意圖即可結束。
但是我們分析到這么深的層次,到底有什么用?
坦白地說,對于普通人,只需要到達意圖的層次就夠了。但是對于寫作者的作用就很大了,用我的方法來分析一下《紅樓夢》。
《紅樓夢》原名叫《石頭記》,哪個名字更好?很顯然是《紅樓夢》,為什么?
梗概:《石頭記》可以理解為“梗概”,因為整本書都在講與通靈寶玉有關的故事。
意圖:那“意圖”是什么?我認為意圖是曹雪芹在感嘆世事無常。
本質:我認為用“好了歌”就可以概括本質。
感受:那《紅樓夢》這個名字到底處于哪個層次?《紅樓夢》當然不是梗概,一樣也不是“本質”,那是什么?其實“紅樓夢”三個字可以對應到“感受”層次,就像不字那樣,讀者一看到“紅樓”兩個字,就會聯想到榮華富貴,再看到“夢”字,就會聯想到原來人間的“紅樓”只不過是一場夢而已,于是那種無法用文字直接表達的感受油然而生,不需要再解釋了。
拋開梗概、意圖這些細節分析不談,我們把視角拉遠,就能看到一個時空感非常震撼的《紅樓夢》:表面上是賈寶玉、林黛玉的愛情悲劇,以及家族的興衰,背面卻是神瑛侍者與絳珠仙草的愛情故事,形成了背面與表面,一陰一陽,提升了作品的境界。更高一次層次的背面是,人生最終都會落到“好與了”的境界,表現出一種立體的美感。更為偉大的是,《紅樓夢》帶給讀者的感受是全方位的,用語言不可能說清楚所有的感受,而每種感受都真實地存在于每個用心去讀這部作品的讀者心中。
你看,在《紅樓夢》這種文學作品中,“本質”、“感受”就起到了巨大的作用!我相信曹雪芹在寫作的時候,一定能夠感受到那種無法用文字直接表達的真切感受,所以他才會“刪改十年”,他才有那么大的熱情,寫出那么多穿越時空、引起共鳴的詩句、人物和場景。
作為曹雪芹的忠實讀者,我們能感受到作品中那種巨大的畫面感、層次感、抽象感,在內心中產生了那種穿越時空的震撼,時間久了,也許就能領悟到《紅樓夢》帶給我們的人生真諦,從而改變了我們的生活也說不定。
相反,如果一個寫作者總是在淺層次思考,他一定感受不到那種“與天地相接”的感覺,讀者自然也不可能感受到,時間長了,他自然也會失去寫作興趣,最好的情況也只是賺點錢而已,無法給自己和社會帶來正向的心理價值。同樣,如果一個讀者,只是在淺層次讀書,時間長了,他自然也會失去讀書的興趣。
【軟件開發領域的架構之美】
在我剛進入軟件開發這一行的時候,就不懂得去欣賞架構之美,只是悶頭干活而已。那時我的感受力被局限在“梗概”階段,只是能從雜亂無章的“信息”中初步提煉出“梗概”,算是能寫出一些代碼,但對上層的“意圖”沒有任何意識。因此有時做出的產品,用戶并不喜歡,另外一個問題是,自己寫的代碼過一段時間自己也看不懂了,更別說讓別人修改我的代碼。
過了若干年,我逐步能達到“意圖”階段了,但當時并未意識到自己到了那個層次。那時我寫出的設計、代碼,別人已經能相對容易地看懂了。我對于“意圖”的理解程度,可以舉出一個例子:大家都在用接口編程,很多人并沒有意識到它的本質是什么,所以實現出來的東西,經常是徒具接口的外表,而沒有接口的實質。我認為接口就是“意圖”編程,因為調用接口的外部使用者代碼,它所能理解的接口只能是站在它的角度去定義的意圖,這里就體現出了“梗概”和“意圖”的本質區別。
大師級人物鮑勃大叔寫的《敏捷軟件開發原則模式實踐》這本書,里面提到了兩條原則:接口隔離、依賴倒置,我認為他并沒有說得太清楚。在這里我可以用“意圖”來解釋,那兩種原則都是“意圖”之下的兩種變化。我的另外一篇文章中也提到我對這兩條原則的理解,那里使用的是“目標”,其本質和“意圖”一樣。
又過了若干年,我自認為已經能初步達到“本質”階段了。我所理解的設計模式是這樣的:每個設計模式的名字都是一個隱喻,這個隱喻就是那個表象,例如橋模式,橋的每一邊都可以單獨變化,而不影響橋的另外一邊,通過橋這個“接口”把兩邊聯系起來。其實這些設計模式的底層本質幾乎都是“接口”,使用“橋”這樣的隱喻來表現各自不同的內在涵義。請注意:這一段提到的接口和上一段的接口不同,上一段是指表象,例如很多編程語言中都有interface這種定義形式,而在這段卻是不具有外在形式的本質。
在設計模式作為頂層的范圍內,設計模式的名字往往就像“紅樓夢”三個字一樣,用一個隱喻把背后的本質表現給程序員看。但是設計模式畢竟還是被更上層的邏輯使用的,更上層的邏輯就是架構,也是更為本質的。架構有一個根驅動力來驅動所有的設計行為,至于何時使用何種設計模式,或者使用何種算法,都由架構來決定。例如在數據庫服務器架構中,為用戶返回的數據順序是隨機的,為什么?因為這樣才能達到大規模集群的高度并發,從而達到最快查詢速度。重新排序當然也可以,但那就是以犧牲性能為前提了。由追求性能還是追求數據規范性,分化出了兩種不同的數據庫模型:分析型數據庫和事務型數據庫。
而架構的那個根驅動力,就是軟件與軟件之外世界之間的連接,也就是與自然界的連接,這個才是軟件的本質!
【結束語】
我們每天都在學習知識,但很多時候感受不到樂趣,只是因為工作的需要,我們才去學習。但如果我們能在那些顯性知識的表象之下,發現其本質,也就是隱性知識,我們就會體驗到那種由衷的快樂!我就有切身的體驗,即便這種知識被大家認為層次不高,我仍然會體驗到快樂。這是因為提取出本質的知識一般都具有戰略意義,而原本不被大家看重的知識,一旦具有了戰略意義,大家自然就會看重它。這就是“抽象、哲思、與道相接”的魅力!
----------結束----------
作于2017-5-7。
我的相關文章:
《快人十倍的秘訣:一個初學者和一個資深者的對話:融會貫通續》
《一樣東西能讓你的表達力熠熠發光:層次感一樣東西能讓你的表達力熠熠發光:層次感》