想要成为一名更加优秀的程序员, 我需要读书么? 需要读什么书?
其实, 在我成为软件工程师之前, 我也问了许多导师这个问题, 也收到了很多建议, 我也从这些建议当中学习到很多东西, 渐渐地, 我也总结出来想要成为一名顶级开发人员, 哪些书籍是必读的.
这些书并不会立马使你成为一名出色的程序员, 但它们确实是影响了无数程序员的书籍, 阅读这些书籍可以帮助开发人员避免在职业生涯早期中犯下一些重大错误. 以下就是书单详情:
1. 《修改代码的艺术》
我非常喜欢这本书, 因为每个软件开发人员, 在他们职业生涯的某个阶段都需要面对遗留代码, Michael Feathers 提供了详细的策略, 可以更加有效地处理大量未经测试的遗留代码库, 本书借鉴了 Michael 为其著名的 Object Mentor 专题研讨会创作的材料, 深入剖析修改遗留代码的各种方法和策略, 从理解遗留代码, 为其编码测试, 重构及增加特性等方面给出大量实用建议, 是所有程序开发人员必读之作.
2. 《人月神话》
这本书很经典, 即便出版这么久仍然与软件产品开发相关, 如果你从事软件开发工作, 这本书是必读之书, 书中最有价值的部分, 我觉得是[未雨绸缪] , 虽然目标都是为了创建一个更好, 更大, 更强的软件, 但是不得不承认, 许多构建的部分必须被丢弃重新构建, 而且这是很常见的, 因此为变更计划组织架构是非常常见的事.
本书内容来自 Brooks 博士在 IBM 公司 SYSTEM/360 家族和 OS/360 中的项目管理经验, 该项目堪称软件开发项目管理的典范.
3. 《设计模式》
如果你打算成为一个系统的架构师, 那这本书你可能需要仔细阅读一下, 这本书被誉为最伟大的软件开发书籍之一, 书中介绍了多年来开发中许多不同的设计模式, 以此帮助软件工程师避免和处理一些常见问题, 遵循本书的原则, 可以帮助你创建更高质量, 更灵活, 更可维护的软件.
4. 《编程珠玑》
这本书与名单上的其他书稍有不同. 可以说这本书帮助一个人 "像程序员一样思考".《编程珠玑》是 15 个栏目的概要, 以前发表在世界计算机界名刊《ACM 通讯》, 这些专栏涵盖了与编程相关的广泛主题: 从需求收集到性能调优. 重点主要放在编码技术和算法上.
每一栏都被重新组织成一章. 章节通常以提出一个实际问题开始. 然后提出各种不同的解决方案, 写作风格清晰有趣.
《编程珠玑》并不是一本教授新编程概念的普通书籍. 虽然它包含了一些很好的, 有时甚至是很新颖的想法, 但这本书的目的不是教一些新的东西, 而是帮助你成为一个更好的问题解决者.
5. 《编码》
这本书清理了创建和开发复杂系统的大量障碍. 现在有太多的抽象, 以至于开发人员有时不知道底层的细节. 你一定意识不到, 其实你的工作中无时不刻都在运用本书的内容, 不过我觉得能够理解自己是在什么基础上构建整个项目是很有必要的, 当你想要了解这些知识并深入研究软件或硬件来修复 Bug 的时候, 这本书可能派的上用场, Charles Petzold 的这本书介绍了计算机工作原理的方方面面, 从从十进制, 八进制, 二进制到高级语言, 解释了基于包的通信协议和 TCP, 许多章节都和硬件有关.
6. 《计算机程序设计艺术》
这是另一个经典. 这是由著名的计算机科学家 Donald Knuth 教授编写的, 并得到了业界许多顶级程序员的高度赞扬. 甚至比尔. 盖茨也说:
如果你认为自己真的是一个很好的程序员...... 读读[Knuth 的]《计算机编程的艺术》...... 如果你能读完全部内容, 你绝对要给我发一份简历.
这本书从基本的编程概念和技术开始, 然后更侧重于信息结构 -- 计算机内部信息的表示, 数据元素之间的结构关系以及如何有效地处理它们. 基本应用于模拟, 数值方法, 符号计算, 软件和系统设计.
7. 《重构》
Martin Fowler 的《重构》是关于改进现有代码的设计. 它是这样一种改变软件系统的过程: 它不改变代码的外部行为, 但改进其内部结构. 有了重构, 你甚至可以把一个糟糕的设计改造成一个良好的设计. 本书对重构的原则进行了全面的讨论, 包括在哪里发现重构的机会, 以及如何设置所需的测试. 还有一个包含 40 多种已被证实的重构的目录, 其中详细说明了何时以及为什么要使用这种重构, 如何一步步地实现它, 并举例说明了它是如何工作的. 这本书是用 Java 作为其主要语言编写的, 但其思想适用于任何 OO 语言.
8. 《代码整洁之道》
Bob 叔叔撰写的《代码整洁之道》共分为三个部分. 第一部分描述了编写干净代码的原则, 模式和实践. 第二部分包括几个越来越复杂的案例研究. 每个案例研究都是一个清理代码的练习 -- 将有一些问题的代码库转换为可靠且有效的代码库. 第三个部分是味道与启发, 这是一个单一的章节, 包含一系列启发和案例研究, 最后是一个知识库, 它描述了我们在编写, 读取和清理代码时的思维方式.
9. 《算法导论》
这必须是理解和使用算法的最好的一本书. 有些关于算法的书虽然严谨但不完整, 还有一些虽然涉及面广, 但却不够严谨.《算法导论》兼具了严谨性和全面性. 这本书涵盖了广泛又深入的算法, 使得书中的设计和分析适合所有层次的读者. 每个章节都相对独立, 都可以作为一个学习单元. 算法用英语和伪代码描述. 讲解的方式简单基础, 但有不失内容的深度和材料的严谨性. 第一版不仅广泛成为了世界各地高校的教材, 还成为了专业人士的标准参考书. 第二版新增了算法, 概率分析, 随机算法, 线性规划的章节.
10. 《计算机程序的构造和解释》
本书以工程学为导向, 通过分析严谨的方法来解决问题和编程技术, 强调通过不同方式来发挥核心作用, 以处理计算模型中的时间. 它独特的方法使它适合介绍计算机科学课程, 以及编程语言和程序设计. 这本书进一步解释了四种最著名的编程语言范例 -- 命令式, 面向对象, 基于逻辑和应用程序编程.
11. 《程序员修炼之道》
这是我读的最早的编程书籍之一. 虽然这本书是在 1999 年写的, 但到如今已然有用, 程序员是训练有素的工匠, 他们使用一组工具 (编辑器, 对象管理器, 版本跟踪器) 来创建某种产品 (程序), 这些产品(程序) 将在某些环境中运行(硬件程序集上的操作系统), 与其他任何一门手艺一样, 计算机编程产生了大量的智慧, 而这些智慧大多不是在大学或认证课程中教授的. 在《程序员修炼之道》中
12. 《代码大全》
如果你想成为一名伟大的软件工程师, 那么这本书是值得一读的, 这本书被广泛认为是编程的最佳实践指南之一, Steve McConnell 的《代码大全》帮助开发人员编写更好的软件已经超过十年了. 现在这本经典的书已经完全更新和修订了, 并加入了最前沿的实践 -- 以及数百个新的代码样本 -- 来说明软件构建的艺术和科学.
McConnell 将最有效的技术和必须知道的原则整理成清晰, 实用的指导. 无论你的经验水平, 开发环境或项目大小如何, 本书都将为你提供有用的信息并激发你的思考 -- 并帮助你构建最高质量的代码.
来源: http://developer.51cto.com/art/202003/611926.htm