軟體工程師第一性原理思考 - AddyOsmani
第一性原理思維有助於解決複雜問題,因為它可以讓您將問題分解為核心元素,然後從中系統地構建解決方案。與嘗試使用先入為主的概念或根據您過去的經驗對問題做出假設相比,這可能是一種更有效的方法。
它用於電腦科學、工程和物理學,但也可以從任何行業的第一性原理思維中吸取教訓。在這篇文章中,我將解釋什麼是第一原則思維,為什麼它很重要,以及如何在您自己的生活或業務中使用它。
在高層次上,應用第一性原理大致有四個步驟:
- 確定您要解決的問題
- 將其分解為基本部分
- 質疑並挑戰你的假設
- 從頭開始建立新的解決方案
第一性原則是什麼意思?
第一原則是一個起點或假設,你用它來建立你的論點。第一原則思維指的是將一個問題分解成其基本部分,並按順序解決每個部分,直到得出答案的過程。
第一原則思維與其他解決問題的技巧不同,因為它允許你專注於問題的最重要因素,而不會被無關的細節或二手資訊所干擾。遵循這種方法,與直接跳過推理過程中的某些步驟相比,你能更快、更自信地達成解決方案。
第一原則思維是一種透過觀察根本原因來分析複雜問題的方法。
第1步:確定你要解決的問題,並將其分解為基本部分
第一原則的思考從確定問題最重要的部分開始,然後將它們分解成其組成部分。
- 識別你的問題中最重要的部分
- 將每個部分分解成其組成部分,然後確定每個部分與整體的關係。
- 重複這個過程,直到你把所有的東西都分解到你能做到的程度為止。
第二步:問為什麼。
一旦你把問題分解成其組成部分,就該問為什麼了。問五次 "為什麼 "是一種有用的方法,可以從源頭上找出某個問題或結果的根本原因。當你每次都問 "為什麼?"並不斷深入挖掘時,你最終可以找到任何問題或結果的核心--即使看起來有多個原因在起作用。為了說明這一點,讓我們看一個例子。你可能覺得你的團隊沒有有效地工作,因為他們彼此之間沒有很好地溝通。然而,在問了自己五次原因後(併發揮你的想象力),你可能會得出這樣的結論。
- 為什麼?我們沒有很好地溝通,因為我們沒有對哪些資訊需要在各部門之間共享建立明確的期望。
- 為什麼?因為公司還沒有建立起嚴格的跨部門資訊共享流程
- 為什麼?因為領導可能不知道員工在其部門團隊內自由分享資訊有多重要
- 等等。
第三步:挑戰你的假設
假設是你建立解決方案的基礎。它們既可以是正確的,也可以是錯誤的,但它們總是基於你知道在這個時間點上是真實的事實。如果你的假設是正確的,那麼它們應該引導你找到一個好的解決方案;如果它們是不正確的,那麼它們可能會導致以後的問題。
假設可以分為三類:
- 市場假設(關於市場本身)
- 問題假設(關於問題本身)
- 解決方案假設(關於你提出的解決方案及其組成部分)
- 人員假設(關於參與實現成功的人員)。
第四步:透過關注你的目標,從頭開始建立一個新的解決方案
下一步是專注於你的目標。第一步是確定問題,第二步是收集關於為解決問題需要做什麼的資訊。現在是你需要把你的注意力引向解決這個問題的最終結果的時候了。
在實踐中,這意味著:
- 不要被細節所干擾,除非它們與解決你的問題和實現你的目標有關。
- 專注於實現這些目標,不要擔心沿途可能發生的事情。
將第一性原則應用於軟體專案
第一性原則的思維方式可以在幾個方面幫助軟體開發。這種方法可以帶來好處的一些具體方式包括:。
- 透過將問題分解為基本原則並確定關鍵要求和目標,它有助於澄清軟體要解決的問題或挑戰。
- 透過使用確定的原則來指導技術、架構和設計模式的選擇,它為做出明智的設計和開發決策提供了基礎。
- 透過使用這些原則來評估解決方案的穩健性和有效性,它有助於識別和解決對問題的理解中的差距或不一致之處。
這裡有兩個將第一原理思維應用於開發產品時可以提出的問題的例子。
設計一個商業應用
產品問題:
- 使用者為什麼需要這個應用?為了快速找到併購買一件物品,因為他們需要它。
- 為什麼他們需要我們減少結賬過程中的步驟?他們想節省時間。一鍵結賬可能有幫助。
- 他們為什麼需要我們支援評論?這有助於建立對他們所購買的物品的信任,可以幫助他們更快地決定購買。
工程問題。:
- 這些功能的最低要求是什麼?一個搜尋框和過濾結果的方法,以及產品頁面、分類頁面和結賬的方法。
- 我們可以使用哪些技術來建立這些功能?商務平臺已經有一個用於搜尋、過濾和顯示結果的API。也許在此基礎上用CSS+JS做一個基本的UI就足夠了。
- 我們的使用者如何相互交流?他們可以留下產品評論,這對系統中的每個人都是可見的。我們可能需要支援建立/管理評論。
建立一個社交網路應用
問題:
- 使用者為什麼需要這個應用?一個使用者想找到其他有類似興趣的人,然後與他們聯絡。他們可以搜尋個人資料,閱讀關於一個人的公共資訊,並在他們的個人資料上留下評論。
- 為什麼使用者需要相互交流?他們想傳送資訊或留下評論,這些資訊在他們的個人資料頁面上是可見的。
- 我們的資料模型是什麼?使用者有檔案,他們可以在他們的檔案中新增照片。我們將如何在系統中表示使用者?一個使用者將有一個名字,一個電子郵件地址(我們可以用它來傳送訊息),以及其他一些基本資訊,如年齡或性別。
用第一性原理思考的缺點
用第一原理思考的一些缺點是,它可能很難做到,尤其是當我們不習慣這樣思考的時候。它還要求我們思想開放,願意投入時間和精力從各個角度去理解問題,這樣我們就不會錯過任何重要的東西。
這很耗費時間--因為我們必須不斷地將問題分解成越來越小的組成部分,直到我們達到它們的基本構成部分。
它可能很難知道何時停止--如果我們的目標是找到做某事(如製造汽車)的最有效方法,那麼,如果有其他方法可以實現這一目標,需要更少的能源或更少的資源,這可能並不重要(也許其他製造商已經找到了如何更便宜地製造汽車,但他們只是不想讓我們知道)。
你發現你的一個或多個信念是沒有根據的。(假設前提是沒有根據的)
結論
第一性原則思維是解決複雜問題的有力工具。這種方法可以幫助你思考問題的真正根源,避免落入透過類比思考的陷阱。
你可能會發現,其他方法,如蘇格拉底方法,可以很好地補充第一原則的思考。透過從多個角度考慮問題,你可以獲得對問題更全面的理解,並提出更有創意和有效的解決方案。
以下是你可以考慮提出的一些問題。
- 我怎麼知道這是真的?
- 可能存在哪些其他觀點?
- 我怎樣才能支援我的信念?
- 為什麼我一開始就相信這是真的?
透過問這些問題,你可以找到問題的根源,並確定有效和可持續的解決方案。
相關文章
- 思考工具之第一性原理 | Untools
- 【招聘】前端軟體工程師、高階前端軟體工程師前端軟體工程工程師
- 要做軟體工程師,而不是前端工程師軟體工程工程師前端
- 軟體工程師前景分析軟體工程工程師
- [ 招聘 | 上海 ] 軟體工程師 / 全棧工程師 / 晶片設計工程師軟體工程工程師全棧晶片
- 深入思考軟體工程,開啟 DevOps 之旅軟體工程dev
- 想成為首席軟體工程師?請放下編譯原理來學習彈性工程!軟體工程工程師編譯原理
- [上海&EDA]持續招聘晶片設計工程師 | 全棧工程師 | 軟體工程師 | 嵌入式軟體工程師 // 年薪30W+起晶片工程師全棧軟體工程
- 譯:軟體工程師的軟技能(一)軟體工程工程師
- 軟體設計師:軟體工程基礎知識軟體工程
- 如何從軟體工程師轉型到人工智慧工程師?軟體工程工程師人工智慧
- 軟體工程師課程輔導軟體工程工程師
- 依賴——軟體工程師的痛軟體工程工程師
- 如何以軟體工程師的身份工作?軟體工程工程師
- 軟體測試工程師的技能樹工程師
- 軟體測試工程師的尷尬工程師
- 如何成為 10 倍軟體工程師軟體工程工程師
- 軟體測試工程師的職責工程師
- 軟體測試工程師如何提升自己工程師
- [上海 -- EDA]招聘晶片設計工程師 | 全棧工程師 | 軟體工程師 // 年薪30W+起晶片工程師全棧軟體工程
- 軟體測試全棧工程師技能樹全棧工程師
- 尋找卓越的(Android)軟體工程師(譯)Android軟體工程工程師
- 【上海】Atlas Protocol招聘軟體工程師(Golang,JS)Protocol軟體工程工程師GolangJS
- iOS工程師Mac上的必備軟體iOS工程師Mac
- 軟體工程師職業是青春飯嗎?軟體工程工程師
- 軟體工程師必讀的13本書軟體工程工程師
- 六年軟體測試工程師感悟工程師
- 軟體實施工程師職業規劃工程師
- 幽默:程式設計師與軟體工程師的區別程式設計師軟體工程工程師
- 軟體工程-軟體工程層狀模型(EHM)軟體工程模型
- 剛入行的軟體測試工程師如何自學軟體測試?工程師
- 軟體工程 第一章 軟體與軟體工程軟體工程
- 淺談軟體工程師的程式碼素養軟體工程工程師
- 吳軍博士眼中的五級軟體工程師軟體工程工程師
- 中級 Java 軟體工程師會遇到的事情Java軟體工程工程師
- 工程師文化:正版軟體應該公司買嗎工程師
- 軟體測試工程師需要具備哪些能力工程師
- 軟體測試工程師的待遇怎麼樣工程師