程序员必读书籍及导读指南

b5pp 7年前

最近在网上看了一个非常好的帖子《程序员一生必读的书》(我的腾讯微博上有分享该贴子链接,有兴趣就点击进去看看吧),该贴的第一个张图片是一个雷达图, 这张图是由ThoughtWorks(全球软件设计与定制领域的领袖级企业)的资深人士提供的,它将程序员要读的书分为四个类别,每个类别又分为初级、进阶和高级读物,并用黄色三角形点出了强烈推荐阅读的书籍。四个类别包括:

  • 编程实践(Coding Practice)
  • 设计与架构(Design & Architecture)
  • 方法学(Methodology)
  • 思想与领导力(Thought & Leadership)

程序员必读书籍的雷达图

相信这张图会帮助到很多迷茫的职业人,因为好书就像明灯一样会照亮我们的方向,那些大师级的人物将他们的经验分享给我们,真的有如浴春风的感觉。有时候会很感慨国外有那么多厉害的技术作家写了那么多好的作品,而国产技术书籍中的好书真算得上是凤毛麟角。有时候也会问自己,能不能做一个技术作家呢,我想我的修炼还远远不够。 
虽然不能够自己写一本好书,但是还是很愿意把自己的读书心得跟大家一起分享,雷达图上的书我读过的约有1/3,下面就把读这1/3的心得跟大家分享。

Code Complete 《代码大全》

这里写图片描述

Refactoring《重构:改善既有代码质量》

这里写图片描述

Clean Code 《代码整洁之道》

这里写图片描述

The Pragmatic Programmer: From Journeyman to Master 《程序员修炼之道:从小工到专家》

这里写图片描述

这本书最初出中文译本的时候,它的名字叫《务实的程序员》,而这本书也正像它书名的副标题那样,是一本带领程序员从小工成为行业专家的著作。这本书里有70个Tip(指点、提示),这些Tip都是短小精炼的句子,但都是大师们编程经验的总结和沉淀。因此不管什么时候看这本书,也不管你翻到第几页,总会发现这样的Tip,而它们也会让你有醍醐灌顶的感觉。下面分享了这本书部分的Tip:

  • Tip8: Invest Regularly in Your Knowledge Portfolio (定期为你的知识资产投资)
  • Tip9: Critically Analyze What You Read and Hear (批判的分析你读到的和听到的)
  • Tip10: It’s Both What You Say and the Way You Say It (你说什么和你怎样说同样重要)
  • Tip11: DRY - Don’t Repeat Yourself (不要重复自己)
  • Tip13: Eliminate Effects Between Unrelated Things (消除无关事物之间的影响)
  • Tip18: Estimate to Avoid Surprises (通过估计来避免意外发生)
  • Tip20: Keep Knowledge in Plain Text (用纯文本保存知识)
  • Tip23: Always Use Source Code Control (总是使用源码控制)
  • Tip27: Don’t Assume It - Prove It (不要假定要证明)
  • Tip29: Write Code That Writes Code (用代码生成代码)
  • Tip31: Design with Contracts (按照契约设计)
  • Tip33: If It Can’t Happen, Use Assertion to Ensure That It Won’t (用断言确保不能发生的不发生)
  • Tip38: Put Abstraction in Code, Details in Metadata (将抽象置于代码,细节置于元数据)
  • Tip39: Analyze Workflow to Improve Concurrency (分析工作流以改善并发性)
  • Tip42: Separate Views from Models (让视图和模型分离)
  • Tip63: Coding Ain’t Done ‘Til All the Tests Run (测试不通过编码不停止)
  • Tip69: Gently Exceed Your User’s Expectations (超出用户期望一点点就好)

除此之外,该书中有很多名人名言以及很多经验的分享,例如:“不要让调试改变了被调试系统的行为”、“异常尽量不被作为程序正常流程的一部分来使用”、“要有始有终,分配资源的程序也应当释放它”、“最大的弱点是害怕暴露弱点”等等。 当然,这本书也包括了对契约式编程、解耦合、重构、算法效率、测试等内容的探讨。 
老实说,整本书的内容都很棒,附录也不例外,附录A中列出了一些作者推荐阅读的计算机书籍,这些书籍正好也出现在了我们给的这个必读书籍的列表中,真的是英雄所见略同(就算我臭美了一次哈)

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语言程序设计》

这里写图片描述

The Mythical Man-Month 《人月神话》

这里写图片描述

Hackers and Painters 《黑客与画家》

这里写图片描述

The Art of Computer Programming 《计算机程序设计艺术》

这里写图片描述这里写图片描述这里写图片描述这里写图片描述

Introduction to Algorithms 《算法导论》

这里写图片描述

Object-Oriented Analysis and Design with Applications 《面向对象分析与设计》

这里写图片描述

除此之外,因为自己做了很长时间的Java程序员,有一些Java方面的好书可以推荐给大家

Thinking in Java 《Java编程思想》

这里写图片描述

Effective Java

这里写图片描述

Java与模式

这里写图片描述

The Well-Grounded Java Developer 《Java程序员修炼之道》

这里写图片描述

POJOs in Action

这里写图片描述

如果你以前不是计算机相关专业又想转型从事软件行业,那么我推荐先看一些专业气质养成类书籍,当然最入的书就是《计算机导论》或《计算机文化》啦,我把这类书也做了一个列表。

Computer Concepts 《计算机文化》

这里写图片描述

如果你希望从零基础开始做一个Java程序员,那么我建议的这些书的阅读顺序是这样的:

说明:读书心得我只有一点点写上去了,先给个目录吧 :)

来自:http://blog.csdn.net/jackfrued/article/details/44456495