你值得拥有的一份开发者书单

2019/12/20

代码整洁之道:程序员的职业素养

当初冲着Bob大叔的大名,买了这本书。翻开来看却发现没有代码,难道这是一本冲流量送的书?阅读下去,才发现这是一本很朴实的书。读起来很轻松,但话题却很厚重。他告诉你什么是专业精神,如何管理你的时间,如何发展你的职业。我印象最深的是为什么开发者要说“不”,什么时候该说“是”。这本书也许能敲醒996压力下的开发者。

测试驱动开发: 实战与模式解析

测试驱动开发(TDD)是一个很有争议的话题,原因是大家在激烈争论时,争论的其实不是同一个东西。很多开发者不了解TDD是什么,以为TDD的重点是测试。而真正掌握了TDD的开发者才知道,测试只是一个手段,TDD最关键的是任务分解。我不指望大家都来阅读这本书,因为这真的不是一本容易读的书,需要有耐心、毅力和练习。但是如果你想在职业生涯中有所建树,我强烈推荐TDD发明人、敏捷宣言共同缔造者Kent Beck的这本开山之作。因为TDD已经超越了编程本身。不论你是做开发、还是做管理,任务分解都是最核心的基本功。期待你从现在开始就通过TDD来刻意练习这种能让你终生受益的内功。

驯服烂代码

这是我的同事伍斌的著作。他多年来经常组织代码操练道场,因此人称“道长”。这本书是他多年操练的精华。如果你尝够了烂代码的痛苦,期望提升重构技能,却又无从下手,这本书是一个好的开始。书中并没有讲述那么多的理论,更多的是一步步描述驯服过程。因此这本书的打开方式有些特别,如果你只是阅读这本书,那么请你放下它。如果你边阅读边敲着键盘,那恭喜你,你已经走在正确的道路上。

敏捷软件开发:原则、模式与实践( C#和JAVA版)

在我从业生涯的早期,非常有幸阅读了这本书,这是Bob大叔的一本经典著作。Bob大叔提出的SOLID原则是软件开发领域最重要的设计原则之一。他在本书中进行了详细描述。除此之外,对于敏捷的初学者,你不仅能了解极限编程的实践,还能清楚敏捷开发模式下如何进行设计。如果你对设计模式感兴趣,也能在书中最后一部分找到常见设计模式的真实应用。强烈推荐所有开发者都阅读本书。

修改代码的艺术

什么是遗留系统?作者给出的定义是没有测试覆盖的系统。可以说当今很多系统都是遗留系统。大部分开发者一边饱受烂代码的折磨,一边又在不断炮制出新的烂代码。这些遗留系统的普遍问题是设计不合理,不具备可测试性,因此很难重构。这本书告诉你如何在遗留系统中找到接缝,进行解耦、测试和重构。这就像庖丁解牛一样,对于各种看起来无能为力的耦合,作者一刀一刀地给你展示精彩绝伦的手法,令人叹为观止。建议不要在睡前阅读,否则可能会让你兴奋得无法入睡。

持续交付

Jez Humble是前ThoughtWorks首席咨询师。这是软件领域的一本经典著作,并且获得Jolt大奖。虽然原书马上就出版10周年了,但当今软件交付、DevOps的绝大部分实践仍然脱离不了本书的框架。对于软件交付团队的开发者和项目管理者,本书将告诉你如何流畅地发布高质量软件。

领域驱动设计精髓

领域驱动设计(DDD)是一种应对复杂系统的经典设计方法,它诞生于面向对象(OO)编程思想,却又超越OO。以至于我的同事函数式编程大师“大魔头”说OO已死,DDD永生。随着微服务架构的兴起,DDD被越来越多的团队重视,然而DDD的高门槛挡住了不少非开发人员。这本书旨在让所有干系人,包括架构师、开发者、业务分析师、领域专家和管理者都能够读懂DDD。它把很多内容进行了精简升华,并解释了很多难以理解的概念。对初学者能够了解DDD的全貌,有经验者也可以阅读本书学习到作者对于一些争议观点的独到看法。

领域驱动设计模式、原理与实践

对于开发者来说,如果只读一本领域驱动设计的书,我会强烈推荐这本书。与Eric的蓝皮书原著不同,这本书不仅引入了最新的DDD技术,例如领域事件、事件溯源等,更重要的是,它全面深入地展示了DDD落地方法。如果你想深入学习DDD,并且将它落地为代码,那么你一定要阅读这本书。虽然书中代码以.Net技术为主,但丝毫不影响Java开发者学习。

SRE:Google运维解密

这本书全面介绍了Google如何构建、部署、监控和运维旗下最复杂、最先进的系统。也许你觉得你的系统没有那么大那么复杂,但这不影响你了解其背后的思想,从而完善你的运维体系。在传统企业,我特别推荐其中的一项实践“事后总结:从失败中学习”。很多企业会做生产事故的复盘,然而效果却不理想。这本书会告诉你如何做真正有效的事故复盘、如何制定真正有效的改进措施,以及如何将经验教训传播到更广的范围,避免事故重复发生。

发布!软件的设计与部署

这是一本被书名耽误了的杰作。如果改成架构师的自我修养也许能热卖。这本书体系化地讨论了系统的稳定性、容量设计、安全和可用性等话题,它告诉你如何设计工业级的软件。也许部分内容有些过时,但思想却不会过时。在微服务日益盛行的今天,这本书变得更加重要。本书的第2版已经由我的同事“道长”一年前翻译完成,遗憾的是出版社的原因至今未能出版。不论哪个版本,都强烈推荐给各位架构师和开发者。

微服务架构设计模式

这本书内容很全面,是实践微服务架构的推荐参考书籍。书中列出了很多常见问题及其对应的解决办法,也就是模式。当然因为篇幅的原因,部分章节不是非常的深入。读者可以把相关模式作为一个指南和索引,再挑选自己关心的内容深入研究。总体来说,这是一本非常好的微服务实践指南。我最喜欢其中的SAGA, 和微服务测试部分。

整洁架构 改名为:架构整洁之道

这又是Bob大叔的一本力作。他的另一个经典著作《整洁代码》讲了代码如何整洁,而这本讲解架构如何整洁。书中对比了结构化、面向对象和函数式三种编程范式,观点犀利,令人叹服。又重新诠释了SOLID原则,这部分内容在《敏捷软件开发:原则、模式与实践》也有详细论述。架构是组件的连接,因此书中用了大量篇幅讲解组件的设计原则,分而治之的思想,这部分特别烧脑,建议读者组团阅读,围炉夜话,将是人生一大幸事。