每个程序员应该阅读的10本经典书籍

每个程序员应该阅读的10本经典书籍

书籍是知识和智慧的重要来源。但不幸的是,现在很多人已经不愿意看书了。程序员更是罕见地会去读书,最常见的依靠互联网搜索结果来找寻答案。

技术向前的步伐比人类历史上的任何时候都要走得更快。用不了几个月,就会有新的编程语言和工具问世,弥补现有语言、工具和方法的缺陷。 事实上,许多伟人都已经遇到过差不多的问题,并指出了解决这些问题的最佳途径。而这些方法和解决方案都收录在一些超棒的书籍中。 下面就是在这个行业中开发人员应该阅读的一系列伟大的书籍。 《The Pragmatic Programmer》 绝对是书籍中的瑰宝!这不是常规地建议你编码,编码还是编码的编程书。事实上,它并不限定于某种特定的编程语言:在这本书中的智慧适用于所有编程语言。

这本书对许多有趣的领域都提出了真知灼见,如各种探索性编程,在代码中编码,从模型中分离的观点,昂贵的工具并不产生更好的设计,开发一个伟大的团队,管理预期,避免知识的重复等。 这本书不仅可以帮助改变编码的习惯,还可以改变你作为一个程序员的性格。它充满了关于如何改进自己和代码的实用建议。 还有一个总结了提示和检查清单的小册子。 《The Mythical Man-month》: 关于软件工程的散文集 非常经典,被奉为软件行业的圣经。第一次出版于1970年,但是里面的内容比起以前,可能更适用于现在!

有听说过这些话吗?它们均摘自于这本书! “所有的程序员都是乐观的:一切都会顺利。” “添加人手到一个延迟的项目中只会导致完成得更慢。” “生一个孩子总是需要九个月的时间,不管安排多少个女性。” “一个煎蛋,承诺在两分钟内完成,但如果两分钟后还是没有准备好,那么客户有两种选择——等待或吃半熟品,软件客户也只能这样选择。” 不幸的是,一年又一年地过去,而我们总是在软件开发中犯着相同的错误。这本书是每一个项目经理和开发人员都必须阅读的。 正从标题中所说的那样,这是一本散文集。文辞优美。这本书唯一的缺点就是引用了年迈25的古老技术。但是,这并不影响这本书的魅力。 《Clean Code》: 敏捷软件工艺的手册 有没有在看他人代码的过程中,不由自主地发出“哦,天哪,这是什么?”的经历,那么这个人肯定没有阅读过《Clean Code》。

这是一本关于软件工艺史诗般的书籍。这本书不仅会告诉你如何编写好的代码,而且还提供了软件开发的高效途径。照着去做的话,必将改变你的工作前景。 书中描述了编写干净代码的原则、模式和做法。里面一些关于整洁代码的几个案例都是开发人员宝贵的经验教训。 请注意,虽然在这本书中的所有实例都是关于Java的,但是从中学到的经验教训可以应用于任意的编程语言。 这篇文章所列出的这些书籍中,这本书出版得比较晚,所以可能更能引起年轻开发人员的共鸣。 《The Clean Coder》:专业程序员的行为守则 此列表中Rob Martin的第二本书。建议你在读了《Clean Code》后,再读这本书。《Clean Code》讲的是代码,而这本书是关于“Coder”。

该书探讨了一些程序员经常忽视的主题。

  • 成为专业的程序员意味着什么?
  • 如何打磨自己成为一个真正的软件工匠
  • 冲突和紧张的日程处理
  • 如何管理你的时间?如何扩张技能?
  • 何时说“不”
  • 避免倦怠
  • ..以及更多。

你可能并不总是同意作者的观点,但它提供了良好的精神食粮。这可能并非你所期望的,但可能正是你所需要的。 《Refactoring》:改善已有代码的设计 不管你怎么努力,除非改进它,否则,你交付的代码不会是最优化的。有时即使工作正常,也会实施重构。

这本书从重构的通用原则说起:为什么以及什么时候重构,如何处理有关重构的管理等等。然后讲述了如何实现改进的过程。

  • 代码的设计缺陷指标是什么?
  • 如何构建类、方法和其他的逻辑块?
  • 单元测试
  • 如何将功能从一个对象移动到另一个?
  • 重构工具
  • ..以及更多

这是改进现有代码必读的书。请注意,所有的代码示例用的都是Java,但现在复制起来也很方便! 《Working Effectively With Legacy Code》 我们都必须工作于一些我们痛恨的东西——对于大多数人而言,遗留代码真是令人头痛无比。

如何修改遗留代码?如何识别需要重构的代码部分?如何破坏重构代码之间的依赖关系?如何确保新的代码能完成预期的工作?如何一次一小步地重构遗留代码? 在这本杰出的书中,只是回答了一些关键的问题。如果非要用一句话总结这本书的精华,那就是“写单元测试,重构代码,确保测试都通过。” 遗留代码不是一个神话,它是一个活着的传奇!在软件行业中没有什么比遗留代码更能经受测试的考验了——Deepak Karanth 《Code Complete》:软件构建的实用手册 在一个庞大的作品中,如果你想要阅读所有关于编程结构和最佳实践的内容,那么这是本必读书。真正的百科全书式书籍——其最新版本有多达960页!不要被这本书的厚度吓倒,你可以按照自己的节奏阅读。最后,你会庆幸你阅读了这本书。

书中解释了软件开发的每个方面。从代码结构,代码格式化,到变量、方法和类的命名,再一路说到管理一个团队,对所有一切都提出了实用的建议。 提供了覆盖特定主题的丰富参考和补充材料,这些也非常值得一读。 只有一小部分的软件开发人员会读这本书,所以如果你也是他们中的一个,那么你就有了优势。通过阅读这本书,你就可以获得许多年宝贵经验。 《Head First Design Patterns》 看上去最不像技术的编程书籍!每个页面都包含涂鸦、图片以及其他一些吸引眼球的东西。可能给人的印象是一本阅读起来很轻松的书,但事实上它会讨论编程的一些核心主题——设计模式。

这本书虽然没有覆盖所有存在于这个世界的模式,但是会涵盖所有你可能需要用于解决现实问题的模式。它将帮助你创建功能性的,优雅的,可重用的和灵活的软件。每个模式的优劣也被明确指出。大多数关于设计模式的书籍谈论的是如何实现模式,但这本书的作者同时还解释了为什么以及怎么样。 最新版本包括针对Java 8的更新——主要是Lambda。 《Peopleware: Productive Projects and Teams》 很棒的一部作品。这本书并非关于编程。这是一本有关管理和激励程序员的书籍。开发人员也应该阅读。很多时候,开发人员,尤其是那些没有经验的开发人员,不理解管理的思维过程。

软件开发是一个创造性的过程。但是,大多数管理人员把它当作是流水线。开发人员被视为是机器上可替换的齿轮零部件。管理人员普遍性地会给予一个紧迫的时间期限,当作促进积极性唯一途径。他们对开发人员的工作不感兴趣,甚至可悲的是,他们也不会试着去理解开发人员或他们自己的工艺。 如果你想成为一个想要的是质量,而不仅仅是数量的管理人员,那么请立刻阅读这本书! 作者解释了管理者应该如何以一种可持续的方式使他们的软件开发团队认识到他们的潜力。 《Soft Skills: The Software Developer’s Life Manual》 同样的,这也不是一本关于编程的书。但是,却是每一个程序员都应该阅读的书。

这本伟大的书着重于管理开发人员生活的“其他”方面。可以是你生活的每一个方面——事业、生活、身体、头脑,以及不管你相信与否——还有灵魂。 作者他自己也遵循这些技术,并且获得了成功。他的网站上说,他能够在他30出头的时候放弃他的日常工作。该作者将他的生活经验整理成整齐的,主题内容为Career、Marketing yourself、Learning、Productivity、Finances, Fitness和Spirit的短章。每个篇章都很短,可以在休息时间阅读,非常方便。 你会是一个更加满意和快乐的人,如果你按照这本书的建议去做的话,那么你将成为一个更令人满意和幸福的人和程序员。

原文发布于微信公众号 - Java学习网(javalearns)

原文发表时间:2016-02-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跨界架构师

聊聊架构设计做些什么来谈如何成为架构师

  也因为碎片化的时间多了,所以开始刷某乎了,关注了架构相关的板块,也顺手回答了一些问题。发现有很多同道中人正在经历着我前两年经历的阶段,对于做架构没有相对具象...

1164
来自专栏大数据文摘

求职季 | 为什么每个开发者都应该坚持经营一个博客?

17010
来自专栏软件开发

从一个故事开始谈项目与团队管理

二战期间,英国国防部发现参战的飞机难免挨上高射机枪的枪子儿,受限于飞机重量和成本,他们只能在一处安装装甲增强防御力。但是在位置选择上犯了难:应该把装甲装在什么位...

2276
来自专栏Golang语言社区

随谈10年的技术生涯和技术成长

先简单分享自己这10年在技术上曾经感觉到明显迷茫的阶段: 阶段1:只会增删改查: 时间:大学期间(2005年-2006年) 学习的方式:看视频、看书。(学会了使...

37516
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合基础篇(十二)阶段总结

一 不知不觉,已经到了基础篇的收尾阶段了,看着前面的十几篇文章,真的有点不敢相信,自己竟然真的坚持了下来,虽然过程中也有过懒散和焦虑,不过结果还是自己所希望的,...

2655
来自专栏JAVA技术zhai

聊聊软件开发过程中的“怪现象”

2616
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合优化篇(十四)谈谈写博客的原因和项目优化

阶段总结 又到了优化篇的收尾阶段了,这其实是一篇阶段总结性的文章,今天是4月29号,距离第一次发布博客已经两个月零5天,这两个多月的时间,完成了第一个项目ssm...

2924
来自专栏CSDN技术头条

简历做好这3点,求职成功率高几倍

https://www.zhihu.com/question/25002833/answer/158108028

1775
来自专栏带你撸出一手好代码

写在开发iOS应用之后

最近这段时间在做iOS开发。 我以前做过很多不同类型的软件, 可就是没有做过iOS的, 这其中的原因在于,开发iOS程序必须使用mac电脑, 而我对水果家的电脑...

3189
来自专栏企鹅号快讯

云计算带给网络管理的八大改变

那些对云计算毫无兴趣的人把云计算看成是《回到未来》式的计算模式的翻版,即开着老爷车回到70年代那个“分时系统”全盛时期,远程租用过剩的计算资源。那时候,客户可以...

2799

扫码关注云+社区

领取腾讯云代金券