FDE 读《The Missing README》别按目录来
每次进驻新客户,FDE 都要重当一回新人,这本 288 页的书正是那第一周的清单。
要点速览
- 这本书写给刚入行的工程师,而每个新项目都会让 FDE 重新坐回新人的位置。
- 按项目节奏阅读:先读第 2 章、第 10 章,再读可运维代码部分,最后读第 9 章。
- Greg Wilson 指出,书中没有讨论隐私和法律责任,这块空白需要 FDE 自己补上。
每接一个新项目,前线部署工程师(FDE)就重新当一回新工程师。代码库是陌生的,评审流程是陌生的,还多出一位不在自己公司组织架构图上的经理。
大多数职业类书籍默认你只当一次新人。Chris Riccomini 和 Dmitriy Ryaboy 合著的《The Missing README: A Guide for the New Software Engineer》也不例外:No Starch Press 于 2021 年 8 月 4 日出版了这本 288 页的平装书,读者定位是刚入行的人。
这本书的官网承诺,教你掌握经理希望你懂的软件工程技能。Barnes & Noble 的介绍说得更直白:会写代码只是成功的一半,因为许多决定成败的技能和流程,任何学校或训练营都不教。
对于正在做或想做 FDE 的人,这本书的价值在别处。它是一份“第一周”清单,而这个第一周你在每个客户那里都要重来一遍。第一周过得越快,就越早创造价值。
装订成书的一次导师咖啡
Penguin Random House 把它定位为技术负责人希望每位新工程师入职前都读过的书,Gwen Shapira 则把它比作和一位资深导师喝一次咖啡。
据 Greg Wilson 介绍,书中内容从持续集成、重构、技术支持,一直讲到敏捷规划和与经理共事。这些都是职业习惯,也正是 FDE 需要按每个客户的方式重新学一遍的东西。
十四章,但别按顺序读
全书共 14 章。下面的建议是一份阅读计划,依据书中公开的章节标题和简介,对照 FDE 的工作节奏编排,并非逐页摘要。
比较合理的顺序是:入职前读第 2 章,做第一个大功能前读第 10 章,代码开始在客户基础设施上运行时读编写可运维代码的部分,上线前读第 9 章。与经理共事的内容最好在整个项目期间逐步读,因为你既有自己的经理,客户那边也有一位。
第一个观点:说清自己不知道什么
单看第 2 章的标题“Getting to Conscious Competence”(达到有意识的胜任),就是一条马上能用的建议。按字面理解,它指的是能把事情做完,同时清楚知道自己的理解止于何处。在客户团队里,最危险的新人是不知道自己缺什么的人。
设想你在一家零售连锁企业的第一周,对方需要一条库存预测数据管道。你画一张三列的表:已理解(语言、框架)、部分理解(他们怎么部署)、未知(哪张表是库存水平的唯一可信来源)。
第三列就是你第一次开会时要问的问题清单,也是向客户表明你认真对待这件事的方式。
第二个观点:设计文档从问题定义开始
第 10 章的简介是所有章节中最清楚的:设计流程,涵盖实验、问题定义、文档和协作。在客户那里,问题定义是客户需求挖掘与工程交汇的地方,也最容易出错。
实用建议:做第一个大功能之前,写一份简短文档,开头是经客户确认的问题定义,然后至少请一位客户方工程师评审。他们会发现没人写下来的约束条件,而且在你离开后,为这份设计辩护的也是他们。
第三个观点:凌晨两点谁接告警?
代码在客户那里跑起来之后,编写可运维代码的内容就变得很实际:日志、指标、配置和防御式编程。紧随其后的是第 9 章“Going On-Call”(值班)。
一本写给新人的书专门用一整章讲值班,传递的信息很明确:生产系统迟早会出故障,新人也必须做好准备。
对 FDE 来说,这两部分应该放在一起读,因为系统运行在别人的基础设施和数据上。再看零售的例子:假设数据管道在促销前一晚出了故障。如果没有日志、没有指标,也没约定谁接告警,一次技术事故就会变成一次信任事故。
具体做法:上线前,检查代码记录了哪些日志、指标发往哪里,然后与客户书面约定谁值班、谁可以查看日志。
书里没讲的内容
Greg Wilson 给自己的书评起名为“What’s Missing from ‘The Missing README’”(《The Missing README》缺了什么)。他指出,书中没有讨论隐私、算法歧视、职场骚扰、劳动者权益和法律责任。
对 FDE 而言,这块空白比对内部工程师更大,因为你处理的是客户的真实数据,有时还包括客户的客户的数据。读完这本书后,自己在入职第一天的清单上加一个问题:这些数据是关于谁的?用来做什么?客户是否确认过你可以这样使用?
适合谁读,接下来做什么
这本书最适合转做 FDE 的软件工程师,尤其是多年来习惯只维护一个代码库的人。有经验的 FDE 可以快速浏览,只在第 2 章、第 10 章、可运维代码部分和第 9 章停下来细读。
面试 FDE 岗位时,可以直接从书中借两个问题:谁评审设计文档?上线后谁值班?这些回答能帮你在接受 offer 之前,想清楚自己的责任会延伸到哪里。
简历上不要只写“部署了系统 X”。如果你和客户工程师一起写过设计文档,或者为运行在真实数据上的系统值过班,就明确写出来,并补充一个具体细节,比如客户方由谁评审了文档。
这本书的初衷是帮你度过工作的第一年。FDE 在每个新客户那里都会再经历一次这个第一年,只是可用的时间更少。
这篇文章对你有帮助吗?
感谢你的反馈!