
阿裡妹導讀:對事物的歸類分組是我們人類的天性,我們的大腦會自動将發現的所有事物以某種持續組織起來。但如何組織才能幫助我們解決工作和生活中出現的各種複雜問題?今天,我們請阿裡進階技術專家張建飛分享他的黃金三步法。
我們經常說軟體開發中,沒有銀彈。的确,單看軟體領域,很少有什麼方法論是普适的。然而再拔高一些,跳出軟體的範疇,有一些東西是普适的。
最近,我有一個新發現:我發現“歸類分組”在我們解決問題中起着巨大的作用。而這裡的“問題”不僅僅限于軟體設計,從日常生活、産品設計到公司戰略、生物分類。都有它的身影。
這是為什麼呢?究其原因可能有兩個:
1.歸類分組是抽象的重要方法,解決複雜問題我們離不開抽象。
2.歸類分組是結構化的重要步驟,結構化的表達離不開歸類分組。
當然,歸類分組要先有素材可以“歸類”才行。是以,完整的方法論是這樣的,我給他起了一個好聽的名字——解決問題黃金三步:定義問題——分解問題——歸類分組。
這三步的詳細操作如下:
- 第一步,定義問題:也就是要清楚我們要解決的問題是什麼?
- 第二步,分解問題:對問題進行分析拆解,形成平鋪的多個子問題,此步可以盡量發散。
- 第三步,歸類分組:對子問題進行歸納、剪枝,将趨同的子問題,合并成一類問題。
如上圖所示,通過黃金三步以後,我們就可以得到一個形同“金字塔”的結構,也就是我們經常說的金字塔結構。根據問題的複雜程度,這個金字塔結構可能是兩層,也可能是三層和多層。
看似簡單的三步操作會有那麼大的作用嗎?廢話不多說,直接上案例。
在日常生活中的運用
你出門買報紙,你老婆說家裡冰箱空了,順便帶點東西回來吧。她給你列了一個清單,裡面有葡萄、橘子、鹹鴨蛋、洋芋、雞蛋。你說就這麼多了嗎?她說蘋果和胡蘿蔔也可以買一點。當你準備出門的時候,她說家裡的牛奶和酸奶也沒有了,最好也買一點回來。
你覺得你能把老婆交代的東西都買齊嗎?我看很難,因為我們的大腦短期記憶無法一次容納7個以上的記憶項目,超過5個時,我們就會開始将不同的項目歸類到不同的邏輯範疇,以便于記憶。
如果我們将葡萄、橘子、牛奶、鹹鴨蛋、洋芋、雞蛋、胡蘿、蘋果、酸奶。按照邏輯關系,進行下歸類分組,比如把葡萄、橘子、蘋果歸為水果類,把洋芋、胡蘿蔔歸為蔬菜類,便可以大大幫助我們提高記憶效率。
注意這裡分類的作用不隻是将一組9個概念,分成每組各有4個、3個和2個概念的3組概念,因為這樣還是9個概念,你所要做的是提高一個抽象層次,将大腦需要處理的9個項目變成3個項目。
如果你已經這麼做了,恭喜你,你已經在實踐黃金三步了:
- 定義問題:冰箱空了,需要購買補給。
- 分解問題:你要分析購買哪些東西呢?
- 歸類分組:為了友善記憶,你将要買的9個東西按性質分成了三組,形成如下的金字塔結構。
這就是結構化思維,下次你再接到老婆這樣的“需求”,記得把這個方法論用上,她一定會對你刮目相看。
在工作彙報中的運用
定義問題
“小張,客戶對銷售報告和庫存報告不滿意,你去看一下什麼原因。” 面對這種典型的工作問題,你打算怎麼處理呢?
分解問題
首先,你肯定要去調研客戶不滿意的原因,經過調查你發現,客戶不滿意主要有以下原因造成的:
- 送出報告的周期不恰當;
- 庫存資料不可靠;
- 獲得庫存資料的時間太遲;
- 庫存資料與銷售資料不吻合;
- 客戶希望能改進報告的格式;
- 客戶希望除去無意義的資料;
- 客戶希望突出說明特殊情況;
- 客戶希望減少手工計算。
雖然你做了大量的工作,調查也很充分。但是,如果你要是把這8個原因直接給老闆彙報,估計效果不會太好。你可以自己做個試驗,仔細閱讀上面的清單3分鐘,你能從中獲得什麼?同樣的,你老闆看到這樣的羅列也會是一臉懵逼,不知道重點在哪。
歸類分組
是以我們有必要加上第三步,對問題進行進一步的歸類分組,我們可以将8個問題概括為3組:
- 報告中含有不可靠的資料;
- 報告的格式混亂;
- 産生報告的時間太晚,無法采取有效措施。
進行分組之後,我們就可以得到如下的金字塔結構:
這種結構化的表達,很明顯讓問題的表述更加清晰。上司也可以很快抓住問題的要點,并作出相應的決策。當然,這裡是為了着重介紹歸類分組,真正的彙報你還要提供對應的解決方案,然後讓老闆做“選擇題”。
在寫代碼時的運用
你遇到一個相當複雜的業務場景,在這個業務操作中,涉及到大量的校驗和執行操作。這種代碼,如果沒有一定的政策,很容易寫成大泥球。
例如,在我們的業務中有一個商品上架的操作,是一個非常複雜的業務操作。
對這種業務問題的分解,通常是産品經理的職責,但是作為工程師也不能完全依賴PRD。因為産品視角和工程視角還是有差别的。
針對“商品上架”,我們做了如下的功能分解:
同樣,在分解之後,我們需要有一個歸類分組的過程。否則,這些步驟的平鋪會讓代碼顯得淩亂,不友善記憶和維護。通過分析,我們可以把分解後的步驟分成三個階段:
- 初始化階段
- 校驗階段
- 執行階段
通過黃金三步,我們可以得到如下的金字塔結構:
最後,我們按照這個結構去組織我們的代碼,整個代碼結構會更加清晰,代碼的可維護性也會好很多。
在應用架構中的運用
應用架構主要解決的是子產品、元件定義和子產品、元件關系的問題。
從宏觀層面來說,架構設計也是遵循這三個步驟的。比如,我們的架構要如何分層,分子產品、分元件就是在做問題分解。然後,子產品群組件要歸屬在哪個層次,要如何命名,就是在做抽象,在做分類歸組。
在綜合考慮功能屬性+品質屬性,然後通過黃金三步,就能得到我們想要的架構設計。例如,我們的COLA 2.0架構也是在這個方法論的指導下完成的。
在産品架構中的運用
“小張,為了做新零售,我們打算做一款智能網際網路POS機,你先做一下産品設計。”
通過調研你發現,作為POS機,其核心功能是收銀和經營管理。是以至少需要包含收銀的功能、服務核銷的功能、商品管理的功能、庫存管理的功能等等。
但如果僅僅是滿足這些功能,和傳統的POS并沒有多大的差別,為了滿足“智能”和“網際網路”的要求,你去深入百度了一下智能POS應該具備的功能,大緻包含以下功能:
- 刷臉支付;
- 支援品牌商營銷;
- 支援自主營銷;
- 智能定價;
- 外賣對接;
- 彩票對接;
- 虛拟充值等等。
在問題分解階段,我們應該盡量多的收集資訊,多發散,多頭腦風暴。
發散完,我們還是要收回來。在收斂之前,我們先看一下産品架構應該包含哪些東西,通常,一個産品架構至少要包含三個層次:
- 使用者感覺層(在何種場景下通過何種方式觸達使用者);
- 功能子產品層(通過哪些功能子產品實作産品的核心功能,和哪些外部平台功能有資訊互動);
- 資料層(産品的資料從哪裡來、産品的資料沉澱到何處去)。
在這三個層次的基礎上,我們再對每個層次内的子產品進行分組。例如在功能子產品層,我們要對功能進行分類,讓分散的功能點内聚成更大的産品子產品(展現在使用者界面上,往往是一級菜單和子菜單的關系)。
比如對于POS的收銀産品子產品,我們可以提供以下的産品功能:
- 支付寶收銀
- 現金收銀
- 微信收銀
- 刷臉支付
- 記賬等
通過層次劃分,子產品劃分我們就可以得到一個相對清晰的産品架構,以智能POS為例,我們可以畫出如下的産品架構:
分類是科學也是藝術
通過上面的案例,我想你已經領會到黃金三步:定義問題——分解問題——歸類分組的要義了。其中前兩步相對比較直覺,而第三步往往是不容易做好,也容易被忽略的關鍵步驟。
實際上,對事物的歸類分組是我們人類的天性。人類大腦會自動将發現的所有事物以某種持續組織起來。基本上,大腦會認為同時發生的任何事物之間都存在某種關聯,并且會将這些事物按某種邏輯模式組織起來。
比如,下面這張圖檔:
無論是誰,乍一看到上面的六個黑點,都會認為共有兩組墨點,每組三個。造成這種印象的原因主要是有些黑點之間的距離比另一些黑點之間的距離大。
空間是一個相對比較直覺的邏輯關系,然而,并不是所有的邏輯關系都是如此的顯性化。實際上,很多的概念會在多個次元進行交叉耦合,這就給我們的歸類分組帶來了很大的挑戰。
生物分類學
生物分類學通常直接稱分類學(Taxonomy),是一門研究所學生物類群間的異同以及異同程度,闡明生物間的親緣關系、基因遺傳、物種進化過程和發展規律的基礎科學。
最流行的分類是五界系統。通常包括七個主要級别:界(Kingdom)、門(Phylum)、綱(Class)、目(Order)、科(Family)、屬(Genus)、種(Species)。種(物種)是基本單元,近緣的種歸合為屬,近緣的屬歸合為科,科隸于目,目隸于綱,綱隸于門,門隸于界。
不過分類學到不是一門很嚴謹的“科學”。就像比爾.布萊森在《萬物簡史》裡說的:
分類學有時候被描述成一門科學,有時候被描述成一種藝術,但實際上那是一個戰場。即使到了今天,那個體系比許多人認為的還要混亂。以描述生物基本結構的門的劃分為例。許多生物學家堅持認為總數30個門,但有的認為20來個門,而愛德華在《生命的多樣性》一書裡提出的數字高達令人吃驚的89門。
由此可見,分類并不像我們想的那麼簡單。我們觀察事物的視角不同,對問題的認知程度不同,得出來的分類很可能也完全不同。
特别是當概念之間有交叉情況,分類就會變得更加棘手。比如,在你的筆記本中,有“讀書筆記”和“哲學筆記”兩個平級的分類,此時你閱讀了一本哲學書籍,那麼你會把這本書的讀書筆記放在哪個分類裡呢?
分類的原則
分類的基本原則是MECE法則。透過結構看世界,說的就是MECE法則。
MECE法則即mutually exclusive collectively exhaustive的縮寫,是麥肯錫咨詢顧問芭芭拉·明托在《金字塔原理》中提出的一個思考工具,意思是“互相獨立,完全窮盡”,也常被稱為“不重疊,不遺漏”。
MECE原則的思想精髓,就是全次元的去分析一件事情,不要有遺漏和重複的部分。
我們可以借助已有的結構化思維模型(分類的架構)來分析問題,確定每一層要素之間“不重複、不遺漏”。
分類的思維模型
實際上,在上文中我們已經提到了一些分類的思維模型。比如,在應用架構中,我們通常有展現層、控制層、應用層、領域層和基礎實施層;在産品架構中,有使用者感覺層、功能子產品層、資料層。這些架構可以有效的指導我們在各自領域中開展工作。
類似于這樣的分類思考模型還有很多,比如:
1.制定市場營銷政策的“4P”模型,即産品政策(Product Strategy)、價格政策(Price Strategy)、管道政策(Place Strategy)、促銷政策(Promotion Strategy)。
2.分析問題的“5W2H"模型,即Why、What、Who、When、Where、How和How much。
3.思考組織戰略的“7S”模型,即經營政策(Srategy)、組織結構(Structure)、營運系統(System)、經營風格(Style)、職員(Staff)、組織技能(Skill)和共享價值觀(Shared value)。
4.分析競争力的SWOT模型,SWOT分析代表分析企業優勢(Strengths)、劣勢(Weakness)、機會(Opportunity)和威脅(Threats)。
5.制定目标的SMART模型,即制定目标要滿足确定性(Specific) 、可度量性(Measurable)、可實作性(Attainable)、相關性(Relevant)和時效性(Time-based)。
這些思維模型都是寶貴的經驗總結,相當于已經幫我們做好了第三步“歸類分組”的工作,我們隻需要按照模型制定的架構往裡面填充要素即可。
是以擅用模型,活用架構。可以極大的提升我們解決問題的效率,同時幫助我們做更加全面的、更加結構化的思考,做了“無遺漏,不重複”。
原文釋出時間為:2019-10-23
作者:從碼農到工匠
本文來自雲栖社群合作夥伴“
阿裡技術”,了解相關資訊可以關注“
”。