# FDE 读《The Missing README》别按目录来

> 每次进驻新客户，FDE 都要重当一回新人，这本 288 页的书正是那第一周的清单。

原文: https://fdetimes.net/zh/books-courses/missing-readme-book-for-fdes/

每接一个新项目，前线部署工程师（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 在每个新客户那里都会再经历一次这个第一年，只是可用的时间更少。

**本周动手试试:**

- 为你正在做或即将开始的客户系统画一张三列表（已理解、部分理解、未知）
- 上线前问客户一个问题：系统半夜出故障时，谁接告警？你可以查看哪些日志？
- 改写简历中的一行，体现你值过班，或与客户工程师一起写过设计文档

## 信源

- [The Missing README: A Guide for the New Software Engineer](https://themissingreadme.com/)

- [The Missing README by Chris Riccomini and Dmitriy Ryaboy](https://penguinrandomhouse.com/books/690695/the-missing-readme-by-chris-riccomini-and-dmitriy-ryaboy)

- [The Missing README: A Guide for the New Software Engineer (Barnes & Noble)](https://www.barnesandnoble.com/w/the-missing-readme-chris-riccomini/1139537571)

- [What's Missing from 'The Missing README'](https://neverworkintheory.org/2021/10/24/whats-missing-from-the-missing-readme.html)
