一、科學哲學和管理哲學
1.程式開發心理學(The Psychology of Computer Programming)
2.系統化思維導論(An Introduction to Systems Thinking, Silver Anniversary Edition)
3.系統設計的一般原理( General Principles of Systems Design)
4.品質·軟體·管理(第1卷)—— 系統思維(Quality Software Management:Systems Thinking)
5.成為技術領導者——解決問題的有機方法(Becoming A Technical Leader:An Organic Problem-Solving Approach)
6.你的燈亮著嗎?-發現問題的真正所在( Are Your Lights On? How to Figure Out What the Problem Really Is)
7.程式員修鍊之道(The Pragmatic Programmer)
8.與熊共舞:軟體項目風險管理 (Waltzing With Bears: Managing Risk on Software Projects)
9.第五項修鍊: 學習型組織的藝術與實務”( The Fifth Discipline)
從上面看溫伯格的大作入選的最多,其中彼得聖吉的《第五項修鍊》應該和《系統化思維導論》相互補充。軟體專案管理最重要的就是對人的管理,因此《程式開發心理學》對研究程式員的心理四很有協助的,《你的燈亮著嗎》是很好的問題管理和思維模式訓練的書籍,而對於風險管理,特別是對軟體項目的量化風險管理,很少看到有像《與熊共舞》這本書一樣講得透徹的了。以上書籍可以協助我們在系統思維,風險管理,問題管理,以人為本方面得到改進。
二、電腦科學基礎
1.電腦程式設計藝術(The Art of Computer Programming)
2.深入理解電腦系統(Computer Systems A Programmer's Perspective )
3.演算法導論(Introduction to Algorithms, Second Edition)
4.資料結構與演算法分析 —— C語言描述(原書第2版)
5.自動機理論、語言和計算導論(第2版)
6.離散數學及其應用(原書第四版)
7.編譯原理(Compilers: Principles, Techniques and Tools)
8.現代作業系統(Modern Operating System)
9.電腦網路(第4版)(Computer Networks)
10.資料庫系統導論(第7版)(An Introduction to Database Systems(Seventh Edition))
對於管理資訊系統開發方面,最重要的還是演算法導論和資料庫系統導論,其它感覺用上的時候比較少。如果要成為真正的大師,以上都是基礎。
三、軟體工程思想
1.人件(Peopleware : Productive Projects and Teams, 2nd Ed.)
2.人件集 — 人性化的軟體開發
3.人月神話(The Mythical Man-Month)
4.軟體工程 — 實踐者的研究方法(原書第5版)
5.規劃極限編程”( Planning Extreme Programming)
6.RUP導論(原書第3版)”(The Rational Unified Process:An Introduction,Third Edition )
7.統一軟體開發過程”(The Unified Software Development Process)
RUP入選了兩本,可以看到RUP方法論在整個軟體工程思想中的重要作用。用例驅動,架構核心和增量迭代核心要素是所有方法論都可以借鑒的。《人月神話》和《人件》是軟體專案管理必讀圖書,概念完整性,沒有銀彈,進度和人手的關係,焦油坑等讓我們記憶尤深。在這裡沒有看到《敏捷式軟體開發 (Agile Software Development)》這本書,這是一本很值得推薦大家閱讀的書籍。
四、 軟體需求
1.探索需求-設計前的品質( Exploring Requirements: Quality Before Design)
2.編寫有效用例(Writing Effective Use Cases )
五、 軟體設計和建模
1.物件導向方法原理與實踐
2.物件導向軟體構造(英文版.第2版)(Object-Oriented Software Construction,Second Edition )
3.物件導向分析與設計(原書第2版)(Object-Oriented Analysis and Design with Applications)
4.UML物件導向設計基礎(Fundamentals of Object-Oriented Design in UML)
5.UML精粹 —— 標準對象建模語言簡明指南(第2版)( UML Distilled: A Brief Guide to the Standard Object Modeling Language (2nd Edition))
6.UML和模式應用(原書第2版)(Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, Second Edition )
7.設計模式精解(Design Patterns Explained)
8.設計模式:可複用物件導向軟體的基礎”( Design Patterns:Elements of Reusable Object-Oriented software)
9.面向模式的軟體體繫結構 卷1:模式系統”( Pattern-Oriented Software Architecture, Volume 1: A System of Patterns)
10.軟體設計的藝術”(Bringing Design to Software)
印象比較深刻的還是《設計模式精解》和《UML和模式應用》,特別是有過一段時間的編碼實踐後再看會有不少收穫。《物件導向軟體構造》這種書太理論了,無法看下去。這裡再推薦一本《Head First設計模式》。
六、程式設計
1.編程珠磯(Programming Pearls Second Edition )
2.C程式設計語言(第2版·新版)(The C Programming Language )
3.C++ 程式設計語言(特別版)(The C++ Programming Language, Special Edition)
4.C++ Primer (3RD)
5.C++語言的設計和演化( The Design and Evolution of C++)
6.C++ 編程思想(2ND)(Thinking in C++ Second Edition)
7.Effective C++ & More Effective C++
8.C++編程藝術 (The Art of C++ )
9.Java 編程思想:第3版( Thinking in Java, Third Edition)
10.Effective Java
拋開語言來講,沒有看到《代碼大全》這本書。這本書應該是要收錄進來才對。
七、軟體測試
1.測試驅動開發(中文版)(Test-driven development:by example )
2.物件導向系統的測試(Testing Object-Oriented System: Models, Patterns, and Tools)
3.單元測試之道Java版 —— 使用Junit”/ “單元測試之道C#版——使用NUnit” (Pragmatic Unit Testing:In Java with JUnit / Pragmatic Unit Testing:In C# with NUnit )
八、軟體維護和重構
1.重構-改善既有代碼的設計(Refactoring: Improving the Design of Existing Code)
九、組態管理和版本控制
1.版本控制之道 —— 使用CVS
十、領域專題(網路、平台、資料庫相關)
1.TCP/IP詳解( TCP/IP Illustracted)
2.Unix網路編程(UNIX Network Programming)
3.UNIX環境進階編程(Advanced Programming in the UNIX Environment)
4.UNIX 編程藝術(The Art of Unix Programming)
5.資料訪問模式 — 物件導向應用中的資料庫互動