今天读书日:资深程序员推荐这10本书,你看了几本?

今天是世界读书日,要成为一个更好的开发人员,应该读哪些书程序员的需要读书吗p>

很多人问我这个问题,尤其是那些刚开启软件工程生涯的同事和朋友。这是一个很值得探讨的问题,而且也是我在成为软件工程师之时问了很多导师的一个问题。但问题是,很多人推荐的是不同主题的不同书籍。他们推荐的书在他们看来是伟大的,但没有人能告诉我,要想成为一个伟大的工程师,我应该阅读什么,哪些是重要的、是必读的书籍p>

我从我的导师那儿学到了很多东西,并意识到,我仍然有很多东西需要学习,还有许多不同的书需要阅读。我决定每个月读一本专业领域(软件工程)的书。随着时间的积累,我总结出了我认为想要成为一个顶级开发人员必须阅读的书单。

事先声明——只是阅读这些书不会让你成为一个伟大的开发者。你还需要积累多年的工作经验,并应用这些书中的原则到现实实践中,并在现实世界中发展你解决问题的能力。

阅读这些书可以帮助你避免一些常见的陷阱和错误,一些开发人员早期经历的陷阱和犯过的错误。我多么希望在我刚进入软件领域的时候,就有人向我推荐这些书啊,并且我现在依然很庆幸自己发现并反复阅读了这些书!也许你已经在大学读计算机科学或工程课程的时候读到过其中的一些书。也许在那个时候,你觉得它们并不重要,但是我可以用我亲身经历来说明我使用和应用了许多来自于这些书的原则。

我还要指出的是,此书单并不详尽。每年都会有许多伟大的著作问世。这些只是对我和我的职业生涯影响最大的书籍。此外,这些书和使用什么语言无关,可以应用于任何软件语言。

好了,让我们开始介绍这些书吧!

(这些都是必不可少的,我将根据它们对我的影响大小从后往前介绍。)

10

《Working Effectively with Legacy Code》

我之所以喜欢这本书,是因为几乎所有的软件开发人员,在其职业生涯的某个时刻,往往会不得不支持和工作于遗留系统。在这本书中,Michael Feathers提供了从开始到结束的策略,以便于更有效地工作于未经测试的遗留代码库。本书借鉴了Michael为其著名的Object Mentor专题研讨会创作的材料:Michael用于指导的技术,以帮助开发人员,技术管理人员和测试人员掌控遗留系统。

9

《Design Patterns》

8

《Programming Pearls第二版》

这本书和这书单上的其他书籍略有不同。我想说这本书可以帮助一个人“像一个程序员一样思考”。《Programming Pearls》是先前发表在“Communications of the ACM(美国计算机学会通讯)”的15篇专栏的一个纲要。这些专栏涵盖了广泛与编程相关的主题:从需求收集到性能优化。重点关注编码技术和算法。

每个专栏被组织为一个章节。章节通常以一个实际问题的情景呈现开头。然后,提出各种解决方案和相应的经验教训。写作风格清晰明快。

《Programming Pearls》不是教授新编程概念的寻常书籍。虽然它包含了优秀,有时甚至是相当新奇的想法,但这本书的目的不是教你一些新的东西,而是帮助你成为一个更好的问题解决者。

7

《CODE: The Hidden Language of Computer Hardware and Software》

这本书清理了创建和开发复杂系统的大量“魔法”。现在的抽象是如此之多,以致于一些低层次的细节反而不为开发人员所知。虽然你可能不会发现自己在实践中时刻使用着这本书——但我相信,知道自己正在构建什么以及整个编排的工作原理是什么,总归是一个好主意。当你需要打开“黑匣子”,深入软件或硬件来解决一个讨厌的bug的时候,它就能派上用场了。Charles Petzold写的《CODE: The Hidden Language of Computer Hardware and Software》梳理了许多编程概念——从数字系统的十进制,八进制,二进制到高级语言。这本书介绍了基于包的通信协议和TCP。许多章节讲解了有关硬件的概念,有五个章节涉及到了软件和教导操作系统,浮点运算和图形用户界面。

6

《Refactoring》Martin Fowler写的《Refactoring》

主要关于改进现有代码的设计。这是一个改变软件系统而不改变代码的外部行为,却能提高它内部结构的过程。通过重构,你甚至可以将一个糟糕的设计重新制作为一个很好的设计。这本书对重构原则进行了深入探讨,包括在哪里发现重构的机会,以及如何建立所需的测试。另外还有一个目录有40多个已经用细节证明的重构,这些细节包括何时以及为什么要使用重构,逐步说明如何实现重构,并举例说明重构是如何工作的。这本书用Java作为其主要语言而写,但其中的思路适用于任何OO语言。

5

《Clean Code》

4

《Introduction to Algorithms》

这必须是理解和使用算法(将在软件开发中涉及很多)的最佳书籍。有些关于算法的书虽然严谨,但不全面——还有一些虽然涉及面广,但却缺乏严谨性。《Introduction to Algorithms》独特地结合了严谨性和全面性。这本书涵盖了广泛又深入的算法,使得书中的设计和分析能够面向所有层次的阅读人员。每个章节相对独立,可看作是一个学习单元。算法用英语和可读的伪代码描述。它使用初级基本的解释,并不牺牲覆盖的深度和材料的严谨性。第一版不仅广泛成为了世界各地高校的教材,还成为了专业人士的标准参考书。第二版新增了算法,概率分析,随机算法,线性规划的章节。

3

《Structure and Interpretation of Computer Programs》

以一种对解决问题和编程技术分析和严谨的态度,这本书面向于工程。《Structure and Interpretation of Computer Programs》强调通过不同方式来发挥核心作用,以处理计算模型中的时间。其独特的方式使得它非常适合于计算机科学课程,以及编程语言和程序设计的入门。这本书进一步解释了4个最著名的编程语言范式——命令式编程,面向对象编程,基于逻辑编程和应用性编程。

2

《Pragmatic Programmer》

1

《Code Complete 2》

就是它了!这就是我认为首屈一指值得阅读的书(请恕我妄言),如果你要成为一个优秀的软件工程师的话。它被广泛认为是最好的实用性编程指南之一,Steve McConnell最初的《Code Complete》在过去的10多年时间里,一直在帮助开发人员编写更好的软件。现在,这部经典书籍已全面更新,修改成了前沿的实践方法——以及数以百计的新的代码示例——修订了软件结构的艺术和科学。从研究、学术界和日常商业实践中捕获知识体系,McConnell将最有效的技术和必须知道的原则总结成清晰又务实的指导。无论你的经验水平,开发环境,还有项目规模如何,这本书都可以启迪和激发你的思考,帮助你打造最优质的代码。

不断地探索技巧和策略,可以帮助你:

? 最小复杂性和最大创意的设计

? 获得协同开发带来的好处

? 应用防御性编程技术,以减少和驱赶错误

? 利用机会安全地重构或改进代码

? 使用针对你项目的结构方法

? 快速有效地调试问题

? 早早地正确解决关键的结构问题

? 从头到尾项目打造高质量的项目

这12本书到此就介绍完毕了!

 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年3月17日
下一篇 2016年3月18日

相关推荐