披露:本文含合作链接;如果您通过本文中的链接购买产品或服务,我可能会得到一些佣金。
有句说法是,如果你从自己的错误中学习,你只会学到一点点;但如果你从他人的错误中学习,你可以在很短的时间内学到很多。还有什么比读书来学习别人的经历更好的方法呢?
编程作为职业,就是要不断学习和充实自己,但遗憾的是,没有一种开始方式是绝对正确的。
学校和学院的实际编程教育远远落后于现实需求,不是每个计算机科学专业的毕业生都能在一家擅长培训的公司工作。
另一个不错的选择是阅读书籍,参加在线课程,听听那些已经走过这条路的大牛们的建议。而读书是最受验证的方法。
我还是挺后悔当初刚开始编程的时候没有早点接触到《Clean Code》(http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882?tag=javamysqlanta-20)。这些书能改变你的职业生涯,让你成为一个更出色的程序员。
这些书不是教你如何学习像Java、Python或C++这样的编程语言的语法和语义,而是更多地关于思考方式、组织方式以及提升软件工程技能的方法,使你在软件工程的技艺上变得更好。
他们不会让你在特定的编程语言,比如Java上更擅长,但它们会帮助你成为一个更好的程序员。成为更好的程序员。
我还喜欢这类书的一点是,你可以在沙发、床上甚至上下班途中阅读它们。换句话说,你不需要编译器或IDE就能尝试书中的内容,看看它们怎么运作,这不像其他编程书籍。
如果你不自己写程序、运行测试并理解结果,你从《Java并发编程实战》这本书中学不到任何东西。虽然我已经读过这些书,并且在我的 iPad 上有这些书的 PDF 版本,我也会在上下班的路上翻阅它们。
话说,要想从任何编程书里学到最多的,动手编写并运行书中的示例代码是必须的。
顺便说一句,如果你是新朋友,我之前的文章中提到过10本必读的软件工程书籍和10本必读的算法书籍,如果你还没看的话,看完这篇文章后也可以去看看。
……
12本能帮助你成为更好程序员的经典编程书籍不再浪费你宝贵的时间,以下是每个程序员、软件工程师、开发人员和编程人员都应该阅读的前十本书单。
这些书涉及软件开发的不同领域,包括编程、设计、架构、算法、数据结构、解决问题、规划、项目管理和企业文化。
读了这些书,你会得到那些作者在与一些顶尖的地方和人物合作中多年积累的经验。
(https://www.amazon.com/System-Design-Interview-insiders-Second/dp/B08CMF2CQF/?tag=javamysqlanta-20)
1. 系统设计面试:亚历克斯·徐的内部指南
系统设计对程序员和开发人员而言是一项至关重要的技能,这本书也是学习系统设计的最佳选择之一。虽然这本书主要是为准备系统设计面试的人而写的,但它对所有程序员来说也值得一读。
由 Alex Xu 撰写,凭借其内部见解,本指南提供了对系统设计细节的宝贵见解,这对技术面试来说至关重要。
以帮助候选人成功为目标,本指南包括系统设计面试的各个方面,包括关键概念和思路、解题策略和实际案例。
此资源提供了一种结构化且实用的方法来掌握系统设计的技能,无论你是初学者还是希望提高面试表现的专业人士,都非常合适。
这本书有两卷,涵盖了从可扩展性到流量限制,从API网关到微服务等大量的系统设计概念等等。
凭借其内部视角,该指南为读者提供了所需的知识和策略,帮助他们在复杂的面试场景中应对自如,成为任何希望在系统设计面试中表现优异,并帮助他们在技术行业中进一步发展职业生涯人士的必备工具。
您也可以将这本书与ByteByteGo 课程一起使用,以便学习更有效。
- *
或
星号
11. 领域驱动开发:应对软件复杂性的模式
这款软件相当复杂,任何能够帮助你简化这种复杂性或更好地应对这种复杂性的方法都会受到欢迎。领域驱动设计是一种截然不同的软件开发方法,这也是我将这本书列为程序员必读书目的原因。
埃里克·埃文斯出色地解释了术语 "领域驱动设计(DDD)",并展示了如何应对复杂性。有经验的开发人员会明白领域知识的重要性。
事实上,一个程序员如果不了解其行业,就无法成为专家并设计出更好的系统。
这就是为什么程序员会选择专注于某个特定领域,比如金融、医疗、保险等。结合了这些领域的知识和编程技能,这会让你成为一个更优秀的程序员。
https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/?tag=javamysqlanta-20
……
3. 编程珠(第二版)
这是为了准备编程面试而读的第一本书,它包含了对新手来说最棘手的问题。如果你试着自己解决这些问题,你就能学到很多东西。它们挑战你对内存、CPU和算法知识这些核心概念的理解,让你对它们有更深的认识。
有些人可能认为这本书已经过时了,因为它最早出版于1999年。但实际上这本书是一本真正的经典,对任何程序员来说,书中的分析和解释至今仍然非常有用。
这是一本很好的书,适合用来练习数据结构、算法设计、查找、排序、堆和性能优化技巧。为了给你一个概览,例如试着自己解决这个问题,就可以感受到其中的内容了。
"如何对多达一千万个独特的非负整数(0到10^7之间)进行排序,并且只使用1.25M内存?如果只有1M(或更少)内存该怎么办?如果这些整数不再唯一,每个值的出现次数也有一定限制,又该怎么办?"
向 Jon Bentley 致以敬意,他创作的《编程珠玑》真是名副其实。
话说,如果你正在准备编程面试,我建议你也看看 Y K 在 Udemy 上的课程《11 个必备编程题目》。Y K 是一位曾经的 Google 工程师,也是著名的 YouTube 教学频道 @CS DOJO 的创作者,他的讲解方式非常出色,这门课程会帮助你更好地理解这些复杂的概念。
链接: http://www.amazon.com/Programming-Pearls-2nd-Edition-Bentley/dp/0201657880?tag=javamysqlanta-20
此处省略某部分内容
4. GoF 设计模式(Design Patterns)
当你看到你的资深同事用更优雅的方式解决一个问题时,有多少人感到惊讶?通过使用面向对象的设计原则和模式,我也有同感,我也是。
当我刚开始工作的时候,我对设计模式完全不了解,也不知道它们如何帮着写出更好的代码。
我有C和C++的背景,只知道写些类或结构体的代码,然后用main函数来测试。当我开始接触Java及其API时,才了解到像Collections.synchronizedList()这样的功能,它用于在Java中同步List,还有BufferedReader,用来读取字符数据,这些都是装饰器设计模式的典型例子。
我真正意识到设计模式的力量是在我的代码审查中,我的一位资深合伙人将我的大 if-else 结构重构成了状态设计模式。
《设计模式:可复用面向对象软件的基础》(https://medium.com/javarevisited/7-best-online-courses-to-learn-object-oriented-design-pattern-in-java-749b6399af59),是另一本经典且原始的著作,由著名的“四人组”——埃里克·伽玛、理查德·海尔、拉尔·约翰逊和约翰·沃利斯编写,就是由他们整理出来的这23种模式。
我在考虑是否应该推荐Head First 设计模式或这本书,说实话,我从《Head First 设计模式》这本书中获益更多,不过,很多专业的程序员可能不太喜欢《Head First》那种风格,但这本书绝对值得关注。
顺便说一句,如果你喜欢《Head First》系列,那就试试《设计模式》,又是另一本好书。《设计模式》在中文语境中通常以其技术术语来称呼,如果需要提到《Head First》作为系列标识,可以考虑加括号或作为脚注说明。
而且,如果你需要一些帮助来实现这些模式的方法,并且你喜欢通过观看视频来学习,那么Udemy上的Java设计模式课程是另一个很好的辅助工具。我个人的经验是,这种组合非常适合学习和掌握经典模式,使你更好地理解和运用设计模式的概念。
链接到亚马逊的相关书籍页面: 指向亚马逊相关书籍页面
这些书籍推荐给程序员,因为它们提供了宝贵的知识和实践经验。
5. 神话的人月:项目管理中的“人月”概念
如果你想深入了解软件开发、估算、项目管理以及开发过程中可能遇到的问题,你真的应该读这本书。
我一直很好奇,为什么多层建筑的建造计划更周全,估计更准确,而软件开发却难以做到这一点呢?
为什么其他行业都有更好的工具、流程和质量控制,而软件世界却落后于它们,这本书能帮你明白其中的原因。如果你想要成为一个项目经理,这本书是你必读的一本。
6. 干净的代码
我的最爱,我已经读了大概3到4遍了,我还是很喜欢读它。我总是后悔当初刚开始工作时没有买一本。
鲍勃叔叔通过他的系列书籍出色地教授了软件开发的艺术,而这本则是最好的之一。
你将学习如何命名变量,如何写出更好的方法,以及如何更好地组织你的代码(即保持良好的代码结构),什么是代码异味,为什么一种解决问题的方式是错误的,以及为什么另一种方式更好。
如果你是一名Java开发者,你将会更有收获,但我认为像Java或C++这样的面向对象语言的程序员都能从关于代码、编程和软件开发艺术的一般性建议中受益。
如果你也欣赏鲍勃大叔的风格,不妨看看这本书的第二部分《代码整洁之道》,它能帮助你成为一个更好的专业程序员。
只是为了让你知道,著名Udemy讲师Maximilian Schwarzmuller有一门关于Clean Code的课程,我觉得这门课很棒,可以作为这本书的好补充,你也可以看看,顺便提一句,例子是用JavaScript编程语言编写的。
下面是一些推荐的编程书籍,包括《编写整洁的代码:软件工艺手册》:
7. Martin Fowler 的《重构:改善现有代码》
一旦你读完《清洁代码》后还觉得不过瘾,这本书就是你应该继续阅读的选择。它是中级程序员最能理解的最佳书籍;它会教你如何重构,这是迈向清洁代码的第二步。
第一步是设计并编写测试。在这本书里,你会一步步学习如何让你的代码更棒。
它还将帮助你学习测试驱动开发,一种已被证明能写出清晰代码的方法。因为你无法在没有足够的测试用例的情况下重构代码。为了从这本书中获得最大的收益,不仅要阅读,而且要按照自己的节奏动手实践其中的例子。
这本书讲的是边读边做的内容。最让人高兴的是,马丁非常清楚地解释了为什么要做重构,以及它是如何提升代码质量的。
你可能知道,大多数现代的 Java IDE(比如 IntelliJ IDEA)都具有强大的重构功能,你应该尽可能地利用这些功能来重构你的代码。
如果你需要帮助的话,可以去学习一下Udemy上的《使用IntelliJ IDEA进行Java重构》课程,这个课程包含了一些动手实践示例和Java代码的实际重构演示。
推荐一本学习代码重构的好书:
Refactoring: 改善现有代码的设计
8.《日常生活的设计》(点击链接购买)
你们中的许多人会惊讶地看到这本书出现在必读程序员书籍的列表中,有些人可能会疑惑为什么一本27年前出版的书怎么会出现在这里,这本书最初于1988年出版,书名为《日常物品的心理》(原书名为《The Psychology of Everyday Things》)。
推荐这本书,因为程序员天生好奇,并且他们在产品设计中起着重要作用。这本书将教你设计如何在产品与用户之间起沟通的作用。
读了这本书之后,你会成为一个更好的设计师,对事物如何运作有更好的理解。如果你还需要一个额外的理由,这本书也是唐纳德·A·诺曼的畅销作品之一。
9. Effective Java (《Effective Java》) (一本关于Java的好书)
哇,我的另一本最爱和Java开发者心中的圣杯——这本书。不读这本书的话,理解Java API就不算完整。这本书的作者正是Joshua Bloch大师,他为JDK编写了很多重要的代码,比如Java Collection framework以及许多java.lang包中的核心类,例如。
几乎所有Java开发者都听说过这本书,如果没有读过的话,赶紧去读一下;这简直太好了。你不仅可以学到最佳实践,还能理解为什么Java API会以这种方式设计的背后原因,因为你直接从创造它的程序员那里得到了一手信息。
我认为不必说服任何Java开发者阅读这本书,但对于我的C++、Python和Ruby程序员来说,这本书能帮助你们学到许多API设计、设计模式以及编写清晰且健壮的代码的方法。
我跟你讲过要从别人的经历中学,比如《Clean Code》这本书,而《Effective Java》就是这种思想的最佳体现。
https://www.amazon.com/Effective-Java-3rd-Joshua-Bloch/dp/0134685997/?tag=javamysqlanta-20
10. Clean Coder(清洁编码之道)
这是《清洁代码》一书中通常视作的第二部分。正如其名,第一部分教你专业程序员是如何编写代码的,而这一部分则教你如何像专业的开发人员一样行事。
这是一本关于编程的职业人士行为准则的书,正如副标题所正确暗示的那样。我喜欢这本书是因为 Uncle Bob 讲故事的方式和风格,感觉就像他在和你对话,你会觉得你也是对话的一部分,并且你会学到在各种情况下应该如何行为。
你会学会说“是”和说“不”,听起来是不是有点好笑?但说到真正的工作,要在工作中说这两个词可不容易。
你需要掌握既学会说“不”又学会说“是”,以达到预期的效果。这是我从这本书中学到的最好的一课。我相信你读了这本书一定不会后悔。这本书:https://medium.com/javarevisited/6-coding-books-every-programmers-and-software-developers-should-read-620124886c8f。
《Clean Code》(点击阅读)https://www.amazon.com/Clean-Coder-Conduct-Professional-Programmers/dp/0137081073?tag=javamysqlanta-20
11. Google的软件工程:从编程中学习的经验
这本书提供了关于软件工程领域的宝贵见解。
凭借来自686条评论的4.6(满分为5分)的惊人评分,这本书详细讲述了仅仅具备编程技巧与培养可持续且健康的代码库所需的更广泛的知识之间的关键区别。
基于在谷歌多年的丰富经验,作者们坦诚且深刻地探讨了领先的技术专家们是如何管理和演进软件的整个生命周期的。
这本书聚焦于谷歌独特的工程文化、流程和方法,展示了这些独特元素如何帮助工程团队更有效。
你将对三个基本原理有更深入的理解:时间如何影响软件的可持续性;规模如何影响软件实践;设计和开发决策中的取舍。
对于软件工程师来说,这份资源是提升技能并应对代码库演进过程中复杂性的无价之宝,在一个动态且充满挑战的环境中。
(https://www.amazon.com.au/Software-Engineering-Google-Titus-Winters/dp/1492082791?tag=javamysqlanta-20)
12. 程序员的工作实录
https://www.amazon.com/Coders-Work-Reflections-Craft-Programming/dp/1430219483?tag=javamysqlanta-20
我觉得很幸运在这个时代能读到这样的书。《Coder at Work》这书是基于对十五位历史上最伟大的程序员和计算机科学家近八小时的访谈。
通过这次关于“如何成为编程高手”的采访,你将从他们的经验中学习,了解他们如何练习编程技艺,他们对[编程]未来的看法。
只需浏览目录,看到像 Joshua Bloch、Peter Norvig、Donald Knuth、Ken Thompson 和 Jamie Zawinski 这些伟大程序员的名字,你就能感受到兴奋。
我强烈建议每位程序员都应该拥有一本这本书,或者至少在他们的iPad或Kindle这些设备上有一个PDF版本的副本。这本书不仅有趣,还能激励你,拓展你的视野、思维方式和经验。
(点击这里查看书籍详情)
(点击这里查看书籍详情): https://www.amazon.com/Coders-Work-Reflections-Craft-Programming/dp/1430219483?tag=javamysqlanta-20
这就是我要推荐的12本程序员必读书籍。要成为更好的程序员,并不一定每次都需要读那些全是代码的技术书。我也认同编程和写代码确实是程序员工作中的重要部分,但程序员的工作还有很多其他方面需要考虑。
事实上,你也确实需要一些分享过去十年间程序员真实经验的书籍。这些书能激励你,给你新的动力。这些书不是为那些精通Java或C++等编程语言的专家写的。
相反,这适用于所有程序员和软件开发者。在学习任何一种编程语言,如Java、C#、JavaScript或Python等之前,掌握编程技能是至关重要的。语言只是工具,而不是艺术形式。
这些书里藏着编程的匠心。在这个忙碌的世界里,我强烈建议你在iPad、Kindle或手机上下载电子书和PDF,在你空闲的时候读它们,你会感到精神焕发。
共同學習,寫下你的評論
評論加載中...
作者其他優質文章