My Favorite Software Books

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

有很多关于软件工程的书,但只有其中几本是我最喜欢的。我一遍又一遍地阅读了这些书,也许在我以后遇到其他好书时,我会更新这篇文章。

请注意,我尽量将最重要的书放在列表的前面。

《对象思考》 by David West。这是我读过的关于面向对象编程最好的书,它完全改变了我对面向对象编程的理解。我建议你多读几遍。但在阅读之前,试着忘记你过去听到的关于编程的一切。试着从零开始。也许对你也有效。

《PMP考试准备第八版:Rita的通关书》 by Rita Mulcahy。这本书是我最喜欢的项目管理书籍。尽管它是关于PMI方法和PMBOK的,但对于对管理感兴趣的每个人来说都是必读的。忽略PMBOK的具体内容,重点关注项目管理的理念和项目经理在其中的角色。

《软件测试的艺术》 by Glenford J. Myers等人。你可以在这里读到我对这本书的简短评论。这本书完美地解释了测试的理念,并打破了许多典型的迷思和刻板印象。无论你的工作描述是什么,如果你在软件行业工作,你都应该了解测试及其基本原理。这是唯一一本你需要阅读的书来获得这种理解。

《Growing Object-Oriented Software, Guided by Tests》 by Steve Freeman和Nat Pryce。关于单元测试,你需要知道的一切都在这本书中。我完全意识到我没有将著名的软件工程师Kent Beck的书包括在这个列表中,因为我一点也不喜欢它。你肯定应该阅读它,只是为了了解发生了什么,但它不会帮助你编写好的测试。相反,读这本书,读很多遍。

《与遗留代码高效合作》 by Michael Feathers。这是一本关于现代软件开发、其陷阱和典型失败的精彩读物。我们现在正在处理的大部分代码都是遗留代码(也就是开源代码)。我把这本书当作小说来读。

《持续交付:通过构建、测试和部署自动化实现可靠的软件发布》 by Jez Humble和David Farley。这是一本关于软件交付、持续集成、测试、打包、版本控制以及其他许多与编程有关的技术的完美书籍。对于那些认真对待软件工程的人来说,这绝对是必读之选。

《XML概述第三版》 by Elliotte Rusty Harold和W. Scott Means。XML是我最喜欢的标准。在阅读这本书之前,我讨厌它。我不理解所有奇怪的前缀、命名空间、XPath表达式和模式。只有这本书改变了一切,自从读了这本书之后,我在任何地方都使用XML。它写得非常好,易于阅读。这是每个人都必须阅读的。

《Java并发实战》 by Brian Goetz等人。这是一本非常实用的关于Java多线程的书,同时也提供了关于并发性的许多理论知识。我强烈推荐你至少阅读一次。

《现代C++效能提升:42种提高C++11和C++14使用效率的具体方法》 by Scott Meyers。无论你使用什么语言,这本书都非常有趣且非常有用。它提出了许多关于更好的C++编码的重要建议。如果你理解其中大部分内容,你的Java/Ruby/Python/Scala编码技能将显著提高。

《代码大全:软件构建的实用手册第二版》 by Steve McConnell。把它当作优秀编码的圣经。多读几遍,并在与同事辩论时将其作为参考手册。它提到了你在现代编程中会见到的最可怕的反模式和最糟糕的实践。要成为一名优秀的程序员,你必须了解它们。

《软件估算:揭秘黑魔法》 by Steve McConnell。这是一本关于软件工程及其最棘手部分——估算的有趣读物。至少阅读一下,了解问题和可能的解决方案。

《编写有效用例》 by Alistair Cockburn。这是一本古老而非常好的书,你实际上在你的真实项目中不会使用这里面的任何东西,但你会了解用例的理念,它会把你的思维引导到正确的方向。不要将这本书看作实用的东西;这些用例在今天几乎没有被广泛使用,但以这种方式定义功能的思想是绝对正确的。

《软件需求第三版》 by Karl Wiegers(作者)和Joy Beatty。这是一本关于需求分析的杰出书籍,是任何软件项目中的第一项也是最重要的活动。即使你不是分析师,这本书也是必读的。

《Git版本控制:协作软件开发的强大工具和技术》 by Jon Loeliger和Matthew McCullough。这本书是关于版本控制系统Git的实用指南。从头到尾阅读它,你将节省很多以后的时间。Git是版本控制的事实标准,每个程序员都必须了解其基本原理,不是从备忘单上,而是从原始来源。

《JavaScript权威指南:激活你的网页》 by David Flanagan。JavaScript是现代Web的语言,这本书对它进行了很好的解释。无论你开发什么类型的软件,你都必须了解JavaScript。不要将它看作实用指南(尽管它被称为指南),而是作为思考的食粮。JavaScript对Java/Ruby/Python开发人员来说有很多值得学习的地方。

《CSS权威指南》 by Eric A. Meyer。CSS不仅仅是关于颜色和阴影,也不仅仅是为了图形设计师。CSS是现代Web的关键语言。每个开发人员都必须了解它,无论你是在后端、前端还是使用C++开发桌面应用程序。

另外,查看我的GoodReads个人资料

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 05:09

sixnines availability badge   GitHub stars