每个程序员都应该读的 12 本经典书籍
披露:本篇文章包含附属链接;如果您通过本文提供的不同链接购买产品或服务,我可能会收到报酬。
有句话说,如果你从自己的错误中吸取教训,你只能学到很少的东西,但是如果你从别人的错误中吸取教训,你可以在短时间内学到很多东西,而从别人的经验中学习的最好方法就是读书。
编程作为一种职业就是不断学习和更新自己,但不幸的是,没有正确的开始方法。
在现实世界的编程方面,学校和学院远远落后,并不是每个计算机科学专业的毕业生都能够幸运地在一家擅长培训的公司工作。
另一个可行的选择是阅读书籍、参加在线课程以及听取走过这条道路的伟大程序员和作家的建议,而从书籍中学习是所有方法中最可靠、最值得信赖的方法。
我仍然很遗憾在开始编程时没有了解《代码整洁之道》。这些书可以改变你的职业生涯,让你成为一名更优秀的程序员。
这些书籍并不是要教你 Java、Python 或 C++ 等编程语言的语法和语义,而是更多地教你思考、组织和提高软件工程技术的方法。
它们不会使您在任何特定的编程语言(例如 Java)上变得更好,但它们会帮助您成为一名更好的程序员。
我喜欢这些书的另一个原因是:你可以在沙发上、床上,甚至每天上下班的路上阅读它们。我的意思是,你不需要像其他硬核编程书籍那样,用编译器或 IDE 来尝试书中的内容,了解它们的工作原理。
例如,如果你不编写应用程序、执行测试并理解输出,你将无法从《Java 并发实践》中获益。虽然我已经读过这些书了,但我的 iPad 上还是有 PDF 版本的,我会在上下班路上阅读。
顺便说一句,为了从任何编程书籍中获得最大收益,编码和尝试其示例是必须的。
顺便说一句,如果您是新来的,那么我还想提醒您,在我上一篇文章中,我分享了10 本必读软件工程书籍和10 本必读算法书籍,如果您还没有查看过,您也可以在阅读本文后查看它们。

12 本经典编程书籍,助你成为更优秀的程序员
不要再浪费你的时间了,这里列出了每个程序员、软件工程师、开发人员和编码员都应该阅读的十本书籍。
这些书籍涉及软件开发的不同领域,如编码、设计、架构、算法、数据结构、问题解决、规划、项目管理和工作文化。
通过阅读这些书籍,您将了解到作者多年来与一些最好的地方和人合作所获得的经验。
1. 系统设计面试——Alex Xu 的内部指南
系统设计是程序员和开发人员的一项重要技能,这本书是学习系统设计的最佳书籍之一。虽然这本书是为准备系统设计面试的候选人编写的,但它也是所有程序员的必读书籍。
该指南由 Alex Xu 撰写,具有内部知识,为系统设计的复杂性提供了宝贵的见解,这是技术面试的一个重要方面。
该指南致力于帮助候选人做好成功的准备,涵盖了系统设计面试的各个方面,包括关键概念、解决问题的策略和真实场景。
该资源提供了一种结构化且实用的方法来掌握系统设计,适合寻求提高面试表现的初学者和经验丰富的专业人士。
本书有两卷,涵盖了许多系统设计概念,从可扩展性到速率限制、API 网关到微服务等等。
该指南以其内部视角,为读者提供应对复杂面试场景所需的知识和策略,使其成为任何渴望在系统设计面试中脱颖而出,并且成为更好的软件开发人员并在技术行业中发展职业生涯的人的必备工具。
您还可以将本书与ByteByteGo课程结合起来,以便更好地学习。
11. 领域驱动设计
软件很复杂,任何能帮助你降低复杂性或更好地处理复杂性的东西都会受到高度赞赏。《领域驱动设计》是一种截然不同的软件开发方式,因此我将这本书列入了程序员必读书籍清单。
Eric Evans 出色地解释了“领域驱动设计”这一术语,并展示了它如何应对复杂性。中级和经验丰富的开发人员都能理解领域知识的价值。
事实上,程序员如果不了解自己的领域,就不可能成为主题专家并设计出更好的系统。
这就是程序员坚持一个领域的原因,比如金融、医疗保健、保险等。它是领域知识和编程技能的结合,可以让你成为一名更好的程序员。
3. 编程珠玑
这是我为准备编程面试而读的第一本书。它包含了一些对新手来说最棘手的问题,如果你尝试自己解决这些问题,你会学到很多东西。它们挑战你对内存、CPU 和算法等核心概念的理解。
有些人可能会觉得这本书已经过时了,因为它最早出版于 1999 年,但你错了。它是真正的经典,其中所有的分析和解释对任何程序员来说都仍然很有价值。
这是一本很棒的书,可以用来练习数据结构、算法设计、搜索、排序、堆和性能调优技巧。为了让你初步了解内容,请尝试自己解决以下问题:
“如何在 1.25M 内存中对 1000 万个唯一的非负整数进行排序,这些整数都小于 10^7?如果我们只有 1M(或更少)的可用内存怎么办?如果我们的整数不是唯一的,但每个值的出现次数有限怎么办?”
向 Jon Bentley 致敬,他创造了一部杰作,它完全配得上它的名字“编程珍珠”。
顺便说一句,如果你正在准备编码面试,那么我还建议你看看Udemy 上由前谷歌工程师 YK 开设的 11 个 基本编码问题课程,他也是著名的 Youtube @ CS DOJO,他的讲解风格非常出色,这门课程将帮助你更好地学习这些困难的概念。
4. GoF 设计模式
当你看到你的高级合伙人运用面向对象的设计原则和设计模式,以更优雅的方式解决问题时,有多少人感到惊讶?嗯,我就是这样的。
当我开始我的职业生涯时,我对设计模式以及它们如何帮助编写更好的代码一无所知。
我的背景是 C、C++,我所知道的只是在一些类或结构体中编写代码,并使用 main 函数来测试它们。直到我开始学习 Java 及其 API 时,我才了解到 Collections.syncronizedList()(用于在 Java 中同步 List)和 BufferedReader(用于读取字符数据)等装饰器设计模式的例子。
在一次代码审查中,我的一位高级合伙人将我的 if-else 块重新分解到状态设计模式中,我意识到了设计模式的真正威力。
现在回到这本书,《设计模式,可重用面向对象软件的元素》是著名的四人组 Eric Gamma、Richard Hel、Ralph Johnson 和 John Vlissides 整理的 23 种模式的另一个经典和原始来源。
我不确定是否推荐 Head First 设计模式或这本书,因为坦率地说,我从 Head First 中受益更多,但同样,严肃的开发人员不喜欢 Head First 风格和经典;这本书不容忽视。
顺便说一句,如果您喜欢《Head First》系列,那么请阅读《Head First 设计模式》,这是另一部佳作。
如果你需要一些关于如何实现这些模式的帮助,并且喜欢通过观看视频来学习,那么Udemy 上的“Java 设计模式” 课程也是一个不错的选择。我个人觉得,这个组合对于学习和理解经典设计模式非常有效。
5.《人月神话》
如果您想了解软件开发、估算、项目管理以及软件开发中可能出错的事情,那么您必须阅读这本书。
我一直想知道为什么建造一座多层建筑比建造软件更容易规划和估算。
为什么其他行业都比软件行业拥有更好的工具、流程和质量控制?这本书能帮你理解其中的原因。如果你想成为一名项目经理,这本书是你的必读之作。
6. 清洁代码
我最喜欢的,我已经读了差不多三四遍了,而且仍然很喜欢读。我一直很后悔为什么在职业生涯起步时没有买一本这本书。
鲍勃叔叔通过他的一系列书籍出色地教授了软件开发的技巧,而这一本无疑是其中最好的。
您将学习如何命名变量、如何编写更好的方法、如何更好地构建代码、代码异味是什么样的、为什么以一种方式解决问题是错误的以及为什么另一种方式更好。
如果您是 Java 开发人员,您将会获得更多联系,但我认为任何面向对象的程序员(例如 C++ 程序员)都会受益于有关代码、编程和软件开发艺术的一般建议。
如果你喜欢Bob大叔的风格,还可以看看本书的第二部分《Clean Coder》,它将帮助你成为一名更优秀的专业程序员。
只是想让你知道,著名的 Udemy 讲师 Maximillian Scwarzmuller 也开设了一门关于《代码清洁》的课程,我发现它非常棒,是这本书的好伴侣,你可能想看看,顺便说一下,示例是用 JavaScript 编程语言编写的。
7. Martin Fowler 著《重构》第二版
如果你读完《代码整洁之道》后还想了解更多,这本书绝对值得一读。它是中级程序员能理解的最好的书;它将帮助你掌握重构的艺术,这是迈向代码整洁之道的第二步。
第一步是设计和编写测试。在本书中,你将逐步学习如何改进你的代码。
它还能帮助你学习测试驱动开发,这是一种行之有效的编写简洁代码的策略,因为如果没有足够的测试用例,你就无法重构代码。为了充分利用本书,你不仅要阅读,还要按照自己的节奏来实践示例。
这本书讲的是边读边做。最棒的是,Martin 非常清楚为什么要重构,以及重构如何提升代码质量。
您可能知道,大多数现代 Java IDE(例如 IntelliJ IDEA)都具有强大的重构功能,您应该尽可能多地使用它们来重构代码。
如果您需要帮助,我建议您看看Udemy 上的使用 IntelliJIDEA 重构 Java课程,其中展示了一些实际示例和 Java 代码的实时重构。
8.《日常事物的设计》
你们中的许多人会惊讶地看到这本书出现在程序员必读书籍列表中,你们中的一些人可能会想,一本 27 年前的书怎么会出现在这个列表中,因为这本书于 1988 年首次出版,书名是“日常事物的心理学”。
我推荐这本书是因为程序员天生好奇,并且他们深度参与产品设计,这本书将教你设计如何作为产品和用户之间的沟通。
读完这本书,你将会成为一名更优秀的设计师,并理解事物的运作原理。如果你还需要更多理由,这本书绝对是唐纳德·A·诺曼的畅销书之一。

9.有效 Java
哇,这是我的另一个最爱,也是 Java 开发者的圣杯。如果不读这本书,理解 Java API 就不算完整。这本书的作者正是 Joshua Bloch,他编写了许多 JDK 中的重要代码,例如Java Collection 框架和 java.lang 包中的许多核心类。
几乎所有 Java 开发者都熟悉这本书,如果有人还没读过,一定要去读一读;这本书真的非常棒。你不仅可以学习最佳实践,还能理解 Java API 如此设计背后的原因,因为你可以从创建它的程序员那里获得第一手资料。
我认为我不需要说服任何 Java 开发人员阅读这本书,但对于我的 C++、Python 和 Ruby 程序员来说,您可以从这本书中学到很多关于 API 设计、设计模式以及编写干净而健壮的代码的知识。
我告诉过你学习他人的经验和清洁代码,而有效 Java 就是这种哲学的最好例子。
10.清洁编码器
这是《代码整洁之道》的第二部分,虽然并非官方正式版本,但通常被认为是。顾名思义,第一部分教你如何成为一名专业的程序员,而这一部分则教你如何成为一名专业的开发人员。
正如书名所示,这是一本关于专业程序员行为准则的书。我喜欢这本书,因为鲍勃大叔的叙事风格和风格,感觉就像他在跟你说话,你会觉得自己参与了对话,并且会学到一个专业的开发人员在不同情况下应该如何表现。
你将学习如何说“是”和“不”,听起来很滑稽?但在实际工作中,说出这两个词并不容易。
你需要学会说“不”和“是”的艺术,这样才能达到预期的效果,而这正是我从这本书中学到的最好的一课。我相信你不会后悔读这本书。
11. 谷歌的软件工程:从编程中汲取的经验教训
本书是一本综合指南,为软件工程领域提供了宝贵的见解。
该书在 686 条评论中获得了 4.6 分(满分 5 分)的出色评分,深入探讨了单纯的编程技能与培养可持续和健康的代码库所需的更广泛知识之间的关键区别。
作者凭借在 Google 的丰富经验,对领先的从业者如何在软件生命周期内管理和发展软件进行了坦诚而深刻的探索。
本书重点介绍了谷歌独特的工程文化、流程和工具,阐明了这些元素如何促进工程组织的效率。
您将更深入地了解三个基本原则:时间对软件可持续性的影响、规模对软件实践的影响以及设计和开发决策中固有的权衡。
这项工作对于寻求提升技能并在动态和苛刻的环境中应对代码库演变的复杂性的软件工程师来说是宝贵的资源。
12.程序员在工作
我很幸运,在我的时代能有这样一本书。《程序员的工作》这本书基于对十五位伟大的程序员和计算机科学家近8小时的采访。
通过本次采访,您将了解他们的经验,了解优秀的程序员如何学习编程、如何实践他们的技艺以及他们对编程未来的看法。
只需阅读目录并了解程序员的名字,您就会感到兴奋,其中包括 Joshua Bloch、Peter Norvig、Donald Knuth、Ken Thompson 和 Jamie Zawinski 等伟人。
我强烈建议每位程序员都随身携带这本书,或者至少在 iPad 或 Kindle 上保存一个 PDF 版本。这本书不仅引人入胜,还能激励人心,拓展你的视野、思维和经验。
这就是我列出的每个程序员都应该读的12本书。你不需要一本每次都写满代码的技术书籍就能成为一名更优秀的程序员。我同意编程和编码是程序员工作的两个基本方面,但还有很多其他方面。
事实上,你确实需要一些分享过去十年程序员真实经验的书籍。这些书能激励你,让你充满新的能量。这些书并不适合任何编程语言专家,比如 Java 或 C++ 开发人员。
相反,它面向所有程序员和软件开发人员。在学习Java、C#、JavaScript或Python之前,学习编程至关重要。语言只是工具,而不是艺术。
编程的精髓就藏在这些书中。在如今这个忙碌的世界里,我强烈建议你在 iPad、Kindle 或智能手机上准备一些电子书和 PDF,一有空就读,让你感觉精力充沛。
文章来源:https://dev.to/somadevtoo/12-timeless-books-every-programmer-should-read-3202