软件开发人员必须阅读的20本书(一)

简介: 软件开发人员必须阅读的20本书(一)

image.png

本文翻译自国外论坛 medium,原文地址:irina-seng.medium.com/top-20-book…,作者:Irina Seng

持续学习的心态是软件开发人员想要保持专业相关性并增长自身价值的关键品质。

在这篇博文中,我将推荐 20 本最受欢迎的软件工程书籍清单,以帮助你实现这一目标。

面向软件开发人员的书籍

对于想要了解最新趋势并敞开心扉的开发者来说,这份清单是必不可少的。

1.《流畅的Python》

image.png

描述:Python 的简单性让你可以快速提高工作效率,但这通常意味着你不会使用它所提供的全部功能。通过本书,你将学习如何利用其最佳创意编写高效、现代的 Python 3 代码。

作者 Luciano Ramalho 将指导你了解 Python 的核心语言特性和库,并教你如何使代码更短、更快和更具可读性。

《流畅的Python》第二版对整本书进行了重大更新,包括:

  • 特殊方法:Python 对象行为一致的关键
  • 数据结构:序列、字典、集合、Unicode 和数据类
  • 函数作为对象:函数声明中的一流函数、相关设计模式和类型提示
  • 面向对象的习语:组合、继承、混合、接口、运算符重载、静态类型和协议
  • 控制流:上下文管理器、生成器、协程、异步/等待和线程/进程池
  • 元编程:属性、属性描述符、类装饰器和比元类更简单的新类元编程挂钩。

2.《学习 Go 语言》

image.png

描述:Go 正迅速成为构建 Web 服务的首选语言。虽然有很多教程可以向具有其他编程语言经验的开发人员教授 Go 的语法,但教程是不够的。他们不教授 Go 的习惯用法,因此开发人员最终会重新创建在 Go 上下文中没有意义的模式。本书提供了编写清晰且地道的 Go 所需的基本背景。

无论你的经验水平如何,你都将学习如何像 Go 开发人员一样思考。作者 Jon Bodner 介绍了经验丰富的 Go 开发人员采用的设计模式,并探讨了使用它们的基本原理。你还将预览 Go 即将推出的泛型支持以及它如何融入该语言。

  • 学习如何在 Go 中编写地道的代码并设计一个 Go 项目
  • 了解 Go 中设计决策的原因
  • 为独立开发者或团队设置 Go 开发环境
  • 了解如何以及何时使用反射、不安全和 cgo
  • 探索 Go 的特性如何让语言高效运行
  • 知道哪些 Go 特性你应该少用或根本不用

3.《软件架构:架构模式、特征及实践指南》

image.png

描述:全球薪酬调查定期将软件架构师列为前 10 名最佳工作,但没有真正的指南可以帮助开发人员成为架构师。到目前为止。本书首次全面概述了软件架构的许多方面。有抱负的和现有的架构师都将研究架构特征、架构模式、组件确定、图表和呈现架构、演化架构和许多其他主题。

Mark Richards 和 Neal Ford 是多年来专业教授软件架构课程的实践从业者 —— 专注于适用于所有技术栈的架构原则。考虑到过去十年的所有创新,你将以现代的眼光探索软件架构。

本书考察:

  • 架构模式:许多架构决策的技术基础
  • 组件:标识、耦合、内聚、分区和粒度
  • 软技能:有效的团队管理、会议、谈判、演示等
  • 现代性:在过去几年中发生根本变化的工程实践和操作方法
  • 架构作为一门工程学科:可重复的结果、指标和具体的评估,增加了软件架构的严谨性

4.《Python编程:从入门到实践》

image.png

描述:这是世界上最畅销的 Python 书籍的第二版。 Python 速成课程,第 2 版简单介绍了 Python 编程的核心。作者埃里克·马修斯 (Eric Matthes) 摒弃了可能妨碍学习如何编程的那种乏味、不必要的信息,而是选择提供一般编程概念、Python 基础知识和问题解决方面的基础。本书第二部分中的三个真实世界的项目允许读者以有用的方式应用他们的知识。

读者将学习如何创建简单的视频游戏,使用数据可视化技术制作图形和图表,以及构建和部署交互式 Web 应用程序。《Python编程:从入门到实践》第 2 版向初学者快速教授 Python 的基本知识,以便他们可以构建实用的程序并开发强大的编程技术。

5.《深入浅出设计模式》

image.png

描述:

你将从这本书中学到什么?

你知道你不想重新发明轮子,所以你看看设计模式:那些遇到过相同软件设计问题的人的经验教训。使用设计模式,你可以利用其他人的最佳实践和经验,这样你就可以将时间花在更具挑战性的事情上以及更有趣的东西。本书向你展示了重要的模式、何时使用它们以及为什么使用它们、如何将它们应用到你自己的设计中,以及它们所基于的面向对象设计原则。加入成千上万通过《深入浅出设计模式》提高了面向对象设计技能的开发人员。

这本书有什么特别之处?

如果你读过《深入浅出设计模式》一书,你就会知道会发生什么:一种视觉丰富的格式,专为你的大脑工作方式而设计。借助 《深入浅出设计模式》你将以一种不会让你入睡的方式学习设计原则和模式,因此你可以走出去解决软件设计问题并与团队中的其他人交流模式语言。

6.《代码整洁之道》

image.png

描述:即使是糟糕的代码也能正常运行。但如果代码不干净,它可能会让开发组织崩溃。每年,由于编写不当的代码,都会损失无数的时间和大量的资源。

你会从事什么样的工作?你会阅读代码 — 很多代码。你将面临思考该代码的正确之处和错误之处的挑战。更重要的是,你将面临重新评估你的专业价值观和对你的技术承诺的挑战。

读者能够从本书学到:

  • 如何区分好代码和坏代码
  • 如何编写好的代码以及如何将糟糕的代码转化为好的代码
  • 如何创建好的名称、好的函数、好的对象和好的类
  • 如何格式化代码以获得最大的可读性
  • 如何在不混淆代码逻辑的情况下实现完整的错误处理
  • 如何进行单元测试和实践测试驱动开发

本书是任何有兴趣编写更好代码的开发人员、软件工程师、项目经理、团队负责人或系统分析师的必备书籍。

7.《RUST程序设计:第二版》

image.png

描述:系统编程为世界的计算提供了基础。编写对性能敏感的代码需要一种编程语言,使程序员能够控制内存、处理器时间和其他系统资源的使用方式。 Rust 系统编程语言将这种控制与现代类型系统结合起来,现代类型系统可以捕获广泛的常见错误,从内存管理错误到线程之间的数据竞争。

通过这本书,经验丰富的系统程序员将学习如何使用 Rust 成功地弥合性能和安全性之间的差距。 Jim Blandy、Jason Orendorff 和 Leonora Tindall 展示了 Rust 的特性如何通过将可预测的性能与内存安全和可信赖的并发性相结合,让程序员控制内存消耗和处理器的使用。

你会学到:

  • Rust 的基本数据类型以及所有权和借用的核心概念
  • 如何编写具有特征和泛型的灵活、高效的代码
  • 如何编写没有数据竞争的快速多线程代码
  • Rust 的关键强大工具:闭包、迭代器和异步编程
  • 集合、字符串和文本、输入和输出、宏、不安全代码和外部函数接口

8.《OCP ORACLE CERTIFIED PROFESSIONAL JAVA SE 11 DEVELOPER COMPLETE STUDY GUIDE》

image.png

截至目前,本书还没有中文版。

描述:本书 OCP Oracle Certified Professional Java SE 11 Developer 认证最全面的准备指南 — 它涵盖了考试 1Z0–819 和升级考试 1Z0–817(以及退休的程序员 I 考试 1Z0–815 和程序员 II考试 1Z0–816)!

Java 广泛用于后端云应用程序、软件即服务应用程序 (SAAS),并且是用于开发 Android 应用程序的主要语言。这种面向对象的编程语言旨在在所有支持 Java 的平台上运行而无需重新编译。 Oracle Java Programmer 认证受到整个技术行业雇主的高度重视。

本书能学到:

  • 帮助你掌握最新OCP考试深度、难度、新模块题目的变化
  • 涵盖所有考试目标,例如 Java 数组、原始数据类型、字符串 API、对象和类、运算符和决策结构,以及应用封装
  • 允许开发人员了解所有最新的 Java 材料,如 lambda 表达式、流、并发、注释、泛型和模块
  • 提供构建 Java 应用程序、处理异常、通过接口编程、Java SE 中的安全编码等实用方法
  • 使你能够获得通过 OCP 考试所需的信息、理解和练习

9.《软件架构难点解惑》

image.png

描述:在软件架构中没有简单的决定。相反,有许多困难的部分 — 困难的问题或没有最佳实践的问题 — 迫使你在各种妥协中做出选择。通过本书,你将学习如何批判性地思考分布式架构所涉及的权衡。

架构资深人士和执业顾问 Neal Ford、Mark Richards、Pramod Sadalage 和 Zhamak Dehghani 讨论了选择合适架构的策略。通过交织一个虚构的技术专家组(Sysop Squad)的故事,他们研究了从如何确定服务粒度、管理工作流和编排、管理和解耦合同、管理分布式事务到如何优化操作特性(例如可扩展性)的所有内容、弹性和性能。

通过关注常见问题,本书提供的技术可帮助你在面对作为架构师所面临的问题时发现和权衡取舍。

  • 分析权衡并有效地记录你的决定
  • 就服务粒度做出更好的决策
  • 了解拆分单体应用程序的复杂性
  • 管理和解耦服务之间的契约
  • 在高度分布式架构中处理数据
  • 学习在分解应用程序时管理工作流和事务的模式

10.《Google软件工程》

image.png

描述:今天软件工程师不仅需要知道如何有效地编程,还需要知道如何开发适当的工程实践来使他们的代码库可持续和健康。本书强调了普通编程者和软件工程之间的这种区别。

软件工程师如何管理一个动态代码库,该代码库会在其整个生命周期内不断发展并响应不断变化的需求和要求?根据他们在 Google 的经验,软件工程师 Titus Winters 和 Hyrum Wright 以及技术作家 Tom Manshreck 对一些世界领先的从业者如何构建和维护软件提出了坦诚而有见地的看法。本书涵盖了 Google 独特的工程文化、流程和工具,以及这些方面如何提高工程组织的效率。

你将探索软件组织在设计、架构、编写和维护代码时应牢记的三个基本原则:

  • 时间如何影响软件的可持续性以及如何使你的代码随着时间的推移具有弹性
  • 规模如何影响工程组织内软件实践的可行性
  • 典型工程师在评估设计和开发决策时需要做出哪些权衡


目录
相关文章
|
1月前
|
敏捷开发 安全 测试技术
软件开发的要点有哪些?
软件开发过程包括需求分析、设计、编码、测试、上线与维护五大阶段。每个阶段需注重团队合作、文档编写、安全性和性能优化。建议采用敏捷开发、CI/CD、建立用户反馈机制及持续培训,以确保开发高效、产品质量高且能快速响应市场变化。
|
安全 测试技术 API
产品经理必学技术接口文档知识,提高工作效率
产品经理和开发人员之间的高效沟通和协作是项目成功的关键因素之一。在产品开发的不同阶段,产品经理需要了解开发工作的进度与掌握需求变化,以确保团队在同一方向上协作,以最大化项目的成功。
产品经理必学技术接口文档知识,提高工作效率
|
设计模式 机器学习/深度学习 算法
软件开发人员必须阅读的20本书(二)
软件开发人员必须阅读的20本书(二)
143 0
|
监控 数据可视化 Java
测试工程师如何做到初级测试管理(个人思考)?
测试工程师如何做到初级测试管理(个人思考)?
123 0
测试工程师如何做到初级测试管理(个人思考)?
|
Java 开发者 开发工具
如何做好干系人管理?知己知彼,百战百胜! | 开发者必读(080期)
最炫的技术新知、最热门的大咖公开课、最有趣的开发者活动、最实用的工具干货,就在《开发者必读》!
589 0
|
测试技术
不能成为专业软件测试人员的10大理由
你是一名专业的测试人员吗?  《转载》   如果你看到这篇文章了,你就有机会成为专业的了!   我写这篇文章并不是因为这个,其他无数的测试人员有比我更多的好东西拿来分享。总体而言,我的意思是在空闲时间阅读其他测试相关文章来提高自己的测试技能时,你也将是有志成为专业测试人员中的一分子。
1225 0