這集 Podcast 深入探討了 Google 在軟體工程領域的實踐與智慧,特別聚焦於如何應對時間、規模以及人的挑戰。
內容概要:
- 海勒姆定律 (Hyrum's Law):討論了系統任何可觀察行為都可能被依賴的現實,及其對軟體永續性的衝擊。
- 規模化挑戰:比較了傳統開發分支與 Google 推崇的「主幹開發 (Trunk Based Development)」,並強調自動化測試與持續整合 (CI) 的重要性。
- 測試文化:介紹了 Google 的「Beyoncé 法則」(If you liked it, then you should have put a test on it),以及將測試分為小、中、大三種規模的策略,並傾向使用真實依賴進行整合測試。
- 人的因素:強調了「謙遜、尊重、信任」作為團隊協作基石的重要性,以及創造「心理安全感」的必要性,以促進知識共享並避免「部落知識」。
- 可讀性認證 (Readability):介紹了 Google 透過此機制進行知識傳承與確保程式碼品質的方法。
- 程式碼審查 (Code Review):討論其在確保品質、促進知識共享、維持一致性,甚至扮演「壞警察」角色以促進客觀回饋的功能。
軟體工程是一套包含工具、流程與文化的系統工程,目標是讓程式碼能長期保有價值,並讓團隊能有效協作。最後,節目提出一個問題,引導聽眾思考如何在設計 API 或新功能時,減少未來因海勒姆定律而難以修改的意外依賴。
章節大綱:
00:00:00 節目開始
00:00:20 從 Google 經驗看軟體工程的時間、規模與人的挑戰
00:01:03 海勒姆定律 (Hyrum's Law) 的探討
00:02:00 程式碼庫的永續性與規模擴展性
00:02:40 隱性依賴:永續性的大敵
00:03:01 海勒姆定律的實際案例:Google 編譯器升級的挑戰
00:03:32 規模的挑戰:傳統開發分支的困境
00:04:42 Google 的主幹開發 (Trunk Based Development) 策略
00:04:59 自動化測試與持續整合 (CI) 的重要性
00:05:38 Google 的測試文化與 Beyoncé 法則
00:06:31 測試的真正目的:確保程式碼的長期維護與重構
00:06:50 Google 的測試分類:小、中、大型測試
00:07:43 整合測試的重要性與真實依賴 (Classicist vs. Mockist)
00:09:17 人的因素:隱藏程式碼與團隊協作
00:09:51 團隊協作三基石:謙遜、尊重、信任
00:10:23 心理安全感的重要性
00:10:59 部落知識的危害與知識傳承
00:11:30 Google 的可讀性認證 (Readability) 機制
00:12:46 程式碼審查 (Code Review) 的多重效益
00:13:34 總結:軟體工程是一套系統工程
00:14:51 給聽眾的思考題:如何設計以減少意外依賴
00:15:46 結語與感謝
[ 相關連結 ]
[ Will 保哥的部落格 - The Will Will Web ]
http://blog.miniasp.com
[ Will 保哥的技術交流中心 ] (Facebook 粉絲專頁)
https://www.facebook.com/will.fans
[ Will 保哥的推特 ]
https://twitter.com/Will_Huang