[筆記] 高效工程師的煉成之路:讀《The Effective Engineer》心得
管理學大師 Peter Drucker 曾說:“If you can’t measure it, you can’t improve it."(如果你無法衡量它,你就無法改進它)。
透過本書10個章節,探索如何成為高效的工程師,我們需要深入了解時間槓桿、學習策略、優先排序、迭代速度等多個面向,並在團隊中建立正向的工程文化。
工程師的影響力
這本書《The-Effective-Engineer-How-to-Leverage-Your-Efforts-In-Software-Engineering-to-Make-a-Disproportionate-and-Meaningful-Impact》的核心在於探討如何成為一個高效且有影響力的工程師。
第1章:專注於高槓桿活動
找出並專注於能為你投入的時間產生最高回報的事物。這意味著系統性地尋找提高你時間槓桿的方法,將精力集中在那些能帶來巨大影響的習慣和行動上。
- 使用槓桿來衡量你的工程效能。
- 專注於為你投入的時間產生最高回報的事物。
- 系統性地提高你時間的槓桿。
- 找出更快完成活動的方法,增加活動的影響力,或轉向更高槓桿的活動。
- 將精力集中在槓桿點上。
- 找出能為投入時間帶來巨大影響的習慣。
第2章:優化學習
將學習視為複利,越早優化學習,未來的機會越多。積極尋找能讓你持續成長的工作環境,並在工作內外尋求學習機會,讓自己成為更有效率的工程師。
- 主導你的故事。主動塑造自己的職涯敘事,聚焦於自己能掌控的部分,並將挑戰轉化為機會。
- 專注於你能影響的改變,而不是浪費精力抱怨你無法控制的部分。
- 以成長心態看待失敗和挑戰,視為學習的機會。
- 不要低估你的學習速度。
- 學習就像複利一樣。
- 優化學習,為未來的機會做好最充分的準備。
- 找到能持續助你成長的工作環境。
- 面試團隊或公司的人員。
- 了解他們在新人培訓和指導方面提供哪些機會,內部有多透明,動作有多快,你未來的同事是什麼樣的人,以及你將有多少自主權。
- 把握機會在工作中提升技術能力。
- 向最優秀的同事學習。
- 研究他們的程式碼和程式碼審查。主動加入設計會議,即使只是作為觀察者。了解決策過程和考量因素。
- 利用公司提供的任何教育資源。
- 查看公司是否願意補貼課程或書籍費用。
- 在工作之外尋找學習機會。
- 每天挑戰自己進步1%。
- 成為更快樂更好的學習者。
第3章:定期進行優先排序
將精力放在排定任務優先順序,而非試圖記住所有事項。定期評估並專注於直接產生價值的工作,優先處理重要但不緊急的事務,並減少上下文切換,保護你的創意產出時間。
- 記錄並檢視待辦事項。
- 把精力花在排定任務優先順序和處理任務上,而不是試圖記住它們。
- 把你的大腦當作處理器,而不是記憶庫。
- 專注於直接產生價值的工作。
- 不要試圖做所有事情。
- 要經常問自己是否有更高槓桿的事情可以做。
- 處理重要但不緊急的事務。
- 優先處理能提高你效率的長期投資。
- 減少上下文切換。
- 為你的創意輸出保護大塊時間。
- 限制進行中的項目數量。
- 制定如果-那麼計畫來對抗拖延。
- 養成優先排序的習慣。
- 嘗試找出適合你的工作流程。
- 定期進行優先排序。
第4章:投資在迭代速度上
迭代速度越快,學習和進步的速度也越快。投資開發工具,優化除錯流程,並熟悉你每天使用的開發環境,能帶來長期的效益。
- 迭代越快,學習就越快。
- 不要為了避免錯誤而行動太慢。
- 投資開發工具。
- 更快的編譯時間、更快的部署週期和更快的開發週期都能帶來時間節省效益。
- 優化你的除錯工作流程。
- 投入足夠的時間來縮短這些工作流程。
- 精通你的專業基礎知識。
- 熟悉並高效使用你每天使用的開發環境。
- 全面看待你的迭代循環。
- 不要忽視任何可能在你影響範圍內的組織和團隊相關瓶頸。
第5章:衡量你想改進的事物
難以改進沒有衡量的東西。仔細選擇能激勵你期望行為的指標,並為系統添加監測,了解你的數據,確保你不是在盲目飛行。
- 衡量你的進展。
- 很難改進你沒有衡量的東西。
- 仔細選擇你的頂層指標。
- 不同的指標會激勵不同的行為。
- 弄清楚你想要激勵哪些行為。
- 為你的系統添加監測。
- 系統越複雜,你就越需要監測。
- 了解你的數字。
- 記住或隨時可以查看一些可以作為進度基準或幫助你進行粗略計算的數字。
- 優先考慮數據的完整性。
- 擁有錯誤的數據比沒有數據更糟。
第6章:及早並經常驗證你的想法
以迭代的方式處理問題,通過小規模驗證來降低大型實施的風險。使用A/B測試持續驗證你的產品假設,並建立反饋循環,評估你工作的價值和有效性。
- 以迭代的方式處理問題。
- 每次迭代都提供機會來驗證新想法。
- 通過小規模驗證來降低大型實施的風險。
- 使用A/B測試持續驗證你的產品假設。
- 在獨立項目上工作時,找方法定期獲得反饋。
- 採取願意驗證你決策的態度。
- 建立反饋循環,評估你工作的價值和有效性。
第7章:提高你的專案估算技能
將估算納入專案計畫中,並利用估算來判斷專案是否可行。為未知因素預留緩衝時間,並先做風險最高的任務。了解加班的限制,只有在必要時才加班。
- 將估算納入專案計劃中。
- 估算應該被用作決定在某個日期前交付一組功能是否可行的依據。
- 不要讓期望的目標左右估算。
- 在排程中為未知因素留出緩衝時間。
- 考慮到競爭的工作義務、假期、生病等因素。
- 定義可衡量的里程碑。
- 利用它們作為修改估算的機會。
- 先做風險最高的任務。
- 不要專注於容易做的事情。
- 了解加班的限制。
- 只有在你確信加班能讓你按時完成時才加班。
第8章:在品質與實用性之間取得平衡
建立程式碼審查文化,投資於優秀的軟體抽象化,並通過自動化測試來擴展程式碼品質。管理你的技術債務,專注於累積最多利息的債務,以維持長期發展。
- 建立程式碼審查的文化。
- 在程式碼審查和工具之間找到適當的平衡。
- 投資於優秀的軟體抽象化。
- 通過自動化測試來擴展程式碼品質。
- 首先專注於那些能節省最多時間的測試。
- 管理你的技術債務。
- 專注於累積最多利息的債務。
第9章:盡量減少營運負擔
盡量保持系統簡單,快速失敗找出錯誤的根源,並自動化機械性工作。追求冪等性和可重入性,並計劃和練習失敗模式,增強系統的可靠性。
- 先做簡單的事情。
- 簡單的系統更容易理解、擴展和維護。
- 快速失敗以找出錯誤的根源。
- 自動化機械性工作而不是決策。
- 追求冪等性和可重入性。
- 計劃並練習失敗模式。
第10章:投資於你團隊的成長
幫助你周圍的人成功,將招聘視為優先事項,投資於新人培訓和指導,建立共同的程式碼所有權,並總結和記錄集體智慧,創造一個優秀的工程文化。
- 幫助你周圍的人成功。
- 將招聘視為優先事項。
- 保持高招聘標準,並在發展團隊方面發揮積極作用。
- 投資新人培訓和指導。
- 建立共同的程式碼所有權。
- 增加你的巴士係數(bus factor)。
- 總結並記錄集體智慧。
- 創造一個優秀的工程文化。