軟體工程師第一性原理思考 - AddyOsmani
第一性原理思維有助於解決複雜問題,因為它可以讓您將問題分解為核心元素,然後從中系統地構建解決方案。與嘗試使用先入為主的概念或根據您過去的經驗對問題做出假設相比,這可能是一種更有效的方法。
它用於電腦科學、工程和物理學,但也可以從任何行業的第一性原理思維中吸取教訓。在這篇文章中,我將解釋什麼是第一原則思維,為什麼它很重要,以及如何在您自己的生活或業務中使用它。
在高層次上,應用第一性原理大致有四個步驟:
- 確定您要解決的問題
- 將其分解為基本部分
- 質疑並挑戰你的假設
- 從頭開始建立新的解決方案
第一性原則是什麼意思?
第一原則是一個起點或假設,你用它來建立你的論點。第一原則思維指的是將一個問題分解成其基本部分,並按順序解決每個部分,直到得出答案的過程。
第一原則思維與其他解決問題的技巧不同,因為它允許你專注於問題的最重要因素,而不會被無關的細節或二手資訊所干擾。遵循這種方法,與直接跳過推理過程中的某些步驟相比,你能更快、更自信地達成解決方案。
第一原則思維是一種透過觀察根本原因來分析複雜問題的方法。
第1步:確定你要解決的問題,並將其分解為基本部分
第一原則的思考從確定問題最重要的部分開始,然後將它們分解成其組成部分。
- 識別你的問題中最重要的部分
- 將每個部分分解成其組成部分,然後確定每個部分與整體的關係。
- 重複這個過程,直到你把所有的東西都分解到你能做到的程度為止。
第二步:問為什麼。
一旦你把問題分解成其組成部分,就該問為什麼了。問五次 "為什麼 "是一種有用的方法,可以從源頭上找出某個問題或結果的根本原因。當你每次都問 "為什麼?"並不斷深入挖掘時,你最終可以找到任何問題或結果的核心--即使看起來有多個原因在起作用。為了說明這一點,讓我們看一個例子。你可能覺得你的團隊沒有有效地工作,因為他們彼此之間沒有很好地溝通。然而,在問了自己五次原因後(併發揮你的想象力),你可能會得出這樣的結論。
- 為什麼?我們沒有很好地溝通,因為我們沒有對哪些資訊需要在各部門之間共享建立明確的期望。
- 為什麼?因為公司還沒有建立起嚴格的跨部門資訊共享流程
- 為什麼?因為領導可能不知道員工在其部門團隊內自由分享資訊有多重要
- 等等。
第三步:挑戰你的假設
假設是你建立解決方案的基礎。它們既可以是正確的,也可以是錯誤的,但它們總是基於你知道在這個時間點上是真實的事實。如果你的假設是正確的,那麼它們應該引導你找到一個好的解決方案;如果它們是不正確的,那麼它們可能會導致以後的問題。
假設可以分為三類:
- 市場假設(關於市場本身)
- 問題假設(關於問題本身)
- 解決方案假設(關於你提出的解決方案及其組成部分)
- 人員假設(關於參與實現成功的人員)。
第四步:透過關注你的目標,從頭開始建立一個新的解決方案
下一步是專注於你的目標。第一步是確定問題,第二步是收集關於為解決問題需要做什麼的資訊。現在是你需要把你的注意力引向解決這個問題的最終結果的時候了。
在實踐中,這意味著:
- 不要被細節所干擾,除非它們與解決你的問題和實現你的目標有關。
- 專注於實現這些目標,不要擔心沿途可能發生的事情。
將第一性原則應用於軟體專案
第一性原則的思維方式可以在幾個方面幫助軟體開發。這種方法可以帶來好處的一些具體方式包括:。
- 透過將問題分解為基本原則並確定關鍵要求和目標,它有助於澄清軟體要解決的問題或挑戰。
- 透過使用確定的原則來指導技術、架構和設計模式的選擇,它為做出明智的設計和開發決策提供了基礎。
- 透過使用這些原則來評估解決方案的穩健性和有效性,它有助於識別和解決對問題的理解中的差距或不一致之處。
這裡有兩個將第一原理思維應用於開發產品時可以提出的問題的例子。
設計一個商業應用
產品問題:
- 使用者為什麼需要這個應用?為了快速找到併購買一件物品,因為他們需要它。
- 為什麼他們需要我們減少結賬過程中的步驟?他們想節省時間。一鍵結賬可能有幫助。
- 他們為什麼需要我們支援評論?這有助於建立對他們所購買的物品的信任,可以幫助他們更快地決定購買。
工程問題。:
- 這些功能的最低要求是什麼?一個搜尋框和過濾結果的方法,以及產品頁面、分類頁面和結賬的方法。
- 我們可以使用哪些技術來建立這些功能?商務平臺已經有一個用於搜尋、過濾和顯示結果的API。也許在此基礎上用CSS+JS做一個基本的UI就足夠了。
- 我們的使用者如何相互交流?他們可以留下產品評論,這對系統中的每個人都是可見的。我們可能需要支援建立/管理評論。
建立一個社交網路應用
問題:
- 使用者為什麼需要這個應用?一個使用者想找到其他有類似興趣的人,然後與他們聯絡。他們可以搜尋個人資料,閱讀關於一個人的公共資訊,並在他們的個人資料上留下評論。
- 為什麼使用者需要相互交流?他們想傳送資訊或留下評論,這些資訊在他們的個人資料頁面上是可見的。
- 我們的資料模型是什麼?使用者有檔案,他們可以在他們的檔案中新增照片。我們將如何在系統中表示使用者?一個使用者將有一個名字,一個電子郵件地址(我們可以用它來傳送訊息),以及其他一些基本資訊,如年齡或性別。
用第一性原理思考的缺點
用第一原理思考的一些缺點是,它可能很難做到,尤其是當我們不習慣這樣思考的時候。它還要求我們思想開放,願意投入時間和精力從各個角度去理解問題,這樣我們就不會錯過任何重要的東西。
這很耗費時間--因為我們必須不斷地將問題分解成越來越小的組成部分,直到我們達到它們的基本構成部分。
它可能很難知道何時停止--如果我們的目標是找到做某事(如製造汽車)的最有效方法,那麼,如果有其他方法可以實現這一目標,需要更少的能源或更少的資源,這可能並不重要(也許其他製造商已經找到了如何更便宜地製造汽車,但他們只是不想讓我們知道)。
你發現你的一個或多個信念是沒有根據的。(假設前提是沒有根據的)
結論
第一性原則思維是解決複雜問題的有力工具。這種方法可以幫助你思考問題的真正根源,避免落入透過類比思考的陷阱。
你可能會發現,其他方法,如蘇格拉底方法,可以很好地補充第一原則的思考。透過從多個角度考慮問題,你可以獲得對問題更全面的理解,並提出更有創意和有效的解決方案。
以下是你可以考慮提出的一些問題。
- 我怎麼知道這是真的?
- 可能存在哪些其他觀點?
- 我怎樣才能支援我的信念?
- 為什麼我一開始就相信這是真的?
透過問這些問題,你可以找到問題的根源,並確定有效和可持續的解決方案。
相關文章
- 思考工具之第一性原理 | Untools
- 混沌大學,認知升級之第一性原理 - 第一性原理【學習小記】
- 泛化的第一性原理 - KDnuggets
- 求索資料結構的第一性原理資料結構
- 運用第一性原理探尋AI本質AI
- 第一性原則:伊隆·馬斯克(Elon Musk)論自我思考的力量 - jamesclear馬斯克
- 當第一性原理遇上AI,發現200多種新催化劑AI
- LinkSLA:讓運維價值迴歸使用者“第一性原理”運維
- 網易櫻花工作室製作人談3A,善用第一性原理
- 談核心玩法設計的一點點理解,從第一性原理出發
- 【深度思考】聊聊JDK動態代理原理JDK
- 【深度思考】聊聊CGLIB動態代理原理CGLib
- 【招聘】前端軟體工程師、高階前端軟體工程師前端軟體工程工程師
- 想成為首席軟體工程師?請放下編譯原理來學習彈性工程!軟體工程工程師編譯原理
- Kubernetes叢集排程器原理剖析及思考
- 在VSCode中能夠視覺化除錯資料的外掛 - addyosmaniVSCode視覺化除錯
- 【招聘】誠聘JAVA軟體工程師∕高階軟體工程師Java軟體工程工程師
- Sp軟體工程師軟體工程工程師
- Vue原理解析(九):搞懂computed和watch原理,減少使用場景思考時間Vue
- 軟體工程師前景分析軟體工程工程師
- 你不是軟體工程師!軟體工程工程師
- 急招軟體工程師軟體工程工程師
- 軟體工程師的困境軟體工程工程師
- 軟體工程師好了歌軟體工程工程師
- Java入門系列之執行緒池ThreadPoolExecutor原理分析思考(十五)Java執行緒thread
- 軟體工程師薪資指南軟體工程工程師
- 所有的軟體工程師們!軟體工程工程師
- 急聘赴日軟體工程師軟體工程工程師
- 第一性沿著高對稱線磁化率的計算
- 【經濟學原理】像經濟學家一樣思考——思維導圖
- 依賴——軟體工程師的痛軟體工程工程師
- 軟體工程師必讀圖書軟體工程工程師
- 軟體工程師的職業生涯軟體工程工程師
- 通往優秀軟體工程師之路軟體工程工程師
- 軟體工程師的鄙視鏈軟體工程工程師
- 軟體工程師面試7大技巧軟體工程工程師面試
- 全棧學徒(軟體工程師)全棧軟體工程工程師
- 高薪招聘.NET軟體工程師 派遣高薪軟體工程工程師