fbpx

思考框架是好是壞?

這個問題就像練習如何思考一樣有趣。

網路上有非常多的思考技巧,打開Youtube也有很多的個人思考辦法。

我自己是思考技巧的愛好者,現在還是喜歡鍛鍊自己的思考框架、看看別人是怎麼想問題的。最早開始碰到思考技巧,是高中的時候。

還記得高中升學時,特別為數學這科大魔王寫了半本的數學思考辦法。那本筆記是整理建中數理資優班,如何解決問題的,裡面有很多解題的方式,解題。解決問題,這也帶出了為什麼今天要寫這個主題:

所以,我們為什麼要思考?正確的是,不思考會犯什麼錯誤?

先來個人文碎碎念

我覺得除了鍛鍊自己的智識、培養解決問題的能力,更重要的是避免對他人造成無形中的傷害。

最近有一部很紅的日劇:現在開始,三年A班的同學都是人質

停 — 轉 — 啪

我很喜歡裡面的老師說的話:「我們在行動之前,永遠都要想我們的行動會造成什麼影響?」尤其在網路的時代,留下資訊非常輕易,那留下了這些資訊會對別人造成什麼影響?傷害?鼓勵?幽默? 很多時候我們都不知道自己傳達出去的訊息其實就像一顆石頭,隨意就可以讓社會泛起漣漪,我覺得

太多人都低估自己行動的結果了,即使只是個學生,傳播這麼方便的時代,一言一行都應該更謹慎才是。

好像偏題了,不過這也是小小的反思,畢竟有時候忙著學習,基本的道德標準還是要鞏固,否則會造成社會問題,也是科技進步對社會的衝擊吧!我們很少理會到科技進步所衍生的問題,我這學期上北醫醫學系教授的通識課,他們分享身為第三類組的「科學家」,其實不像人文學生那樣,可以先一步洞察到自己所研究的主題其實會造成什麼問題。所以思考有很多層面,人文、理工、商管,而程式思考是可以泛用在這些層面上的。

那麼,什麼叫做程式思考?

我定義為:有邏輯、有層次的思考法。

就像寫程式一樣,我們會一步一步寫下解決問題的方法,透過組合語法、組合函數來達到想做的目的,每一步都清清楚楚的,程式思考的好處是:我們可以跳出問題,更宏觀地思考整個大問題,然後逐步擊破小問題,實作的時候更專心在解決問題上。

至於該如何練習?也很簡單,試試看這樣的思考流程,應用到任何事情上,也就是以天地為師,以下的思考技巧是我思路技巧,歸納了許多本思考相關書籍的知識,並輔佐程式訓練以及管理顧問的商業思考所萃煉出來的,希望對您有幫助!

以程式思考貫通全部:

  1. 清楚描述問題
  2. 拆解問題
  3. 把問題簡化
  4. 構思
  5. 組合解法
  6. 問:然後呢?

其實日常生活中您也在用各式各樣的程式思考,比如您的計畫表可能會這樣制定:

  • 早上出門上班
  • 回覆mail
  • 開會
  • 例行公事、專案
  • 下班去超市補給生活用品
  • 休息

他是一個連貫的,行為背後有目的意義存在的,只是平常這些問題已經內化到我們很難注意到,好比會去補給生活用品是為了解決「家裏用不夠」的問題,出門上班是為了解決「公司的問題」……當你意識到問題的時候才能夠更聰明行動,好比家裡用不夠,是不是有更深的問題,比如食物都不小心放過期、開會有什麼問題?能不能不開會?很多很多,只要稍微留點意就可以更深入貼近實際問題。

今天不聊時間管理,但談談挖深問題的辦法

那今天談談軟體開發的問題,寫程式時,我們的思考步驟又怎麼做呢?

程式思考特別容易解決程式問題,因為這本來就是軟體工程師的思考方式:

第一步:清楚描述問題

如果你不能很好清楚描述問題,就不要想解決它。

有時候您以為這是個問題,但是它或許不是,以我熟悉的資料科學舉個例子:某個工廠廠長問我:其實工廠常常有一些機器的報廢開支,能不能協助預測我們的報廢率?

這是問題嗎?不是啊!因為報廢率不是一個有pattern的問題呀!他不是單純會計上的折舊而已,我們可以評估器材的使用期間、使用年限,但是報廢是突發的,今天某個機器壞掉、或者沒有算好機器操作的能力讓器具壞掉…….這些都是有可能突然發生的,可以預測機台的故障率,但是廠房器材的報廢率並不是一個真正的問題,應該要提出來的問題是:「能不能告訴我,為什麼我們的報廢率常常發生?」你必須了解的是這個問題的因,因為知道問題發生的原因才能解決問題。再舉一個例子,投資的時候問:「A公司跟B公司,哪個可以買?」

這是問題嗎?不是啊!我說可以買,如果你資金不夠的話你怎麼買?甚至:兩個都可以買啊,但是你要怎麼分配投資組合?即使我回答:「A公司。」這樣有解決你的問題嗎?顯然沒有,因為你一定不知道該怎麼分配投資比例、該買多少、而且:「什麼時候要賣?」。

貨幣政策的制定也是這麼做的哦!

所以這邊要提出的問題是:「我有多少錢可以投資?」這才是你應該先解決的問題,以及投資的第一個問題。清楚描述問題包括了發現問題的過程,在貨幣政策中還有所謂的時間延遲效應,國家政策的思考步驟都會用到清楚描述問題了,個人問題也要這麼做才行。

第二步:拆解問題

這是一個管理顧問常常用到的技巧,其實上一篇文也有提到。

利用MECE的原則拆解問題,好比我想分析:「為什麼超市營收下跌?」

營收可以拆成:銷售 — 成本。銷售又可以分成:銷量 * 價格

銷量又可以拆成:來客量 * 消費能力 *平均購物件數

價格可以拆分成:原本價格*折扣率………

太多了,想挖多深就可以挖多深,重要的是停到一個「我們有沒有意識到問題、能不能在這邊解決」的階段。

以工程師常常碰到的資料庫為例,資料庫正規化的時候共有五個步驟(俗稱5NF,不包含Boyce codd的NF),但其實為了避免有損分解的問題產生,通常只要三個正規化就可以了,這是因為此時已經達到「資訊完整」、「處理效能」、「避免異常」的平衡。

學會拆解問題,就不會覺得難以下手。

第三步:把問題簡化

先用最簡單的和弦來彈

舉我練吉他的例子,我在練習一首歌的時候通常都會先找最簡單的譜來練,因為吉他的練習分成左手(指法)以及右手(伴奏手法),這時候要先思考哪邊應該先練習,或者這首歌有用到什麼特別的技巧?練習簡單的譜有助於我們培養對這首歌的理解、也方便一開始跟著音樂進行練習,久了我就會加上個人的編曲概念、曲風轉換、根據歌唱者轉調、換一種指型來練習,問題簡化放到程式也是:

如果問「能不能讓我看看第二高薪水的主管是誰?」所以我的第一個反應就是自動拆解問題:「主管是誰?」「薪水第二高怎麼得到?」 怎麼找主管?我先把問題改成:「同事名單,有嗎?」我們先找到他的部下ID,利用部下的管理階級取得不一樣的主管ID就是主管名單。怎麼找薪水第二高?我想先把問題改成:「怎麼找薪水最高/最低?」,找到之後再問:「怎麼排序而且拿第二個人?」類似這樣,像這題就是一個leetcode的題目,掌握這種技巧去想,解問題就不會那麼難了,甚至還有它的樂趣。

第四步:構思問題

回答問題,這裡可能需要收集很多資料來回答某個自己缺乏的知識。

比如不懂語法、不懂怎麼報稅,就需要去查該怎麼做。這個時代我們需要建立第二個大腦,知道該怎麼搜集資訊、我們想要的資料在哪裡,掌握了這點就能夠有自信面對未知的問題。

第五步:組合解法

把拆解的問題一一擊破之後,就重組在一起回答完整的方案。

管理顧問常常這樣子做,利用金字塔思維告訴您答案,接著把答案組出來。我很喜歡這種有邏輯、具有說服力的方式,就像我認為「從容是美德」,而所謂從容,就是說服自己與他人的組合答案的過程。

第六步:問「然後呢?」

不停問然後呢?所以我解決了這個問題,我的下一步應該是什麼呢?

像資料科學家常常會在專案開始前就先問:我的分析結果可以對團隊有什麼impact?

可以達成什麼行動嗎?有行動就會產生價值。

然後呢?我要往哪邊去?

我們不能當想法上的巨人,行動上的侏儒。

問然後呢?有助於我們邁開前往下一階段的步伐。

其實練習真的沒什麼,技巧就是在生活中多多運用自己的思考方式問問題、解決問題。不知不覺就能內化成自己的知識了。程式也是如此,多寫、多想有助於培養這種思維,每個人都是學生,都在練mindset,有一套配合自己思考的框架 ,是遊走在知識領域的重要手段。當然我們會需要跳出框架思考、多做brain storm,但這不影響人人需要一個引導思考的工具,對嗎?

那麼到這篇,我已經把這些寶貴的(自己講XD)思考技巧都分享出來了,歡迎跟我分享您的思考心得,或者繼續往下讀coding系列,會越來越聚焦在程式設計與圈內的軟體工程師上!敬請期待!

好文作者—

One Comment

Leave a Reply