豆瓣读书:https://book.douban.com/subject/35838155/
好久不读这么厚的书了,本书的中文版本有将近 600 页的篇幅(570 页),阅读它就意味着必须在一个时间段内持续的投入时间,否则特别容易半途而废(读到后面时,前面已经忘记了)。
本书具备所有「好书」 的典型特征,每一个章节都有「小结」,如果你没空读细节的,阅读这些「小结」可以让你快速捕捉到有用的知识点。如果你进行了详细的阅读,这些「小结」也会帮助你温习一遍学过的知识,事半功倍。
整本书读下来,作者给人一种「高屋建瓴」「逻辑思维极其清晰」的感觉。任何典型结论都有明显的推导线索,介绍在谷歌,每个重要的工程决策是怎么来的,当时进行了哪些取舍。
几乎在所有的章节中,作者都在围绕「规模化」在阐释论点,(虽然作者没有显式提及)我认为这是极具算法素养的工程师才能捕捉到的切入点。软件工程所要解决的核心问题是,在组织规模线性增长的情况下,哪些衍生而来的「非线性」软件开发问题应该如何解决。
本书分为 4 个部分:理论、文化、流程、工具。前后两个半本之间,在内容上有明显的不同。我甚至觉得本书应该分成上下两册会更好一些。
- 前半本(理论、文化)教我们区分「编程」和「软件工程」,让我们关注「随着时间变化」和「规模效应」。告诉我们如何成为一名更专业的工程师,如何在团队内部合作,如何带领一个团队。
- 后半本(流程、工具)就是不一样的内容了,更偏具体的解决方案,即为了达成前半本那样的愿景,谷歌采取了什么办法。这些办法更像是一个推导出来的,阶段性的结论。
所以我更推荐新老工程师,详细阅读一下前半本(只有 150 页),阅读这些内容可以让你成为一名更优秀的工程师,其中「名言警句」不断,常常能够「醍醐灌顶」。就算你已经有了近 10 年的工作经验,也经常能够「感同身受」,并重新体验「身临其境」的感觉。
本书非常值得推荐,不论你的工作是「业务开发」还是「基建开发」,不论你在哪个层次上提供软件功能,都能让你从全局理解「软件工程」应该怎么做,以及顶级的工程师是如何考虑这个问题的。
一些摘录我写到这里了:https://github.com/thzt/book-excerpt/issues/72
如果你没有那么多时间阅读全书,可以花半小时阅读一下这个摘录,相信也能有不小的收获吧。