最近在网上看了一个非常好的帖子《程序员一生必读的书》(我的腾讯微博上有分享该贴子链接,有兴趣就点击进去看看吧),该贴的第一个张图片是一个雷达图, 这张图是由ThoughtWorks(全球软件设计与定制领域的领袖级企业)的资深人士提供的,它将程序员要读的书分为四个类别,每个类别又分为初级、进阶和高级读物,并用黄色三角形点出了强烈推荐阅读的书籍。四个类别包括:
- 编程实践(Coding Practice)
- 设计与架构(Design & Architecture)
- 方法学(Methodology)
- 思想与领导力(Thought & Leadership)
相信这张图会帮助到很多迷茫的职业人,因为好书就像明灯一样会照亮我们的方向,那些大师级的人物将他们的经验分享给我们,真的有如浴春风的感觉。有时候会很感慨国外有那么多厉害的技术作家写了那么多好的作品,而国产技术书籍中的好书真算得上是凤毛麟角。有时候也会问自己,能不能做一个技术作家呢,我想我的修炼还远远不够。下面就把这些好书罗列出来跟大家分享。
Code Complete 《代码大全》
Refactoring《重构:改善既有代码质量》
Clean Code 《代码整洁之道》
The Pragmatic Programmer: From Journeyman to Master 《程序员修炼之道:从小工到专家》
The Practice of Programming 《程序设计实践》
Design Patterns 《设计模式》
Domain-Driven Design 《领域驱动设计》
The Art of UNIX Programming 《UNIX编程艺术》
Practical API Design 《软件框架设计的艺术》
Patterns of Enterprise Application Architecture 《企业应用架构模式》
还有很多好书可能因为选择标准的不同在雷达图中虽然没有出现,但是仍然值得每个程序员去阅读,这些好书包括:
The C Programming Language 《C语言程序设计》
C语言之父Dennis Ritchie以及Brian Kernighan两位老师合著的神一样的书籍。我到现在都没有想明白为什么国内只有极少数的几所大学用这本书作为教材,难道C语言的入门书中还有出其右者吗?这本书的内容无比精彩,不管是对于初学者还是有经验的程序员;这本书中的代码无与伦比,几乎每一段代码都是经典。即使你还没有读过本书,但是你一定听说过一个叫Hello, world的程序,该程序就出现在这本书中。
The Mythical Man-Month 《人月神话》
这本书是号称软件工程领域的第一奇书,与《人件》合称为软件工程著作中的倚天剑和屠龙刀。Brooks博士为人们管理复杂项目提供了最具洞察力的见解。既有很多发人深省的观点,又有大量软件工程的实践,其内容都是来自Brooks博士在IBM公司System/360家族和OS/360中的项目管理经验。这本书是项目经理和系统分析师必读的不朽之作,也是流行了30多年的传奇经典。
Hackers and Painters 《黑客与画家》
该书是我最近几乎每天都翻翻的一本书,准确的说这本书是硅谷创业之父Paul Graham的文集,主要介绍优秀程序员(书中称之为黑客,当然这和我们尤其是国内对黑客的理解有所差别)的爱好和动机,讨论它们如何成长以及如何为世界做出贡献,当然也包括了对编程语言和优秀程序员工作方法等的探讨和思考。该书的内容不但有助于了解计算机编程的本质、互联网行业的规则,还会帮助读者了解我们这个时代,迫使读者独立思考。该书的中文版是阮一峰博士翻译的,翻译的水准和书中的旁注都相当好。
The Art of Computer Programming 《计算机程序设计艺术》
Introduction to Algorithms 《算法导论》
Object-Oriented Analysis and Design with Applications 《面向对象分析与设计》
除此之外,因为自己做了很长时间的Java程序员,有一些Java方面的好书可以推荐给大家。
Thinking in Java 《Java编程思想》
Bruce Eckel的书对于学习如何在Java语言环境中使用好面向对象技术极其实用。本书中的很多代码都变成了招聘Java程序员的面试题,因为那些代码都极具参考价值。Eckel本人具有多种语言的大量经验,还有用面向对象方式进行思考的扎实技能,是C++标准委员会有表决权的委员,他写的《Thinking in C++》一书也是多次获奖的著作。本书将交给你很多实用的Java开发技术。
Effective Java
本书是理解优秀 Java 程序设计原则的最佳书籍。连Java之父James Gosling也称赞本书为他很需要的书籍。本书讲解了78条原则,每一条都很精彩,例如第8条和第9条中关于重写equals()方法的讲解、第18条用接口替代抽象类、第57条至第65条关于异常使用的原则,一切都无比精彩。Bloch是Sun公司Java平台库的架构师,所以他透彻地了解这门语言,而且他本人也编写了Java语言中大量有用的API。此书必读!
《Java与模式》
The Well-Grounded Java Developer 《Java程序员修炼之道》
POJOs in Action
其实国产的Java书籍里面也有部分优秀的书籍,虽然国产书的质量总体偏低,但是最近几年还是有很多有责任感的技术作家(他们很多人同时也是一线程序员或架构师)写了不少好书。
《设计模式之禅》
《编写高质量代码:改善Java程序的151个建议》
《Spring 3.x企业应用开发实战》
《Tomcat与Java Web开发技术详解》
《疯狂Java:突破程序员基本功能的16课》
如果你以前不是计算机相关专业又想转型从事软件行业,那么我推荐先看一些专业气质养成类书籍,当然最入的书就是《计算机导论》、《计算机文化》之类的书,也可以看看《计算机科学概论》或者是《计算机专业英语》,建议看原版的,一方面对整个行业有一个全面的了解,另一方面锻炼一下自己的英语水平。无论如何,我觉得程序员还是应该让英语成为自己的工作语言。
Computer Concepts 《计算机文化》
Computer Science Illuminated 《计算机科学概论》
Computing Essentials 《计算机专业英语》
如果你希望从零基础开始做一个Java程序员,那么我建议的这些书的阅读顺序是这样的(每项读一本就OK了):
1. Computer Concepts / Computer Science Illuminated
2. The C Programming Language
3. Core Java (Vol. 1 & Vol. 2) / Introduction to Java Programming
4. MySQL Crash Course / 深入浅出MySQL / Sams Teach Yourself SQL in 10 Minutes
5. Thinking in Java / Effective Java / 编写高质量代码:改善Java程序的151个建议
6. Servlet & JSP: A Tutorial / Head First Servlets & JSP
7. Java与模式 / Design Patterns Explained / 设计模式之禅
8. 精通Hibernate / Java Persistence with Hibernate
9. Spring in Action / Spring企业应用开发实战 / Spring技术内幕
10. Clean Code / Refactoring Impoving the Design of Existing Code
11. The Well-Grounded Java Developer
12. Algorithms / Data Structures and Algorithm Analysis in Java
13. POJOs in Action / Core J2EE Patterns: Best Practices and Design Strategies
14. Java Performance
15. Software Engineering A Practitioner’s Approach
说明:原来打算把读书心得写在这篇文章中,后来想想觉得内容太多,准备每本书的读书心得单独成文,欢迎大家分享交流。