[推薦]邏輯思考法讓你直擊問題的本質

2023/01/26閱讀時間約 24 分鐘
以下長文,但應該會是滿滿乾貨,請慎入。會寫這篇文章是年後要幫組織內的工程師上課,邏輯思考將會是一個可複利的能力,易學難精,在你職涯的愈後面將會對你愈有幫助。
如果你是一個新手工程師,非常建議花20分鐘的時間看這篇文章,裡面不只是書上的理論,也是我在工作上的實踐。如果對各位有所幫助,也希望能到 FB幫我按個讚,感謝!! 之後也會開一系列這類書的心得,如果有興趣的朋友,也可以按一下【FB追蹤】,如果對有疑問或想討論的朋友,也非常歡迎與我聯絡。
如果說在公司那麼多年,有什麼能力是真的有練到也覺得是重要的能力,我想應該就是問題解決能力】。一切要從15年前剛進公司開始說起,為幫助理解可想像我們公司是在做夾心酥與威化餅乾 (wafer)的餐廳,早上公司會開生產會議,裏面的議題五花八門,例如:為什麼餅乾的厚薄不一樣? 為什麼要出20包餅乾結果只出了18包,為什麼麵包機會不給力? 為什麼資訊系統會壞掉?
以上每個問題看似簡單,但都是不同領域的專業,一開始我以為是官大學問大,大家配合老闆的Review,時間久了發現大老闆確實能夠問到重點。對當時的我產生了不小的震撼。為什麼有人能夠跨領域的解決各種問題?在回答這個問題之前,我們先思考
工作的本質是什麼?
技術的本質是什麼?
每個人工作的本質就是要解決問題】。
技術的本質就是有【更好的方法解決這個問題】。律師用法律條文來解決問題,程式設計師用電腦解決問題... 專業不同,用來解決問題的方式就有所不同,當然,有些問題就特別適合用特定的技術來解決
回到剛剛的題目,這世界上真的有人能夠跨領域的解決各種問題嗎?存在即為真理,如果你 Google 一個關鍵字“解決問題的專家”,你就會看到一系列顧問業的書。解決問題的能力竟然能夠成為一個行業,也代表解決問題的能力,是能夠被後天培養,也是大部份人能夠學會的
也許你會有疑問

學會邏輯思考真的對工作有幫助嗎?

答案是肯定的,在【工程師階段】,寫程式就是在做一系列的決定,用什麼演算法,要如何決定設計架構... 希望能夠讓你在資訊不透明的時候能夠保有最大的彈性,設計出一個永遠都能夠改的動的系統。在 【Leader or Manager 階段】,在工作上愈來愈常需要做出有影響力的決定,要如何明快的做出正確的決定,影響了你的工程師是否會無止盡的幫你收集資料,避免開會但會而不決,因此在職涯的中後段,成為組長 或管理者之後更可以提升 Leverage!!
附上我特別喜歡的一本書,《直擊本質的思考力》裡面提到的
《教父》中說:「花半秒鐘就看透事物本質的人,和花一輩子都看不清事物本質的人,注定是截然不同的命運。」
為什麼有人能在半秒鐘內看透事物的本質,而有人一輩子也看不清事物的本質?這背後隱藏著的,正是本質思考的能力。
而如果是在顧問業,你會看到有許多公司花了大錢請顧問去幫他們把脈,建議公司未來的方向,也代表的是,即使這些公司的員工很有經驗,但若缺乏思考的技術,仍然難以看清楚方向,明確的提出有效的建議。
將培養你獨立思考的能力,代表著你能透過邏輯與洞察力,不僅看見問題,還能挖掘出問題的本質,並找出因應的對策來解決。無論你身處哪個行業、哪種職位,雖然面對的問題迥異,但獨立思考絕對是最能幫助你創造附加價值的能力。
接著我們就進入主題

問題的本質是什麼?

所謂的問題就是「現狀」與「目標」的差距。一個清晰的問題解決方案,表示釐清了三件事:「現狀」、「目標」,以及從現狀達到目標的清楚「途徑」。








「問對問題,就解決一半的問題」,愛麗絲夢遊仙境裡說「如果你不知道想往哪走,那麼選哪條路都沒有關係」,因此如果找你討論問題的人,你問他為什麼這個問題很重要? 或是解決這個問題能帶來什麼好處? 他沒有辦法明確的【只】提出一個或兩個好處的人,我可以跟你打包票,他還沒有想清楚為什麼要做這件事。
建議在 Kick-off 專案的時候,你可以詢問你的使用者,當專案成功要和大主管報告的時候,當大主管詢問這個專案帶來了什麼好處,你會如何用3句話回答這個問題,通常這就是專案的中心思想與目的。如果沒有辦法明確定義問題的 Scope,代表這將是一個無法管理預算的需求,非常危險...

另外也推荐底下的方式進行提問幫你找到真正的問題,避免聊了很久都是在表象上面討論現象,而無法發掘到 Root cause
  • Is it true : 你所看見的問題真的存在嗎?
  • Whose problem : 假設問題真的存在,如果解決了這個問題,誰最會感謝我?
  • So What 那又怎麼樣 : 這問題對他會有什麼影響 ?
  • Why So 為什麼會這樣 : 為什麼這個問題會導致這些影響?
相信我,真的很多時候來找你討論問題的人,經常缺乏了問題解決能力,不習慣思考,連問題都講不清楚,無法分辨因果關係... 下次試著用這幾個問題反問他們,能夠幫你想清楚問題到底是什麼。 (練習讓自己能夠有邏輯的問幾十個問題,也是很好的訓練方式)

問題解決能力

問題解決能力(方法)的架構請參考下圖,接下來會依序介紹

批判思考(Critical thinking)

這代表一種思考的態度,也就是當接受到訊息的時候,反思一下
  1. 他說的是事實或是意見
  2. 都是真的嗎?
  3. 要如何驗證他說的內容呢?
當我們在訪談或是收集資訊的時候,經常都是跟領域專家合作,有趣的是每一個領域專家對問題的看法都不太一樣,這是因為我們在說話的時候,經常會把事實以及意見揉合在一起(假如是事實可以直接使用於推論,但如果是意見則需要先進行驗證才可使用),也因此每個領域專家的意見才會不同,透過妥善的分辨,目的是找出意見背後的一般性原則或是避免被類似但方向不同的意見給誤導。
底下是【麥肯錫書裡最常出現的案例】
  • 看見天空陰陰的 ——事實,是觀察可得的陳述
  • 判斷可能會下雨 —— 則是意見(觀點),是基於「天空陰陰的」事實而作出的判斷
  • 因此出門要帶傘 則是基於觀點後所作出的—— 結論以及行動
    「天空/下雨/傘」即是「Data/Insight/Action Plan」的對應關係。

邏輯思考(logical thinking)

邏輯思考的目的就是要釐清因果關係,由觀察到的事項(因),來推論未來可能發生的事情(果);或是從已經發生的結果,來推理導致該結果的原因。
以我所從事的AI領域而言,就是想要從大量數據中找到關鍵的特徵,而這些特徵能夠用來解釋與推論因果。因此在和領域專家討論的時候,會不斷的問他,Why So(為什麼會這樣),是否有理論基礎或一定的條件才會發生 (前提),如此一來才能有可解釋性來解釋因果背後的原理。
可以參考穆勒五法(Mill's methods),幫助你釐清因果關係。

邏輯思考 - 穆勒五法(Mill's methods)

非常推荐熟讀穆勒五法,在公司經常被主管Review,在當主管以後也會需要Review工程師,對於 Reviewer大部份時候並不真的了解事情的來龍去脈,但會透過以下方法,兩兩相比來問因果關係,再判斷是否合理就能給方向,很實用。
  1. 求同法(異中求同)
    如果各個不同 Case 【除一個條件相同】外,其他條件都不同,那麽,這個相同條件就是某被研究現象的原因,也就是異中求同。

    例如 : 有異常的Case 使用者雖然都在不同功能的操作,比較慢的case都是特定的 Server造成的
  2. 求異法 (同中求異)
    如果各個不同 Case 【除一個條件不同】外,其他情況都相同,那麽這個不同點就是這個現象的原因。也就是同中求異。

    例如 : 今天異常的Case增加,分析過發現是瀏覽器有版本自動升級
  3. 求同求異法
    如果某一個情況僅在條件存在的場合出現,而此條件不存在時,就不會發生特定情況則此條件就是原因。

    例如 : 某醫療隊為了解地方病甲狀腺腫的原因,先到這種病流行的幾個地區巡回調查。發現這些地區地理環境、經濟水準都各不相同,有一點是共同的,即居民常用食物和飲用水中缺碘。醫療隊又到一些不流行該病的地區去調查。發現這些地區地理環境、經濟水準也各不相同,但有一點是共同的,即居民常用食物和飲用水中不缺碘。醫療隊綜合上述調查情況後,認為缺碘是產生甲狀腺腫的原因。
  4. 共變法
    在其他條件不變的情況下,如果某一現象發生變化另一現象也隨之發生相應變化,那麽,這兩個現象為因果關係 (前一現象就是後一現象的原因)。

    : 當使用者輸入的資料長度愈長時,系統反應的速度成線性變慢,代表系統無法負荷一定的資料複雜度。
  5. 剩餘法
    已知複合因素 (A,B,C,D) 是複合現象 (a,b,c,d) 的原因,又已知 B 是 b的原因, C 是 c 的原因, D 是 d 的原因,那麼剩下的 A 就是 a 的原因。

    例如,天文學中海王星的發現就是運用了剩餘法。1846年前,天文學家觀察到,天王星在其軌道上運行時,有四處發生偏離,他們已知,三處偏離是因為受到了其他已知行星的引力所致,而另處偏離原因不明。於是,科學家們認定,剩下的該處偏離也應是另一未知行星的引力所引起的。根據這一假定,天文學家們運用天體力學理論,計算了未知行星的軌道。結果於 1846 年 9 月 18 日,天文學家用望遠鏡在與計算相差不到一度之處發現了這顆未知行星——海王星。
在工作上的應用類似
Q : 為什麼程式有時候會異常?
A : 這是因為命令如果執行在不同的Server 有一些電腦穩定度較差
Q : 為什麼這些電腦穩定度差? 是有什麼相似的配置嗎?
A : 在容易發生異常的電腦,最近有 hot patch 更新 或軟體版本不一致...

假說思考(hypothesis thinking)

接下來要進入最重要的章節了!!
先以個人的經驗解釋我是如何思考難題的,在小時候~工作的前半段呈現跳躍性思考,以前常說我秒答不出來的問題,就會想非常久也不保證一定想的出來,且不容易解釋為什麼我會想出這個答案。因此我以前都將他歸類於我有小聰明。
在工作的後半段愈來愈多難題,就常應用假說思考的方式進行思考,如果給我足夠的時間與線索,基本上大部份別人能夠推理出來的問題,我都能推理出來。
也就是「一個問題在你還沒有想出來答案以前,你有把握一定想的出答案嗎?」,如果你熟練這個方法,我覺得這個答案應該答 Yes 的機率會愈來愈高。

在正式介紹之前再扯遠一些,那麼,我現在是如何思考難題的呢? 想請問,如果有一個迷宮你要如何增加通關的機會? 我想答案就是
  1. 從終點出發 往 起點走
  2. 如果走一段時間,都沒有走到死路 或 重覆的地點,代表你很有可能走在對的方向
  3. 將第二步的位置視為 milestone,也就是假設性的終點,再思考如何從這個 milestone 往起點走
  4. 重覆這樣的過程,只要能夠找到幾個 milestone,且能夠將幾個milestone 連起來,就能確保起點是能夠走到終點的。
在這過程中,我會增加一些前提條件,讓最後答案的可能性較少,就可以大幅的加快嘗試排列組合的時間。就像是警察在找犯人一樣會畫人物側寫,雖然他不知道犯人是誰,但會常假設出幾個犯人應有的特徵 (ex : 左撇子,45歲男生...),我也會先假設出幾個答案應有的特性,再開始尋找能夠走到終點的milestone。

例如 : 強調專案Schedule急迫性,不管使用者想要提什麼需求,都必須在下個月底上線,引導使用者去取捨,下一動就會再建議要對功能分類,例如必要與想要,就不會漫無目的的談論功能,最後才發現一開始就不可能做的需求。

先引用書中的三段描述,解釋什麼是假說思考
假說思考法是BCG的DNA。所謂「假說」,字面上來看即為「暫時性的答案」。而假說思考法,即是以假說為導向,將你的研究方向與目標圍繞在「證明假說是否正確」的概念之上
「假說思考」(hypothesis thinking)可以提升問題解決的速度。在開始收集情報與數據前,要先畫出一個靶,設立假說。確立自己為什麼要收集與分析這些訊息之後,再開始行動,才能有效利用資源,快速找到方向。
這種先訂出不一定正確的假說,然後以驗證該假說是否正確為目標,讓整個持續驗證假說的過程,引導你找到並解決核心問題的原則,就是假說思考法。
一般未經訓練的低效思考法,經常都是會收集大量的資料,期待自己最終能夠從這些大量的資料中看出個什麼結果出來。如果萬一看不出結果,就會再繼續收集更大量的資料。或是呈現發散性的思考,東想一點,西想一點,最後因為可能性太多,導致大腦CPU爆炸,想不出結果又很容易累。
這種花80%的時間搜集資料、20%的時間寫報告的解決問題模式,BCG稱之為「大海撈針式」(boil the ocean)的工作方式。
先舉一個簡單例子來說明假說思考會如何進行,一樣拿下雨為例
你在窗邊想看現在
  • 議題 : 外面是否正下雨
  • 事實 : 天空很陰
  • 資訊 : 好像有一些毛毛雨又好像沒有
那接下來你會怎麼確認到底有沒有下雨
假說 : 萬一有下雨的話,行人是不喜歡淋雨在路上走路
  • 假設1 : 萬一有下雨,行人應該會撐雨傘
    驗證1 : 行人沒有撐雨傘,可能代表雨不大或剛好沒有帶傘出門
  • 假設2 : 如果沒有撐雨傘的行人,應該不會想慢慢走而多淋雨
    驗證2 : 觀察行人走路的速度,沒有撐傘的行人是否呈現略快的步調
  • 假設3 : 如果路上都沒有行人,也許都在屋簷下躲雨了
    驗證3 : 路邊騎樓跟屋簷下是否有許多在躲雨的行人
透過推論的方式,我們會先假設出一個因果 (雨 會影響 行人的行為),先用邏輯思考驗證這樣的因果關係是否成立,再透過收集資料來驗證自己的假說
底下附上一個較為複雜的範例
透過設定假說
  • 假說1: 問題在銷售通路
    驗證1: 量販店營業額比對手低
  • 假設2: 問題在促銷手法
    驗證2: 與競爭對手相比,促銷活動不夠積極
  • 略...
透過以上的方法,先歸納出最有可能的假說(最好是三個),思考如何驗證這些假說是否正確,就能快速的推動【假說 — 實驗 — 驗證的反覆過程
也就是你會
  1. 快速的閱讀書或文件,透過經驗法則,建立最初始的假說
  2. 透過與領域專家的訪談,驗證初始假說方向是否正確
  3. 透過收集資料(事實),驗證假說是否正確或需要修正
透過這樣的方式推動假說的進化。如同【敏捷開發】一樣,假如有一個不確定性很高的問題發生時,與其大量的討論與收集完整資料後進行靜態的開發(傳統瀑布型開發方向),不如走向敏捷式的開發,也就是根據最初步的討論,做出MVP(Minimum Viable Product,最小可行產品),詢問你的顧客,這是不是你要的東西? 從中進行學習,經【一次次的回饋】後更能慢慢靠近使用者想要的產品

如何評斷 : 最終的建議是否有Insight 與 假說的品質

當我們開始進入研究時,會得到許多的假說靈感,因此要如何評斷【假說的優劣】,最重要的就是看最後的結果是否會有 【Insight
顧問的角色是幫助客戶解決問題,因此最終建言一定要有insight,否則無法體現價值。沒有客戶會想花錢請你和他說他早就知道的事情,或是高談書上就找得到的觀念。
BCG在評斷假說好壞時,是以針對性(specific)、驅動性(actionable),與可證性(provable)三個指標來評斷。
  • 突破性 (breakthrough)
    你提出的 insight 是否有客戶不知道的「突破性」,也就是能夠推導出客戶不知道的資訊。
  • 針對性(specific)
    是否會過於空泛(generic)。舉例而言,沒有針對性的假說,像是「銷售管理有問題」,有些資訊可能是客戶過去不知道、但卻沒有針對性的,我喜歡把該類資訊統稱為「教科書資訊」,因此需要明確的與當前問題直接相關。
  • 驅動性(actionable)
    如果該假說為真,客戶就能清楚知道接下來該採取什麼策略行動來解決問題,也就是對客戶具有「so what」(所以呢)的啟示。
  • 可證性(provable)
    這個假說能否被驗證,訂出無法被驗證的假說,對專案而言將毫無助益。
例如要如何提升 Server 的穩定度,萬一有使用者告訴你,他的經驗就是要綠色乖乖且不可過期
若最後的結論是紅色乖乖會影響Server 穩定度,那麼符合以上那幾點呢? 他符合了針對性 (Server與乖乖竟然有因果關係) 但不符合突破性(客戶本來就知道綠色乖乖),因此是一個對客戶無附加價值的建議。

列出好的假說與分析架構 - 金字塔原理 (垂直思考)

金字塔原理 : 要先把「重點結論」說出,視為金字塔的頂端,然後再說明支持性的證據和論點依序鋪層。 一切要合乎邏輯,符合「演繹」和「歸納」這兩種方法,每層的說明都要能支持上層的結論。
使用金字塔架構來整理資訊時,愈上面的層級,擺的愈是「意見」(opinion);愈往下,放的愈是「事實」(fact)。實際上,一個好的金字塔模型,只有最底層為事實,底層以上全都是意見。
MECE(Mutually Exclusive Collectively Exhaustive)原則,由字面上翻譯的意思為「相互獨立,完全窮盡」,有些人則稱之為「不重複、不遺漏」
愈往下一層,就是繼續多問一個「為什麼」(Why);反之,愈往上層,呈現的是「那又如何」(So what)。
以底下左邊第二層的“強化針對量販店的商品開發”為例
底下有三個論點 (Why So)的展開,而三個論點的歸納 (So What) 就是上層的論點。在分析的時候就會收集下層的資料,歸納出上層的觀點,一層一層的論證上去,最後得到一個 Key message (insight),為避免過於複雜,建議以3個原則進行,也就是最好展開是三層論點且依據最好也是三個,最多不要超過5個。這是為了強迫自己對論點進行取捨(避免放太多不重要的資訊進去)。

如何進行有效率的水平思考 (發散式思考)

我們在建立分析架構時,可使用框架(framework)將議題拆分成幾個面向,再從各面向分別提出事實作為說明舉證,例如我們公司最常使用的就是透過 PDCA來說明,你將如何進行 Project。先找到一個框架,再強迫自己用這個框架對每一個面向都要想3~5個點來填滿,這也會訓練你創意思考的能力。也就是說當我在進行 Brain storming 的時候,不會真的天馬行空的亂想(我覺得太花精力了),反而是會切幾個點,而在這些點裡面問自己 So What / Why So... 再做歸納。因此特別建議可以廣泛的看不同類型的書。或是看框架的大全《超級思維》,可以幫助你快速的切入問題。
窮查理的普通常識 : 「心智模式」(Mental Model),蒙格認為:「心智模式就是大腦做決定時所使用的工具箱;工具箱裡有的工具愈多,你就更有可能做出正確的決定。」心智模式會影響一個人看待世界的方式,也會影響他對於事情的「判斷」和「決策」。
舉一個例子,我在解釋專案進度的時候
  • 如果要強調現在式 (這是什麼),就會使用5W2H條列式的說明
  • 如果要強調過去式 (已完成了什麼),就會用 STAR 模型,把做過的事填進去
  • 如果要強調未來式(接下來要做什麼),就會引用教練書裡面的 Grow 模型
以前在讀管理的時候,常看到書裡會寫一個 2 * 2的矩陣,例如將待辦事項分成重要與緊急的矩陣。這是因為透過這樣的分類可以確保,所有的事情都能被妥善分在裡面。這就是上面提到的 MECE 原則,目的是用有限的觀點 (取捨過) 來對問題進行不同面向的思考。特別推荐使用心智圖軟體 (mindmap),來思考問題。

小結 : 為什麼會有那麼多說明東西用的框架,這些都很像,主要的目的都是幫你歸納資訊且分類都是符合MECE原則,也是聽眾容易接受的。因此熟悉幾個框架,在遇到問題的時候稍微先想一下,在搜尋是否有合適的框架,接下來就是【硬套】,我所說的硬套就是指每一個面向都要放3~5個資訊進去。因此可以幫助你進行創意發想

要先進行水平思考 (廣度) 或是垂直思考?

我個人在思考的時候,會先在一大片白板前,問工程師你對這個題目的看法如何? 他邊講我就會根據他講的內容,寫幾個 Keyword (水平思考,求廣度),寫完之後思考是否能夠歸納 keyword (垂直思考,重邏輯)這時候就會有第一版分析架構

接著再對第一版架構進行檢視,是否有缺漏?
  • 是否有我們沒有討論到,但你覺得很重要的?
  • 拿實際發生的Case 問,這個Case 應該放到架構的那個位置
反覆進行類似這樣的動作,開放式的問問題(水平思考),再做邏輯歸類(垂直思考)

BoE 快速切入問題法

簡約分析法,按照原文「back-of-the-envelope analysis」(簡稱BoE)字面上的意思,亦即「利用信封背面分析」,可以解讀成「簡單到隨手拿張紙,就能做出的粗略計算分析方式」。
BoE 比較像是一個概念,強調的是類似電梯簡報一樣,簡短但具有方向性。用3~5個直覺的因素來推論因果關係。
因此BoE 的目的,是要快速的進行「有根據的猜測」。且這個推論是能夠簡單的計算與進行討論,不在乎精確度,更在乎方向與邏輯性。很多人應該都會有印象,許多公司會考你全台灣有幾間加油站,大樓有多少面窗戶之類。目的不在於正確答案,而在於觀察你是如何推論出答案的。透過這個方式特別適合當做初始假說的設定
例如 : 退休需要準備多少錢,根據 Fire 法則你應該要準備多少本金? 如果假設你的生活費要被
4% 的投資報酬率 Cover : 本金與投資組合的關係應該要如何調整
6% 的投資報酬率 Cover : 本金與投資組合的關係應該要如何調整
重點不在計算的非常正確,而是很快可以提供一個 insight,本金小那麼投資組合就會風險高一點,不然就要更早開始存本金 or 削減支出...

最後一個部份 : 解決問題的信念與態度

會到我們手上的Case,經常都是經過別人努力過,但沒有被明確解決的難題,因此必定不容易,那麼什麼是面對難題時應有的信念與態度?
  • 沒有無法解決的問題
    我在想難題的時候,都會假設 1) 十年後這個問題是否能夠被解決? 2) 如果換成是某某來解這個問題,他能否解決? 這一類的目的是要告訴自己,這一題必定有解,只是我還沒有想到方向而已,不斷告訴自己此題有解是很重要的
  • 沒有無法解決的問題 - 換一個角度再試試
    在大數據分析裡面,經常會使用探索性的研究,也就是說這一群資料必定是有意義的,只是要換特定的分析角度才看得出來資料的價值,以下圖為例這是標準的分群法,你能否找到那一條完美的橙色線,妥善的解釋因果關係。很多時候我們在做的事跟電腦也沒有不同,就是不斷的再換一個角度進行分析...
  • 可見的問題,都是表象問題
    很多剛開始接Project的人,都會過度的輕視問題,隨便看到一兩個機會就要大張旗鼓的開始著手解決,我就會提醒他【地上的紅包不要撿】,這一題當年是你的主管也試著想解決他,但是失敗了,代表一定有他的時空原因 或是 有更深層的因果在裡面,如果這麼容易就看到機會,這個紅包早就被撿走了。
  • 80/20法則 : CP夠大嗎?
    也許你能夠想出幾個 Solution,但他的CP值夠大嗎? 如果不足以吸引資源向這裡靠攏,就代表還要再多想想。是否能找到解決問題的Sweet Spot:兼具影響力與可解性





























































































  • ff
為什麼會看到廣告
漢堡哥的知識ETL
漢堡哥的知識ETL
一位擔任科技廠的小主管,喜歡思考/讀書/解決難題。一路依靠著熱情而始終任性至今,在書裏尋找困惑與答案 希望能夠將知識幫各位 1.Extract : 從書裏擷取出來 2.Transform : 轉換為更精華更容易理解的內容 3.Load : 放入各位的Memory裡
留言0
查看全部
發表第一個留言支持創作者!