Press "Enter" to skip to content

软件工程师必读书籍

你可能已经注意到,我是一个阅读的超级粉丝。我通常每个月会读3-4本书。从有知识的人身上学习有两种方式:直接与他们合作或阅读他们写的东西。第一种是最好的选择,但往往不太可能实现。我们有很多由当时世界上最擅长此领域的人写的书籍。如果我们看一下软件工程界,这里有很多佳作,但是我将为每个工作领域推荐最好的书籍。

通用

《程序员修炼之道:通向卓越的道路》 作者:大卫·托马斯(David Thomas)和安德鲁·亨特(Andrew Hunt)。

这本书为开发人员提供了技术和专业的实用建议,以提高他们的能力。从个人责任和职业发展到架构技术,它涵盖了现代开发人员所需要了解的各个方面。

《计算机程序的构造和解释》 作者:Harold Abelson / Gerald Jay Sussman / Julie Sussman

这本书是学习编程基础知识的最佳书籍之一(也称为SICP)。它是麻省理工学院的技术编程基础课程,并使用Scheme展示不同的编程概念。该书解释了四种最为人熟知的编程语言范式:命令式,逻辑式,面向对象和应用式编程。

《现代软件工程》 作者:大卫·法利(David Farley)

这本书专注于构建优秀的软件,作者提供了一个可靠的框架,将持续交付(CD)、六边形架构和测试驱动开发等良好实践与软件工程的核心思想相结合。此外,他还讲述了软件开发的历史和改变这个行业的思想。

最佳实践

《代码整洁之道》 作者:罗伯特·马丁(Uncle Bob Martin)。

这是最优秀的软件开发书籍之一,旨在教授软件工程师编写清晰编程代码的原则。书中有很多示例,展示了如何重构代码,使其更易读和可维护。

《代码大全》 作者:史蒂夫·迈克康奈尔

有人认为这本书是最好的编程实践指南之一,强烈推荐给初学者。尽管这本书出版已经超过15年了,但它在今天仍然是有效的。它涉及设计、编码、调试和测试等多个主题。在900多页的书中,作者描述了如何先为人编写程序,然后再为计算机编写程序,如何根据域划分代码,以及如何掌握顶级编程人员的人际素养(包括谦逊、好奇心和最重要的是保持自我)。

《设计模式:可复用面向对象软件的基础》 作者:Erich Gamma

本书结合设计实例从面向对象的设计中精选出23个设计模式, 总结了面向对象设计中*有价值的经验, 并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好、 表达清楚的软件设计模式, 这些模式在实用环境下特别有用。

《Head First设计模式》 作者:埃里克·弗里曼(Eric Freeman)。

这本书介绍了一些领先的软件设计模式,以创建更灵活、优雅和可重用的设计,无需重新发现设计解决方案。它的写作方式类似于《白痴指南》系列的书籍,适合初学者理解。

《重构:改善既有代码的设计》 作者:马丁·福勒(Martin Fowler)。

在这本书中,马丁·福勒讲述了如何改进现有代码的设计。重构是指改变软件系统的内部结构,而不改变代码的外部行为。

数据结构和算法

算法图解》 作者:阿迪蒂亚·布哈加瓦(Aditya Bhargava)。

这本书易于理解,介绍了如何将标准算法应用于开发人员在日常实践中遇到的问题。从排序和搜索开始,到数据压缩和人工智能领域,书中都有用Python编写的代码示例。

《算法》作者:Robert Sedgewick / Kevin Wayne

本书作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4版具体给出了每位程序员应知应会的50个算法,提供了实际代码,而且这些 Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造。

算法导论》 作者:托马斯·科尔曼(Thomas H. Cormen)、查尔斯·賴瑟森(Cleisserson)、罗纳德·李瓦斯特(Ronald L. Rivest)、克利福德·斯坦(Clifford Stein)

这是一本关于各种算法深入讲解的最著名书籍之一(也被称为CLRS)。它是一本综合性的指南,适合从初学者到专业人士的所有读者。每一章都相对独立,可作为单独学习的单元。算法采用英语和伪代码描述,所以即使对编程不熟悉的人也能理解。

《编程珠玑》作者:Jon Bentley

这本书是帮助人们以程序员的思维方式思考的最有影响力的书籍之一。书中的每个概念都以实际问题和各种解决方案来描述。该书要求读者理解内存、CPU和算法的核心概念,并逐渐增加难度,而不是立即给出答案。《编程珠玑》是本与其他书籍有所不同的书籍,它以扎实的方式教授数据结构和算法的问题,尤其是搜索、排序等问题。

数据

《设计数据密集型应用》 作者:马丁·克莱普曼(Martin Kleppman)。

这本书描述了高级数据概念,如数据库和数据模型,并深入探讨了事务、复制、一致性等分布式概念。

《学习SQL》 作者:艾伦·博利厄(Alan Beaulieu)(免费电子书)。

这本SQL入门书籍将帮助您快速了解所有SQL的基本知识,无论您是需要创建数据库应用程序、执行管理职责还是生成报告。

测试

《通过测试成长的面向对象软件》 作者:史蒂夫·弗里曼(Steve Freeman)。

作者概述了他们完成任务时使用的过程、设计目标和一些工具。接下来,您将通过一个详细的示例来了解TDD在多个层面上的工作方式,利用测试来指导代码的功能、面向对象的结构和模拟对象来查找并定义对象之间的关系。

《单元测试原则、实践和模式》 作者:弗拉基米尔·科里科夫(Vladimir Khorikov)。

这本书演示了如何应用最佳实践来改进您的单元测试。您将了解哪些测试是有效的,哪些需要重构,哪些必须彻底删除!

元测试的艺术》 作者:罗伊·奥谢斯夫(Roy Osherove)。

这本书将单元测试作为开发人员必须进行的关键事项进行了重点介绍。书中解释了如何进行单元测试的核心技能,范围和单元测试的内容。

通过示例学习TDD》 作者:肯特·贝克(Kent Beck)。

TDD是一种经过时间检验有效的软件工程技术。肯特·贝克在本书中通过示例教授程序员如何使用TDD。

软件架构

《软件架构基础》 作者:马克·理查兹(Mark Richards)和尼尔·福特(Neil Ford)。

该书首次对软件架构的多个方面进行了全面的审查。对渴望成为实践和新手架构师的人来说,本书涵盖了架构特性、模式、组件选择、绘图和呈现架构、演化式架构等多个主题。

架构整洁之道》 作者:罗伯特·马丁(Uncle Bob Martin)。

该书介绍了为软件架构师提供所需的纪律和实践,利用设计原则解决功能、组件分离和数据管理问题。它展示了如何针对不同类型的应用程序使用不同的高级结构,并定义适当的边界和层次结构。

软件架构的困难之处》 作者:尼尔·福特(Neal Ford)、马克·理查兹(Mark Richards)、普拉莫德·萨达拉格(Pramod Sadalage)、赞纳·德赫哈尼(Zhamak Dehghani)。

本书揭示了如何在各种折中条件中选择适当的架构解决方案。您将学会分析权衡、记录决策并了解如何处理单片应用程序的复杂性。它还展示了如何在高度分布式的架构中处理数据。

《领域驱动设计快速入门》 作者:阿贝尔·阿瓦姆(Abel Avram)和弗洛伊德·马里纳斯库(Floyd Marinescu)(免费电子书)。

这本书可能是关于领域驱动设计最好的书籍。书中通过具体示例展示了领域驱动设计的方法,还解释了常与领域驱动设计相关的六边形架构。

《软件设计哲学》 作者:约翰·奥斯特豪特(John Ousterhout)。

这本书讲解如何将复杂的软件系统分解为可以独立实现的组件。然后,它讨论了接近软件设计过程的哲学问题,并提供了一系列的设计准则。该书还列出了糟糕设计的警示信号。与《代码整洁之道》相结合,它提供了不同的观点。

《企业应用架构模式》作者:Martin Fowler

这本由Martin Fowler撰写的书是关于企业应用程序开发的实践。该书教授了不同的概念,例如:你是否正确地为应用程序分层,你是否了解可以选择的不同展示设计(如MVC、MVVM、模板),你如何访问数据等等。Martin给出了40多种解决企业应用程序架构中常见问题的模式。书中包含了大量的UML图和Java和C#的代码示例。请注意,这本书是2002年出版的,所以缺少一些现代概念,如REST、JSON或云计算。

分布式系统

《凤凰架构》 作者:周志明。

这是一本从架构视角讲解如何构建大型分布式系统的著作,是超级畅销书《深入理解Java虚拟机》的作者周志明多年架构和研发经验的总结,得到了多位行业资深架构专家的联袂推荐。

DevOps

《DevOps手册》 作者:吉恩·金(Gene Kim)、帕特里克·德博斯(Patrick Debois)、约翰·威利斯(John Willis)和杰兹·汉布尔(Jez Humble)。

这本书是之前的《凤凰计划》的续集。书籍努力为成功的DevOps定义准则,并在此过程中消除对这一主题的任何误解。该书面向IT部门的各个角色,从程序员到技术高管,无论是经验丰富的从业者还是新手都会对它感兴趣。

《持续交付》 作者:杰兹·汉布尔(Jez Humble)和大卫·法利(David Farley)。

作者们介绍了快速、可靠、低风险交付流程的基础。然后介绍了“部署管道”,一种自动化的机制,用于管理从签入到发布的所有更改。接下来讨论了支持持续交付所需的“生态系统”,包括治理、基础架构、数据和配置管理等。

《加速:成功技术组织的四个关键指标》 作者:尼科尔·福格伦(Nicole Forsgren)、杰兹·汉布尔(Jez Humble)、吉恩·金(Gene Kim)。

作者们研究了成功的技术组织与不那么成功的竞争对手之间的区别。这本书汇编了《DevOps报告》多年的深入研究成果,该报告基于来自全球企业的23000个数据集。根据研究,可以使用四个关键指标来比较组织的运作方式(周期时间、部署频率、变更失败率和平均恢复时间)。

机器学习

《百页机器学习》 作者:安德烈·伯克夫(Andriy Burkov)

本书的作者概述了各种机器学习主题,对初学者和有意在问题深入研究之前迅速了解ML算法提供了高层次的概述。

内容由GeekAI网页翻译服务自动翻译完成。 原文地址:https://newsletter.techworld-with-milan.com/p/books-every-software-engineer-must

发表回复