Software Mistakes and Tradeoffs 中文版:掌握軟體開發中的錯誤、取捨與關鍵決策 (Software Mistakes and Tradeoffs: How to make good programming decision)

Tomasz Lelek、Jon Skeet 著 錢亞宏、盧國鳳 譯

  • Software Mistakes and Tradeoffs 中文版:掌握軟體開發中的錯誤、取捨與關鍵決策 (Software Mistakes and Tradeoffs: How to make good programming decision)-preview-1
  • Software Mistakes and Tradeoffs 中文版:掌握軟體開發中的錯誤、取捨與關鍵決策 (Software Mistakes and Tradeoffs: How to make good programming decision)-preview-2
  • Software Mistakes and Tradeoffs 中文版:掌握軟體開發中的錯誤、取捨與關鍵決策 (Software Mistakes and Tradeoffs: How to make good programming decision)-preview-3
  • Software Mistakes and Tradeoffs 中文版:掌握軟體開發中的錯誤、取捨與關鍵決策 (Software Mistakes and Tradeoffs: How to make good programming decision)-preview-4
  • Software Mistakes and Tradeoffs 中文版:掌握軟體開發中的錯誤、取捨與關鍵決策 (Software Mistakes and Tradeoffs: How to make good programming decision)-preview-5
  • Software Mistakes and Tradeoffs 中文版:掌握軟體開發中的錯誤、取捨與關鍵決策 (Software Mistakes and Tradeoffs: How to make good programming decision)-preview-6
  • Software Mistakes and Tradeoffs 中文版:掌握軟體開發中的錯誤、取捨與關鍵決策 (Software Mistakes and Tradeoffs: How to make good programming decision)-preview-7
  • Software Mistakes and Tradeoffs 中文版:掌握軟體開發中的錯誤、取捨與關鍵決策 (Software Mistakes and Tradeoffs: How to make good programming decision)-preview-8
  • Software Mistakes and Tradeoffs 中文版:掌握軟體開發中的錯誤、取捨與關鍵決策 (Software Mistakes and Tradeoffs: How to make good programming decision)-preview-9
Software Mistakes and Tradeoffs 中文版:掌握軟體開發中的錯誤、取捨與關鍵決策 (Software Mistakes and Tradeoffs: How to make good programming decision)-preview-1

買這商品的人也買了...

商品描述

[名家名著] 37

 

Software Mistakes and Tradeoffs中文版:掌握軟體開發中的錯誤、取捨與關鍵決策

 

Software Mistakes and Tradeoffs: How to make good programming decisions



Teddy長期研究Pattern Language,有一個很深的體會:每一個設計決策,都只是「局部的回應」。真正困難的,是把這些局部組織成一個和諧的整體。

AI可以提供大量「局部解法」,但整合這些解法需要的,是對「這個團隊、這個市場、這個時間點」的情境理解。這種情境沒辦法完全寫成規格書,因為它牽涉到人的能力邊界、組織的演進節奏、技術債的承受極限。這些東西每個專案都不一樣,而且會隨時間改變。這不是AIcontext window再怎麼變大就能解決的問題。

要看見整體,不能只盯著零件。AI幫你把門檻拉低之後,真正稀缺的能力,是在眾多可能性之中,做出有脈絡、能長期承擔的選擇。不是盲目的節制,而是清楚知道代價之後,有意識地決定扛下哪些、放掉哪些。

如果鄉民們希望自己在AI時代,不只是會下提示詞的PM,而是能為系統負責的架構師,那麼這本書值得細細品味。

────「搞笑談軟工」板主Teddy Chen 專文推薦



在軟體工程的實務現場,幾乎沒有哪一個決策是「免費」的。每一次選擇某種架構、某種設計模式、某種API風格,或某種錯誤處理策略,實際上都意味著放棄其他可能性。這些放棄,往往不會在當下立即顯現代價,而是潛伏在未來的維護成本、效能瓶頸、擴充困難、組織協作摩擦與技術債之中。

Software Mistakes and Tradeoffs中文版》所關注的,正是這些在實際上線系統(production systems)中反覆出現的取捨問題。本書並不試圖建立一套抽象理論,而是從具體情境出發:在特定背景、限制與壓力之下,團隊如何做出選擇?有哪些替代方案?當時忽略了什麼?哪些後果在事後才浮現?哪些判斷其實是合理的,只是代價延後到未來?

這樣的視角,使本書成為一本極具實務厚度的工程決策紀錄。

────博碩文化資深編輯與翻譯 盧國鳳



真希望我能在職涯更早期就讀到這本書。書中濃縮了許多從實務中得來的寶貴經驗。

────Dave CorunAvanade



清楚而精準地總結了多年軟體工程實務的精華,新手與老手都值得一讀。

────Rafael Avila Martinez,萬事達卡(Mastercard



本書深入剖析程式設計過程中內在的衝突,以及這些衝突如何實際影響你所寫的程式碼。

────Roberto Casadei,波隆那大學(Università di Bologna



精準點出每位軟體開發者都會遇到的核心痛點,並以清楚、具教學性的方式提出解法。

────Nelson González,通用電氣(General Electric




在軟體專案的每一個階段,都充滿了取捨的抉擇。當你在效能、安全性、成本、交付時程、功能與更多因素之間取得平衡時,看似合理的設計選擇,往往會在正式上線後成為問題的根源。
 

本書透過一個又一個真實且貼近實務的案例,說明那些在當下「看起來沒錯」的決策,為何會在實際環境中演變成錯誤,同時也帶領讀者思考,當初是否存在更好的選擇。

兩位作者以數十年的軟體工程經驗為基礎,分享那些令人印象深刻甚至帶點「教訓意味」的錯誤經驗。書中不僅指出問題本身,更搭配具體可行的建議與實務技巧,協助讀者在未來的專案中,做出更成熟、更有前瞻性的設計決策。


【內容亮點】
以系統化的方式思考軟體設計
挑選合適的工具、函式庫與框架
緊耦合與鬆耦合,兩者如何影響團隊協作與系統演進
寫出精確、容易實作也容易測試的需求規格
適合中階至資深的軟體工程師與系統架構師,特別是經常需要對軟體設計與實作方向做出關鍵決策的讀者


【下載範例程式檔案】
https://github.com/tomekl007/manning_software_mistakes_and_tradeoffs

作者簡介

作者簡介
Tomasz Lelek
長期投入於實際上線系統的開發,橫跨多種服務與系統架構,並精通JVM生態系。
Jon Skeet
Google資深工程師,以在Stack Overflow上的實務貢獻廣受工程師社群推崇,同時也是《C# in Depth》的作者。

目錄大綱

齊聲讚譽
推薦序
譯者序/編輯導讀
前言
致謝
關於本書
關於作者
關於封面插圖

Chapter 01:概述
1.1 所有決策與模式的採用都有其代價
1.2 為何程式設計模式不是萬靈丹
1.3 為何架構設計模式不是萬靈丹
重點回顧

Chapter 02:程式碼重複不一定是壞事:重複與彈性的取捨
2.1 程式庫間的共用程式碼與重複
2.2 函式庫與程式碼共用
2.3 以微服務的形式共用
2.4 利用重複來增進鬆耦合
2.5 運用繼承機制透過API設計來減少重複
重點回顧

Chapter 03:例外與錯誤處理的設計模式
3.1 例外的繼承關係
3.2 在自造程式碼中的最佳錯誤處理模式
3.3 例外處理的反模式
3.4 來自第三方函式庫的例外
3.5 多執行緒環境中的例外
3.6 使用Try的函式型錯誤處理方式
3.7 例外處理程式碼的效能比較
重點回顧

Chapter 04:彈性與複雜度的取捨
4.1 穩健但無法擴充的API
4.2 允許客戶端自行設定度量指標的框架
4.3 透過hook提供API的擴充
4.4 透過監聽器提供API的擴充
4.5 分析API的彈性與維護的成本
重點回顧

Chapter 05:過早最佳化與要徑最佳化的取捨:影響程式碼效能的決策
5.1 在什麼情況下過早最佳化並不好
5.2 程式碼中的要徑
5.3 具有潛在要徑的WordsService
5.4 偵測程式碼中的要徑
5.5 改善要徑的效能
重點回顧

Chapter 06:API在簡潔與維護成本上的取捨
6.1 作為被其他工具引用的基礎函式庫
6.2 直接暴露依賴函式庫的設定
6.3 抽象化依賴函式庫設定的工具
6.4 新增雲端客戶端函式庫的設定
6.5 停用與移除雲端客戶端函式庫的設定
重點回顧

Chapter 07:有效率地處理日期與時間資料
7.1 日期與時間資訊的概念
7.2 準備處理日期與時間資訊
7.3 實作日期與時間程式碼
7.4 應該規格化並測試的邊界情況
重點回顧

Chapter 08:妥善運用資料落地與記憶體
8.1 什麼是資料落地?
8.2 資料的分割與切分
8.3 跨多個分割合併大型資料集
8.4 資料處理:記憶體vs.磁碟
8.5 使用Apache Spark合併
重點回顧

Chapter 09:對第三方函式庫引用的取捨:外部也會成為自身的一部分
9.1 對函式庫的設定負全責:當心那些預設值
9.2 平行執行模型與可擴展性
9.3 可測試性
9.4 第三方函式庫的依賴關係
9.5 第三方依賴關係的選擇與維護
重點回顧

Chapter 10:分散式系統中的一致性與不可分割性
10.1 至少一次(at-least-once)的傳輸機制
10.2 去重複函式庫的簡易實作
10.3 在分散式系統中實作去重複時的常見錯誤
10.4 讓邏輯具備不可分割性以防止爭用
重點回顧

 
Chapter 11:分散式系統在資訊傳輸上的語意
11.1 事件驅動架構
11.2 以Apache Kafka為基礎的生產者與消費者應用程式
11.3 生產者端的邏輯
11.4 消費者在傳送上的不同語意
11.5 運用傳遞保證以提供容錯能力
重點回顧

Chapter 12:版本控管與版本相容性
12.1 關於版本控管
12.2 套件/函式庫的版本控管
12.3 網路API的版本控管
12.4 資料儲存的版本控管
重點回顧

Chapter 13:追趕技術趨勢與維護成本的取捨
13.1 何時該使用依賴性注入框架
13.2 何時該使用反應式程式設計
13.3 何時該使用函式型程式設計
13.4 惰性vs.積極評估與初始化
重點回顧

最後瀏覽商品 (17)