根據我的個人書架和一些研究,我列出了一些比較重要的軟體工程書籍,我相信它們可以讓讀者的專業技術更上一層樓。
資料結構和演演算法是每個軟體工程師的基礎支柱,雖然這些在日常工作中用的不多,但是瞭解不同的技術和模式是一個很好的加分項 Introduction To Algorithms 是精通資料結構和演演算法的完美全能書籍,這是一本理論性很強的書,不過它也有完美的演演算法題和解決方案。
中文版:演演算法導論
對於那些正在積極找工作,但是在技術面試中遇到困難的人來說,Cracking The Coding Interview 是一種救贖。在解決不同演演算法難題時,這部傑作可以給你很好的答案。
中文版:程式設計師面試金典
僅僅讓軟體正常工作可不是讓軟體工程師的最終目標。 每次軟體工程師進行程式碼審查時,他/她首先想到的問題應該是: 我可以讓這段程式碼更高效嗎?我可以讓這段程式碼佔用更少的記憶體嗎?程式碼是否整潔?我可以使用不同的 OOP 技術嗎?而 Clean Code 肯定可以幫助您提高重構的技能。
中文版:程式碼整潔之道
Martin Fowler 的重構是 Clean Code 的替代書籍, 它可能是對前一個的補充,雖然某些部分可能看起來像重複的。
中文版:重構
物件導向程式設計可以讓軟體系統更加靈活、有效,以及擁有更好的程式碼可讀性。經驗豐富的軟體工程師應該經常使用這些技術。(如果技術棧合適的話……)。Design Patterns 是一本暢銷書,它不僅教給我們 OOP,還教給我們很多適用於特定用例的不同設計模式。
中文版:設計模式 - 可複用物件導向軟體的基礎
Robert C. Martin 的登峰之作,圍繞「架構整潔」這一重要導向,系統地剖析其緣起、內涵及應用場景,涵蓋軟體研發完整過程及所有核心架構模式。
中文版:架構整潔之道
本書根據軟體生命期的特點,分預想構架、建立構架、分解構架和從一個系統至多個系統進行闡述。
中文版:軟體架構實踐
本書是第二版,System Design Interview 是從全域性角度理解不同軟體、產品、架構的完美書籍。對於那些積極尋找軟體工作的人來說,這本書很有幫助。
作者 Alex Xu 是一位經驗豐富的軟體工程師, 曾在 Twitter, Apple 和 Oracle 任職,來自CS名校卡內基梅隆大學,熱衷於系統設計。
暫無中文版, 不過筆者之前曾翻譯過第一版的幾章內容,感興趣的可以看一下。
【系統設計】設計一個支援百萬使用者的系統
【系統設計】設計一個限流元件
【系統設計】設計一個短連結系統
Designing Data-Intensive Applications 是我自己最喜歡的書之一, 經典之作 DDIA。這本書側重於介紹分散式環境中的巨量資料軟體系統。
中文版:資料密集型應用系統設計
Eric Evans 的 Domain Driven Design 是一部經典著作,在出版 20 年後仍然很受歡迎。
領域模型使開發人員可以表達豐富的軟體功能需求,由此實現的軟體可以滿足使用者真正的需要,因此被公認為是軟體設計的關鍵所在,其重要性顯而易見。
但講述如何將領域模型用於軟體開發過程的傑出的實用資料卻不多見。本書正是這一領域聲名顯赫的作品,受到眾多業界大師的讚美和推介,廣受讀者好評。
中文版:領域驅動設計
另一個熱門話題是當下流行的微服務, Building Microservices 是理解這個架構指南的基礎書籍,特別是在從單體系統開始遷移到微服務。
中文版:微服務設計
DevOps 的氛圍在快速增長,《 Effective DevOps》是想要深入瞭解 DevOps 哲學的開發人員的基礎書籍之一。雖然這本書可能看起來很舊,但它絕對很有用。
中文版:Effective DevOps 中文版
吾生也有涯,而知也無涯。以有涯隨無涯,殆己!所以在學習的過程中也要保持一個健康的身體狀態。
中文版:程式設計師健康指南
希望對您有用!