好的软件人员一生要看的60本书

一、科学哲学和管理哲学


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方法论在整个软件工程思想中的重要作用。用例驱动,架构核心和增量迭代核心要素是所有方法论都可以借鉴的。《人月神话》和《人件》是软件项目管理必读图书,概念完整性,没有银弹,进度和人手的关系,焦油坑等让我们记忆尤深。在这里没有看到《敏捷软件开发》这本书,这是一本很值得推荐大家阅读的书籍。

四、 软件需求

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.数据访问模式 — 面向对象应用中的数据库交互

你可能感兴趣的:(软件)