随着2020年尘埃落定和新的一年来临,很显然,我们将再次在年初度过大部分时间在室内度过。有什么比学习和阅读书籍更好的花费方式呢?
在本文中,如果您对软件工程感兴趣,我将与您分享10本书,您应该在2021年阅读。有些书是相当技术性的,但是总的来说,清单应该对任何人都开放。清单的排列顺序不是从最好到最坏,而是书的顺序。让我们开始吧!
The Read Aloud Cloud
从光开始,Forrest Brazeal的《朗读云》将自己描述为内部技术的无辜指南。如果您从未听说过"云"及其对IT的影响,那么这本书非常适合您!
> The Read Aloud Cloud by Forrest Brazeal
该书完全用押韵写成,并使用卡通漫画,解释了云如何在引擎盖下工作以及人们为保持云的运行所做的工作。听起来可能有些愚蠢(有时是愚蠢的),但是即使您没有IT方面的知识,这本书实际上也可以很好地解释技术概念。这也是很好的对话起点,很高兴向您的父母或配偶解释您整天在电脑后所做的事情。
Clean Code
罗伯特·C·马丁(Robert C. Martin)的干净代码(俗称"鲍勃叔叔")被许多人视为软件开发人员的经典读物。这本书摘录了什么是干净的代码以及如何编写。干净的代码很重要,因为它是我们防范巨大混乱的唯一武器。如果您曾经在第第十个项目中发现自己要重写旧版代码库,而只是为了重新陷入困境而陷入困境;这本书适合你。
> Clean Code by Robert C. Martin
尽管我应该警告您,但请引用作者的话:"在阅读本书时,要做好努力。这不是一本好书,您可以在飞机上阅读并在着陆之前读完。这本书将使您努力工作。"
实践中的软件架构
无论您扮演什么角色,在职业生涯中的某个时候,您都会遇到软件架构。这是一个充满很多问题的复杂领域:象牙塔建筑师,泥泞不堪的大瀑布,瀑布工程的趋势等等。这就是为什么我认为人们对软件体系结构的实践教育比设计模式更为重要。
> Software Architecture in Practice by Len Bass, Paul Clements, and Rick Kazman
实践中的软件体系结构是对软件体系结构的出色概述。这不仅是一本教您如何微服务如何工作的"模式"书。取而代之的是,这本书着重于可用于构建体系结构的过程和技术:与利益相关者讨论,需求如何与体系结构相关以及如何就体系结构进行沟通。因为从本质上讲,这就是架构的全部意义:就驱使构建系统原因以及构建系统以实现这些要求的需求进行沟通。
该书更像是参考手册,不应从头到尾全部阅读。本书前言中有一个读者指南,其中列出了您应阅读的章节,具体取决于您的背景。
精益创业
作为软件工程师或开发人员,您最关心的是构建以最有效的方式解决问题的系统。但是,您是否曾经考虑过,所构建的内容可能实际上并不能解决一个真正的问题,因此是不必要的?
> The Lean Startup by Eric Ries
在此前提下,精益创业公司提出了一种开发新产品和创新产品的方法,并仔细考虑您是否在构建正确的产品。并非所有公司都是创业公司。但是,即使是大型组织中的创新项目和部门也可以学习和应用启动技术。这本书邀请您退后一步,看看更大的图景,当我们被吸引来解决特定问题时,我们往往会忘记这些图景。
域驱动设计
另一个经典著作,埃里克·埃文斯(Eric Evans)写了一本书,讲述如何使软件的设计与您要解决的问题域的思维模型相匹配。域驱动设计位于软件开发的本质上:解决业务问题。
> Domain-Driven Design: Tackling Complexity in the Hear of Software by Eric Evans
本书涵盖了如何思考问题领域,用于讨论问题的语言以及组织方式。您的软件,以反映您对软件的不断了解。结合了干净的代码和软件体系结构,这些技术应该出现在每个软件工程师的工具箱中,以解决软件的实际问题。
凤凰计划
Bill是Parts Unlimited的IT经理。今天是星期二早上,在他开车去办公室时,比尔接到了首席执行官的电话。
该公司的新IT计划(代码为Phoenix Project)对于Parts Unlimited的未来至关重要,但是该项目大大超出预算,而且很晚。首席执行官希望Bill向他直接报告并在90天内解决问题,否则Bill的整个部门将被外包。
> The Phoenix Project by Gene Kim, Kevin Behr, and George Spafford
凤凰城项目讲述了一个IT组织脱轨的故事,以及使它重回正轨的流程。我知道这本书是关于IT运营的,并不是最令人兴奋的话题。但是《凤凰计划》将一个枯燥的主题变成了可以理解的叙述。再一次回退一步,看看那些花哨的绿地项目之外的大局,并考虑如何将您的写作软件维护和用于运营。
现场可靠性工程
按照上一本书的趋势,站点可靠性工程还专注于设计和开发后的软件生命周期。SRE解释了Google的运营方法,他们可以使开发人员拥有自己所构建软件的日常运行状况。
> Site Reliability Engineering: How Google runs production systems
目的是弥合希望尽快交付产品的开发团队与不希望任何东西投入生产的运营团队之间的差距。在此系列文章中,Google网站可靠性团队的主要成员解释了他们对整个生命周期的承诺如何以及为什么使公司成功构建,部署,监控和维护了世界上最大的一些软件系统。
实用程序员
实用程序员涵盖了广泛的主题,从对您的工作和职业发展的个人责任到体系结构技术,以使您的代码灵活和可维护。
> The Pragmatic Programmer by Andrew Hunt and David Thomas
如果我清单上的其他书籍似乎不太合适,那么The Pragmatic Programmer可以更全面地介绍软件工程领域,并涉及其他书籍所涵盖的许多更详细的主题。
重做
ReWork是该清单上较轻的书籍之一。从某种意义上讲,这本书并没有像传统小说那样写。这本书更多地是作者在37Signals工作期间收集的见解的集合。
> Rework by Jason Fried and David Heinemeier Hansson
37Signals(现称为Basecamp)是全球规模较小的公司之一,但也是世界上最著名的网络公司之一,部分原因是他们发明了一个叫做Ruby on Rails的小框架。鉴于故意将小公司和大名望结合起来的奇怪组合,Rework的作者对当今的工作和业务状况提供了独特的观点和见解。
设计数据密集型应用
在当前软件工程时代,数据无处不在,数据为王。越来越多的不只是设计优秀的应用程序,而且还涉及从这些应用程序创建和捕获数据流以获取业务见解。
> Designing Data-Intensive Applications by Martin Kleppmann
设计数据密集型应用程序提供了一种数据工程的小型百科全书。它涵盖了相当广泛的主题,并讨论了数据密集型分布式系统的许多原理和问题。鉴于数据变得越来越重要,因此提高您在该领域的知识绝对有用。
结论
接下来,我建议您作为2026年的软件工程师阅读这10本书。这是我过去阅读过的一些书,我计划在来年阅读其中的一些书。希望这份清单能激发您选择其中一本书并学习新知识。如果您有自己的书本建议,请访问评论,我们很乐意听取他们的建议!
原文链接:https://medium.com/codex/10-software-engineering-books-to-read-in-2021-181a4f093e60