# 这本书把报错信息当作产品最关键的界面

> 工程师出身的产品经理 Drew Hoskins，写给真正用户从未出席需求会的工程师。

原文: https://fdetimes.net/zh/books-courses/product-minded-engineer-drew-hoskins-review/

“诊断信息可能是一个产品最重要的界面。”这句话并非出自讲 UX 的章节，而是出自 Drew Hoskins 为 O'Reilly Media 撰写的《The Product-Minded Engineer》第 3 章，也就是讲错误与警告的那一章。

对前线部署工程师（FDE）来说，这正是在客户现场的日常。需求来自买方：加一个导出步骤，把 Agent 接入 ERP。

但想想那些每天早上都要和系统打交道的人：运营人员、会计、调度员。需求签字确认的会议，他们往往不在场；还没弄明白新功能是做什么的，他们可能就先撞上了一条错误信息。

这本书瞄准的正是这道缺口：做出客户的用户真正需要的东西，而不只是工单上写的东西。

## 两边都待过的作者

Gergely Orosz 在 The Pragmatic Engineer 上介绍 Hoskins 时说，他原是软件工程师，现在做产品经理。Orosz 发布了第 3 章的节选，并表示在他看来，Hoskins 是写这样一本书的理想人选。Hoskins 本人说，这本书写了大约 18 个月，从他加入 Temporal 的第二天开始动笔。

不同书商列出的副标题不一样：backstory.london 写的是“Building the Right Solutions for Your Users”，Helion 写的是“Building Impactful Software for Your Users”，但其实是同一本书。

全书分为四部分：Develop、Deliver、Discover、Define。核心论点很直接：除了技术能力，工程师还需要对用户有更深的同理心。与之配套的目标是：把产品思维融入技术任务本身，并学会从用户那里收集有价值的反馈。

## 按什么顺序读？

如果你正从后端或平台工作转向 FDE 岗位，建议早点读。它的主要论点，即工程师需要对用户有更深的同理心，正是直接与客户共事时必须具备的。如果你已经做了多年 PM，书中很多内容可能并不陌生。

比较合理的顺序是：先读 The Pragmatic Engineer 上的第 3 章节选，因为第二天就能用上。接着读第 6 章“Understanding Your Target Audience”和第 7 章“Discovering Your Product Through Simulation”，这两章最接近客户需求探索。然后再从头读起。

## 观点一：错误就是界面

节选中最具体的建议是：在 API 或应用的最外层抛出错误，因为那里还知道用户正在经历什么场景。在最内层，代码只知道缺了一个键，却不知道用户想做什么。

设想你为客户搭建了一条发票导入数据管道。深处的一个解析函数报出 `KeyError: 'invoice_id'`，会计唯一能做的就是给你打电话。

如果在外层捕获这个错误，信息就可以变成：“无法导入 9 月发票文件：第 412 行缺少 invoice_id 列，请检查 ERP 导出模板。”

这样用户就能自己修复，你也免了一通半夜的电话。

**要点:** 错误信息是一种界面，值得像任何功能一样精心设计。

## 观点二：用户上手之前先模拟

书中明确提出的目标之一，是模拟并预测用户会如何与产品交互，让产品更易用；第 7 章整章都在讲如何通过模拟来发现产品。对 FDE 来说，这是演示前成本最低的练习。

假设你马上要交付一个用于检索合同的 Agent。别再重跑那几个示例问题，而是扮演一位赶时间的法务人员。

他们会输入交易对手的缩写，把整封邮件粘贴进提问框，然后不重述上下文就追问。每当你不得不停下来猜测，就说明你赶在客户之前找到了一个 bug。

## 观点三：产品思维就在工单里

这本书主张把产品思维嵌入日常技术任务，而不是当作一项单独的工作。这很适合 FDE，因为很少有人会给他们派一个叫“用户研究”的任务。

最简单的做法是：在客户现场每写一条警告、每选一个默认配置值，都问一问终端用户会怎么读、怎么理解。这个问题只花几分钟，却常常能省下一整场解释。

这一点也值得写进简历。像“重写导入数据管道的错误处理层，让客户侧用户能自行解决常见数据错误”这样的描述，能让招聘经理看出你理解终端用户。

“与利益相关方协作”就做不到这一点。面试时准备好类似的例子，并讲清楚修复之前用户遇到了什么问题、之后情况有什么变化。

如果只读一章，就读讲错误的那一章。下次再有错误信息让客户给你打电话，你会知道该修哪一层。

**本周动手试试:**

- 在你正在部署的系统里，挑出客户的用户最常遇到的三条错误信息，逐条改写，写明用户当时在做什么、下一步该怎么做。
- 下次演示前，扮演客户的一位终端用户，从头到尾完成一项真实任务，记下每一个不得不停下来猜测的地方。
- 阅读 The Pragmatic Engineer 上的第 3 章节选，并对照你当前代码库处理错误的方式。

## 信源

- [The Product-Minded Engineer: Building the Right Solutions for Your Users by Drew Hoskins](https://backstory.london/products/9781098173739)

- [The Product-Minded Engineer. Building Impactful Software for Your Users – Drew Hoskins](https://helion.pl/ksiazki/the-product-minded-engineer-building-impactful-software-for-your-users-drew-hoskins,e_4n43.htm)

- [The Product-Minded Engineer (The Pragmatic Engineer)](https://newsletter.pragmaticengineer.com/p/the-product-minded-engineer)
