程序员必备:这本豆瓣评分8.5的书你一定要读一读

今天去豆瓣读书浏览了一下,刷到这本豆瓣评分8.5的书很受欢迎,分享给身为程序员的你,希望你能喜欢。

程序员的README

[美] 克里斯·里科米尼(Chris Riccomini) 著,付裕 译

每名新入行的工程师在开始工作之前要阅读的书!10年+大型公司初级工程师指导经验的行业大咖教你如何开启职业生涯、扩展工作技能、应对糟糕管理,调整工作节奏!

推荐理由:

  1. 对于刚刚成为软件工程师的新手来说, 知道如何编写代码只是成功了一半。你可能很快就会发现, 学校并没有教授在现实世界中至关重要的技能和工作中必要的流程。本书恰恰填补了这一 环节,它是作者十多年来在大型公司指导初级工程师工作的教程,涵盖软件工程的基础知识和最佳实践。
  2. 对于拥有几年工作经验的软件工程师来说,他们可能会在新 的工作方式、工具和流程上遇到挑战,更不用说与新人协作时的 社交难题了。随着软件开发行业的与时俱进,工程师之间也可能 存在技术上的差距。这本书是一本非常好的用于自我精进的教程。
  3. 无论你处于职业生涯的哪个阶段,这本书都非常实用。本书能够很好地帮助刚刚踏入这个行业的工程师去认识真实世界。似乎从来都是程序员为他人撰写 README,从来没有人为程序员撰写过 README。

豆瓣评论:

非科班生通过这本书,算是对软件工程有了一个全面化的认知。——豆瓣评论

挺不错的一本程序员工作成长方方面面的指南,从参加工作开始,到开始写代码的各个方面,涉及到了软件工程的各个部分,从中说明程序员的工作和如何做得更好,可以参考。里面每章的《升级加油站》很有价值——豆瓣评论

适合刚入职场或有几年经验的技术人员阅读,尤其是在500强外企工作的朋友,里面的关于团队管理和个人成长的内容跟我待的这家外企简直一模一样,很多场景读来很有熟悉感。——豆瓣评论

作者一定是一名软件开发老鸟,译者也用心,适合职业生涯刚起步的IT人阅读。从学生到职场的三个关键转变是代码规范,反思自省,主动沟通。——豆瓣评论

对于刚刚成为软件工程师的新手来说, 知道如何编写代码只 是成功了一半。你可能很快就会发现, 学校并没有教授在现实世 界中至关重要的技能和工作中必要的流程。本书恰恰填补了这一 环节,它是作者十多年来在大型公司指导初级工程师工作的教 程,涵盖软件工程的基础知识和最佳实践。

本书第 1~2 章讲解当你在公司开启你的职业生涯时会发生什 么; 第 3~11 章会扩展你的工作技能, 教你如何使用现有代码库、 解决和防止技术债、编写生产级软件、管理依赖关系、有效地测 试、评审代码、交付软件、处理 On-Call 时的事故和构建可演进的 架构等;剩余章节涵盖管理能力和职业阶梯的提升等相关内容, 例如敏捷计划、与管理者合作以及成长为资深工程师的必经之路。 本书中非常重要的一部分内容是教你如何应对糟糕的管理,以及 如何调整自己的节奏。

本书内容不仅浅显易懂, 还覆盖整个软件开发周期, 是一本技 术主管希望每名新入行的工程师在开始工作之前都能阅读的书。

样章分享:

第1章 前面的旅程

你作为一名软件工程师的旅程将跨越你的整个职业生涯, 沿途将有许多站点 — 学生、工程师、技术负责人,甚至可能是管理者。大多数新入行的工程师在开始时都有技术基础,但没有 什么实质上的经验。本书前面的章节将会引导你走向职业生涯的 第一个里程碑。当你能够安全地交付代码并与你的团队无缝协作 时,你就会到达这个里程碑。

到达第一个里程碑是很困难的。因为你需要的信息会散落在 互联网上,或者更糟糕的是,隐藏在某人的脑袋里。本书整合了 成功所需的关键信息。但是一名成功的软件工程师究竟是什么样 子的呢?以及如何成为一名成功的软件工程师呢?

1.1 你的目的地

每个人都是从入门级工程师开始做起的。如果想晋级,你就 需要具备下面几个核心领域中所需要的能力。

● 技术知识: 你知道计算机科学的基础知识。你知道如何使 用集成开发环境(IDE)、构建系统、 调试代码和测试框架。你熟悉持续集成、系统指标和监控、配置和打包系统。你 积极主动地创建和改进测试代码。在做架构决策时, 你会 考虑到长期运维。

● 执行力: 你通过用代码解决问题来创造价值, 并且你了解 你的工作和业务之间的联系。 你已经可以构建并部署中小 型的特性。你会编写、测试和评审代码。你分担 On-Call 的职责, 调试运维问题。你是积极主动并且可靠的。你参 加技术讲座、阅读小组、面谈和路演。

● 沟通能力: 你能同时以书面和口头的形式进行清晰的沟 通。你能够有效地给予和接受反馈。在模棱两可的情况下, 你会主动寻求帮助并得到明确的结果。 你能以建设性的方 式提出问题和定义课题。你在可能的情况下可以提供帮 助, 并开始影响同事。你会文档化你的工作。你撰写清晰 的设计文档并征求反馈意见。在与他人打交道时, 你富有 耐心和同理心。

● 领导力: 你能在指定的工作范围内独立地完成工作。你能 迅速地从错误中学习。你能很好地处理变动和模糊的问 题。你积极参与到项目和季度的规划中。你能帮助新的成 员融入团队。你可以向你的管理者提供有意义的反馈。

1.2 你的旅程地图

要想到达你的终点,你需要一张地图。本章的其余部分将帮 助你导览全书和你的职业生涯初期。我们将从“新手营”开始, 因为那里是所有新手出发的地方。之后沿着“试炼之河”漂流, 来到编写代码并学习规范和流程的地方。接下来去“贡献者之角”, 在这里发布一些有意义的特性。 发布特性意味着你将不得不在“运 维之海”的风暴中扬帆航行。最后,我们会在“胜任之湾”这个 安全港着陆。

我们对很多段落都提供了注释。你可以从头至尾地通读本书, 也可以直接跳到你最关心的章节。我们有意让许多注释在下文中 多次出现。各章是按照主题来进行分类的,但我们所涉及的主题 将会贯穿你的整个职业生涯,常读常新。

1.2.1 新手营

你以一名新手的身份开启了你的旅程。你需要熟悉公司、团 队,以及如何完成本职工作;参加入职会议;设置你的开发环境 和系统权限,并弄清楚团队的常规流程和会议;阅读文档并与队 友进行讨论。如果你在入职过程中发现了漏洞,你可以在文档中 做出一些补充。

为了帮助你顺利地开展工作,你的公司可能会有一个新人入职培训。这些培训课程会让你了解公司是如何运转的,带领你参观整个组织,并介绍一些公司领导。新人入职培训还会向你介绍其他部门的员工,那些是你未来的同事。如果你的公司没有安排新人入职培训,那需要你自己去向你的管理者要一份公司的“组织架构图”,了解清楚谁负责什么, 谁向谁汇报, 都有哪些不同的部门,以及它们之间的关系。记得做好笔记。

坎宁安定律和自行车棚效应
我们建议你在团队中用文档记录下会议的内容、入职 流程和其他口口相传的东西。你会得到很多的评论和纠正。不要把这些评论和纠正当作针对你个人的批评。重点并不 是要写一份完美的文档, 而是要写得足够多, 以引发讨论, 充实细节。这是坎宁安定律的一个应用, 该定律认为: “在 互联网上获得正确答案的最好方法并不是提出问题,而是 发布错误的答案。”

过度集中在细枝末节上的讨论总是会很冗长,这种现 象被称为“自行车棚”(bike-shedding)效应。自行车棚效 应是西里尔 ·诺思科特 · 帕金森的一则寓言故事,该寓言 描述了一个被指派到发电厂对该发电厂的设计方案进行评 审的委员会的故事。对该委员会来说,因为发电厂的设计 方案过于复杂,以至于无法讨论出什么实际的内容,所以 他们花了几分钟就批准了这些计划。然后,他们又花了 45 分钟来讨论发电厂旁边的自行车棚的材料问题。 “自行车棚 效应”在技术类的工作中经常出现。

有些公司会有额外的新手教程来帮助你获得系统权限、构建 开发环境、检出和编译代码。如果没有这样的教程,正好借此机 会去创建一份。写下所有你在构建环境时所做的事情。 (参见第 2 章“步入自觉阶段”。)

你应该被分配到一个小任务去学习如何修改代码并将其安全 地发布到生产环境。如果没有的话,就主动寻找或要求去做一些 有用的小幅改动。这些改动一定要小,甚至可以小到只更新一行 注释。这样做的目的是让你去了解那些步骤, 而不是去打动谁。(参 见第 2 章“步入自觉阶段”和第 8 章“软件交付”。)

设置你的代码编辑器或 IDE。IDE 要和你团队的保持一致。如 果你还不了解团队所使用的 IDE,就去网上找一个教程。学习 IDE 将为你以后节省出大量的时间。配置你的 IDE 去适配团队的代码 规范,搞清楚代码规范里都有什么以及怎样才能符合这些规范。

(参见第 3 章“玩转代码”。)

确保你的管理者邀请你参加团队和公司的会议,诸如站会、 迭代计划会、项目总结会、全员会议等。如果你的管理者有一对 一面谈的习惯的话,提醒他们给你安排一个。 (参见第 12 章“敏 捷计划”和第 13 章“与管理者合作”。)

1.2.2 试炼之河

一旦你完成了新手任务,你将开始为团队分担真正的工作。 你可能会在一个现有的代码库上工作。你发现的东西可能会使你 感到困惑或害怕。多提问, 并经常让团队评审你的工作成果。 (参 见第 3 章“玩转代码”和第 7 章“代码评审”。)

在你的成长过程中, 持续学习是至关重要的。了解如何编译、 测试和部署代码。阅读那些提交代码的请求和代码评审意见。不 要害怕询问更多的信息。多报名参加技术讲座、午餐会、阅读小 组、导师计划,诸如此类。 (参见第 2 章“步入自觉阶段”;第 5 章“依赖管理”;第 6 章“测试”和第 8 章“软件交付”。)

现在是时候与你的管理者建立一些联系了。了解他们的工作 风格,理解他们的期望,并与他们谈谈你的目标。如果你的管理 者有一对一面谈的习惯,那么你要期待有几场这样的谈话。管理 者通常都希望跟踪事情的进展, 所以问问他们后续如何沟通。 (参 见第 13 章“与管理者合作”。)

你第一次被邀请参加的计划会议,通常是迭代计划会议。你 也可能参加项目总结会或全员会议。要了解一下路线图和开发计 划的全貌。 (参见第 12 章“敏捷计划”。)

1.2.3 贡献者之角

一旦你着手开发大一些的任务和特性就意味着你进入了“贡 献者之角”。团队会信任你能更独立地完成工作。学习如何编写生 产级别的代码,使这些代码对运维者友好。恰当地管理组件间的依赖关系,并进行完备的测试。 (参见第 3 章“玩转代码”;第 4 章“编写可维护的代码”;第 5 章“依赖管理”和第 6 章“测试”。)

现在你也应该去帮助队友。参与到代码评审中去,做好队友 会询问你的想法和反馈的准备。 因为你的团队可能会忘记你是最 近才加入的, 所以你一旦感到困惑, 就请提出问题。 (参见第 2 章 “步入自觉阶段”;第 7 章“代码评审”和第 10 章“技术设计流程”。)

大多数公司都会有季度规划和目标设定的周期。参与到团队 的计划中去, 并与你的管理者一同制定目标或 OKR (目标和关键 成果) 。(参见第 12 章“敏捷计划”和第 13 章“与管理者合作”。)

1.2.4 运维之海

当你参与到更大的任务中时,你将会学到如何向客户交付代 码。在交付过程中会发生很多事情:测试、构建、发布、部署和 展开。完善这个过程需要一些技巧。 (参见第 8 章“软件交付”。)

在你的修改生效之后,你将不得不去运维这个软件。运维工 作中你会面临很大的压力并且需要勇气。客户会因为软件的不稳 定而受到影响。你需要使用监控指标、日志和跟踪工具来实时调 试软件。这时你也可能需要参与轮流的 On-Call。接触运维工作会 让你清楚地了解那些代码如何在客户的手中发挥作用。同时你也 要学会保护你的软件。 (参见第 4 章“编写可维护的代码”和第 9 章“On-Call”。)

1.2.5 胜任之湾

你的团队现在将依靠你来负责一个小项目。你需要撰写一份 技术设计文档并帮助团队进行项目规划。设计软件将迫使你面临 全新级别的复杂度。不要满足于你的第一版设计。反复斟酌,要 随时做好准备, 因为你的系统会随着时间的推移而不断变化。 (参 见第 10 章“技术设计流程”;第 11 章“构建可演进的架构”以及 第 12 章“敏捷计划”。)你工作中的早期光芒已经消散。你在系统架构、编译环节、 部署环节以及测试环境中都看到了不足之处。你要开始学习在必 要的维护和重构中间寻找平衡。不要试图重构一切。 (参见第 3 章 “玩转代码”。)

你可能也对团队的工作流有见解。写下你的观察,哪些是有 效的, 哪些是无效的, 然后与你的管理者一对一地谈谈你的想法。 (参见第 13 章“与管理者合作”。)

现在是设定长期目标和评估绩效的时候了。同管理者一起理 解这个过程,并从同事那里获得反馈。同管理者谈谈职业上的志 向、未来的工作、项目和想法。 (参见第 13 章“与管理者合作” 和第 14 章“职业生涯规划”。)

1.3 前进!

你现在已经有了初学者旅程的地图和目的地。在“胜任之湾” 着陆后,你将成为一名成熟的软件工程师,此时的你能够与你的 团队合作,贡献价值。本书中的其他部分将引导你的职业生涯。 接下来,我们的旅程即将开始。

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值