面對複雜問題時,系統思考助你理解問題本質
來源:阿里技術
這是2023年的第39篇文章
( 本文閱讀時間:10分鐘 )
隨著業務的持續發展變化,業務不可避免的越來越複雜和難以理解。本文將為大家介紹一個幫助自己全面理解複雜系統的工具:“系統思考”,希望對大家有所幫助。
01
正視複雜性
我們必須承認這個世界原本就非常複雜,就像以我們現在的科技仍然不能精確預測天氣、不能有效控制經濟形勢異常波動一樣,任何試圖浮於表面、疏於投入就想了解並解決一個複雜問題的傲慢做法,最終都只能接受無情的打臉。
以阿里當前的業務為例,隨著市場規模的擴大、使用者群體的多樣性、公司組織的持續膨脹和細分、產品歷史包袱的累積,我們的業務不可避免的越來越複雜和難以理解。就像著名的熱力學第二定律(熵增定律)所解釋的那樣,只要沒有外界系統的做功(我理解是一個顛覆性的業務模式),我們當前的系統就無可避免的持續熵增。
但作為在業務線工作的一員,更加全面地理解我們手上的業務邏輯是我們能做好工作的基本條件,我們肯定不能滿足僅僅是點狀理解的一些資訊,也不能接受理解一個業務只能依賴長時間的工作經驗,所以這裡給大家介紹一個幫助自己全面理解複雜系統的工具:“系統思考”。之前嘗試用它來幫助自己梳理手上的業務邏輯,有一定的作用,因此做了這個入門總結,希望對大家有所幫助。
02
什麼是系統思考
2.1 我們的思考誤區
先回憶一下,從很小的時候起,我們接受的教育是怎麼讓我們解決複雜問題的?
是的,就是透過拆解,把一個複雜問題拆解成多個不那麼複雜的問題,再把不怎麼複雜的問題繼續拆解成簡單的問題,最後透過解決一個個的簡單問題進而解決原本的複雜問題。
這個方法是非常了不起的,我們把世界分割成一個一個的片斷加以分析後再合併、還原,其思維方法遵循如此簡單的法則:“部分之和等於整體”。這種拆分的思考方法在大部分情況下都比較有效,它讓人產生了幻覺,誤以為這世界是由一個個的個別事件堆積而成,看不見普遍存在的、整體複雜的關聯、互動作用,從而導致人類行為的短期性、盲目性和災難性。就像“盲人摸象”、“快思考”等都指出這種思考方式的侷限性,所以在我們的工作中,如果僅僅秉承著“拆分”的方法,是不能解決真正複雜的問題的。
所以我們這裡介紹一個從整體系統的角度思考複雜問題的方法:“系統思考”,本文的核心思想主要來自兩本書:《第五項修煉》、《系統思考》,大家如果看完本文,覺得還有點意思,可以再看看這兩本書深入瞭解一下。
2.2 什麼是系統
在介紹“系統思考”之前,我們先確認下什麼是“系統”。
“系統”都是複雜的,但並不是任何看上去“複雜”的東西都是系統,在我們討論的範圍裡,一個規模龐大的衣櫃、一發炮彈、一大束鮮花都算不上是一個“系統”。
系統是指一組相互作用、相互關聯、或相互依賴的部分組成的複雜而又統一、具有特殊目的的整體,系統會擁有其單獨部分不具備的特徵。
我們說的“系統”都是動態的,比如下面的足球隊、龍捲風、蜂群都能稱之為一個“系統”。
系統一般有三個核心特點,多個部分、相互依賴、特有目的:
系統一定是由多個部分組成的,如果只有一個部分,一定不能稱之為系統;
各個部分之前必須相互有依賴關係,單獨的部分不能獨立發揮它的價值;
所有部分整合在一起有它的目的,雖然有的時候自然和社會系統往往難以確知它的目的。
2.3 什麼是系統思考
對什麼是“系統”達成一致後,我們來看一下什麼是“系統思考”。為了好理解,我們把系統思考擴充套件成三個不同的思考概念,可以理解為“系統思考”是同時具備這三種思考模式的一種方法:
深度思考:不能停留在現象的表面思考,要能從現象深入到問題的背後,找到問題的本質。
全域性思考:不能單點、區域性地看待問題,要能站遠一點,看到問題的全域性。
動態思考:不能停留在某個時刻看問題,要理解每個人、每個業務之間都是動態變化的。
系統思考不僅僅是一個概念,更是一套思考問題的方法論,下面重點介紹這套方法論是怎麼操作的。
03
系統思考的工具和方法
首先我們舉個例子,下圖左邊這個人接水的場景就是一個典型的系統,那我們可以怎麼描述這個系統呢?
“一個人正在接水”?太簡單,沒有描述清楚這是一個什麼樣的系統;
“一個人左手控制水龍頭,右手拿杯子在接水,眼睛在觀察水位情況”?還是覺得缺少結構化,沒有能清晰得描述出這個系統中各個部分之間的、動態的、依賴的關係。
我們再看右邊這個抽象的結構圖,每個節點都是系統中的一個變數,不同變數之間形成了關係,透過這個圖,我們能理解在系統中不同部分之間是怎麼相互依賴和影響了,我們可以預料系統可能的走勢,也可以進一步思考怎麼在這個系統中施加作用而影響系統的走勢。
基於上面這個描述系統裡各個部分相互作用的因果邏輯圖,我們引入“系統思考”裡的一個最重要的工具:因果迴路圖,下面我們就來講一講這個因果迴路圖的畫法。
3.1 因果迴路圖
一個用來描述“系統思考”的因果迴路圖一般由三個部分組成,分別是:
變數:變數是我們建模的系統結構裡的因素,它的值是隨時間而變化的,一般是個名詞;
鏈路:變數之間可以形成鏈路,這個鏈路是形成因果邏輯的鏈路(一個變數的變化影響另一個變數);
迴路:幾條鏈路可能形成迴路。如果從變數A到變數B有一條鏈路,當從變數B到變數A可能透過一系列其它變數也有一條鏈路時,就形成了迴路。
3.2 兩種迴路模型
找到系統中的迴路是“系統思考”的重要抓手之一,所以我們會重點講講迴路。我們有兩種最典型的迴路,一個叫“增強迴路”,一個是“平衡迴路”:
增強迴路:Reinforcing loop,一個迴路中的變數增加或減少,會影響這個迴路中的所有鏈路持續增加或減少,發展的趨勢不受控制,我們常見的類比說法比如“惡性迴圈”、“強者恆強”等等就是增強迴路導致的;
平衡迴路:Balance loop,一個迴路中的變數增加或減少受到系統中其他變數的反向影響,使得這個系統中的變數在長期的維度會表現出一種保持平衡的狀態,比如最常見的例子是,豬肉如果大幅度漲價,就會有更多的人加入到養豬的行業,第二年的豬肉就會應為供應充足而降價,最終長期看價格會維持在一個平衡的狀態。
後面的迴路裡,我們會用“R”表示增強迴路,用“B”表示平衡迴路,在鏈路中,會用“+”表示變數之間的正向的影響,用“-”表示變數之間的負向影響。
3.3 迴路上的時延
在因果迴路圖中還有一個非常重要的概念就是“時延”。
一個變數的變化影響另一個變數並不一定是馬上生效的,他們之間的關係有可能存在時延。一個大家在日常生活中很容易遇到的例子就是調節洗澡水的溫度問題(特別是來到一個不熟悉的環境裡,如賓館),怎麼調到一個適合自己的水溫並不容易,要不就是水溫過高,要不就是過低,這背後就是水溫調節器和實際水溫變化中間存在“時延”導致的。
在因果迴路圖引入時間概念之後,我們在鏈路之間增加一個“||”的符號代表這兩個變數之間的因果關係存在時延。
時延在工作中最典型的例子比如:招聘對專案人力缺口的影響、程式碼單元測試對產品質量的影響、學習對工作能力的影響等等。對時延的感知也是幫助理解系統複雜性的重點之一。
04
系統思考的5個基礎模型
如果現在大家對系統思考最基本的工具“因果迴路圖”有了理解之後,我們就可以參考軟體開發領域裡的“設計模式”(Design Pattern)思考一下,系統思考是不是也有一些常見的模型。
是的,因果迴路是有一些常用、特定的“套路”,這些套路就是我們常說的“模式”,這裡我們介紹五種最有代表性的基礎模型。
4.1 飲鴆止渴
“飲鴆止渴”描述了我們是怎麼在進度的壓力下一次又一次地放棄了自己的堅持,因為鏈路上的延遲,讓我們心存僥倖,最後使得我們的系統揹負了沉重的技術債的。
4.2 捨本逐末
“捨本逐末”描述了短期表面方案和長期根本方案之間的衝突,因為增強迴路的存在,使得我們不能對“效能最佳化”這個根本的方案提高優先順序,最終上癮於短期表面方案。
4.3 目標侵蝕
“目標侵蝕”描述了我們怎麼在完成目標的壓力下,放棄了做爭取的事,而是透過直接降低目標來達成目標的。真實的“加速”措施通常需要更長的時間才能見效。正是這個延遲,使得我們逐步轉向上面的平衡迴路,需求延期和下調目標成為一種習慣。
4.4 成長上限
“成長上限”描述了一個增強迴路不可能獨自持續下去,在一個更大的維度,一定會有另一個因素(或平衡迴路)對它進行限制,這個就是成長上限。
4.5 公共悲劇
“公共悲劇”描述了對於大家共享的有限資源(APP首頁彈窗),每個個體(業務單元)都想自己利益最大化。使用者越多,越消耗使用者對平臺體驗的信任。隨著彈窗總量迅速增加,遭遇使用者容忍瓶頸時,消費者會感到不可容忍,用腳投票。
05
理解業務邏輯的例子
對於我自己過去接觸的一些複雜業務,我會嘗試使用“系統思考”作為工具去幫助自己加強對業務的理解,我經常在畫對應業務的因果迴路圖的時候發現一些新的觀點,產生一些新的疑問,這個過程對我的幫助良多。
這裡還是要強調一下,“系統思考”只是一個工具,不同的人面對同樣一個系統,因為了解的資訊多寡、關注問題的角度不同、對系統發展方向的期待不同,都會導致畫出來的因果迴路圖有所不同。
所以,“系統思考”就是一個幫助你不斷地透過zoom out、zoom in來完整的、體系的看待複雜問題的工具,透過使用這個工具的過程,幫你更好的思考和理解你面對的複雜問題。
阿里小程式生態
06
歸回思考的心智模型
最後,再補充說明一下,對於複雜問題的思考其實是有層次的,從最表面的事件(正在發生什麼),到事件背後的規律(發展趨勢是什麼),再到這個問題的結構模式(解釋趨勢背後的原因),再到價值觀(驅動這個模式的理念),層層遞進。在畫完自己的業務系統因果迴路圖之後,再結合這個心智模型,思考自己的思考在哪個層次,是否可以有機會再下鑽到更深的層次。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027824/viewspace-2953282/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 面對問題,產品經理如何做到全面思考?
- 被騰訊問蒙的各種Redis複雜問題Redis
- 問題雜記:友盟分享 SDK 和 load 載入耗時統計衝突問題
- Java 執行緒安全問題的本質Java執行緒
- 思考一個問題
- 大家面試時都被問到了哪些問題面試
- 面對複雜微服務系統觀測時,如何化繁為簡?微服務
- 拜託,面試別再問我時間複雜度了!!面試時間複雜度
- 深入理解SVM之對偶問題
- 如何提升自己對問題的理解深度?
- 不要將API質量視為技術問題,而更多地是系統問題 - mattheAPI
- 用 JMeter 做複雜介面測試遇到的問題JMeter
- 面試題:Linux 系統基礎提問 (一)面試題Linux
- 課時23.路徑問題(理解)
- 面試反問問題面試
- 關於原始碼防洩密的本質問題原始碼
- 關於原始碼防洩漏的本質問題原始碼
- 【曹工雜談】Mysql-Connector-Java時區問題的一點理解--寫入資料庫的時間總是晚13小時問題MySqlJava資料庫
- 最近思考的一個問題
- 最近對問題
- 對策問題
- 邦芒面試:面試時要問清楚的幾個問題面試
- wms倉庫管理系統常問問題
- 滴滴章文嵩:我們比AlphaGo面臨的問題要複雜很多很多倍Go
- 高頻面試:如何解決MySQL主從複製延時問題面試MySql
- 分散式系統的問題分散式
- laravel配置系統使用問題Laravel
- 一篇文章助你理解Python2中字串編碼問題Python字串編碼
- 一篇文章助你理解Python3中字串編碼問題Python字串編碼
- 一個延時任務問題引發的思考
- 本週遇到的問題
- 解決 Specified key was too long ... 767 bytes 的本質問題
- 面試題35:複雜連結串列的複製面試題
- 面試必問:讀寫一致性,你需要思考的問題面試
- 連通性問題大雜燴
- 快手雙邊市場的複雜實驗設計問題
- 詢問面試官的面試問題面試
- Typescript 面試問題TypeScript面試