研发工程师:让它干那些你不想干的部分
一、研发每天在跟什么较劲
工程师的一天里,真正在写核心逻辑的时间可能不到三成。剩下的时间在别处:读一份写得不清不楚的 PRD 然后去追产品经理确认;写接口文档、补单元测试、写一次性的数据订正脚本;排查一个只在线上出现的问题,翻日志、翻告警群、翻三个月前的一次变更记录;给别人的 MR 做 Code Review。
这些活的共同点是必要但不增值——不做不行,做了也不会让你成为更好的工程师。它们恰好也是最适合交出去的:规则清楚、有明确的对错、你一眼能看出做得对不对。
这一章不讲怎么让 AI 写业务代码。那件事你已经在编辑器里用得比这本书熟。这一章讲的是编辑器覆盖不到的那部分——需要读文档、翻聊天记录、跨系统查东西、产出非代码交付物的场景。这些恰好是接了飞书之后才做得了的。
二、你的上下文散在飞书哪儿
| 上下文类型 | 在飞书的位置 | 典型内容 |
|---|---|---|
| 需求 | 云文档 PRD、多维表格 | 需求描述、验收标准 |
| 技术方案 | 云文档、知识库 | 设计文档、评审结论 |
| 排期与任务 | 项目、任务 | 谁做什么、什么时候提测 |
| 线上问题 | 告警群、值班群 | 报警、现象描述、临时处理 |
| 踩坑记录 | 知识库 | 历史故障复盘、疑难问题记录 |
| 变更记录 | 审批、发布群 | 谁在什么时候上了什么 |
| 代码与工单 | 需要走连接器 | Gitee、Linear 等 |
第五行「踩坑记录」是研发这张表里最被低估的。同一个坑,团队通常会踩两次以上——第一次是新人踩,第二次是老人忘了。这些记录一直在知识库躺着,只是出问题时没人想得起来去搜。让 Agent 在排查时顺手翻一遍,是这一章性价比最高的一件事。
三、四个高频场景
接需求:先把 PRD 里没说清的地方挑出来
拿到 PRD 开始写技术方案,写到一半发现某个状态没定义、某个边界情况没写、和另一个模块的关系不清楚。回去问产品,产品说我想想,一天过去了。这个来回通常要三四轮。
读这份 PRD,我要开始做技术方案。先不要写方案,先做两件事: 一、把需求里所有没说清楚的地方列出来,按这几类分:状态和流转没定义的、边界和异常情况没写的、和现有功能的关系不明确的、数据口径不清楚的、非功能要求(性能、并发、兼容)缺失的。每条指出是 PRD 的哪一段,并写成一句可以直接去问产品经理的话。 二、列出这个需求会影响到的现有模块和接口,依据是(技术文档/知识库)里的现有设计,找不到依据的标成「需人工确认」。
把追问集中在一次发出去,比写到一半卡一次问一次快得多。而且列出来的问题清单直接就能贴进群里 @ 产品,不用再组织语言。
它挑出来的「问题」里,有些是它自己没读懂,PRD 未必真有问题。快速过一遍,把误报划掉再发出去——发一堆假问题给产品经理,下次人家就不认真看了。
它回来的东西大概长这样问题清单的前三条
| 类别 | 问题 | 出处 |
|---|---|---|
| 状态流转 | 订单被取消后再申请退款,走哪条流程?PRD 只写了未取消订单的退款路径 | 3.2 节 |
| 边界异常 | 优惠券和积分同时使用时,退款金额按哪个口径退?没有写 | 4.1 节 |
| 与现有功能关系 | 新的结算页是否复用现有的支付回调?如果复用,回调里的订单状态判断需要改 | 全文未提及 |
受影响的模块:订单服务(状态机)、支付回调(PaymentCallbackHandler)、积分服务——依据是技术文档「支付链路设计 v3」;风控是否受影响需人工确认,文档里没有相关描述。
问题澄清后,再让它基于 PRD 加澄清结论出技术方案初稿,你在骨架上改,比从空白文档开始快。
三四轮来回→一次问清
线上问题:把散在几处的线索拼成时间线
排查(问题描述)。按时间线整理: 一、从(告警群、值班群)里找出(时间范围)内所有相关的报警和讨论,按时间排列; 二、从(发布群/审批)里找出这段时间前后的变更记录,标出时间上可能相关的; 三、在(知识库)里搜索历史上有没有类似现象的记录,有的话把当时的原因和处理方式列出来; 四、基于以上给出几条可能的排查方向,每条说明依据是哪条线索。 不要下结论说根因是什么,只给方向和依据。日志我自己去看。
飞书 IM + 知识库 + 审批。代码和工单可以接 Gitee / Linear 连接器。
模型给的根因往往听着合理,一旦你信了就会顺着它的方向排查,错的方向比没有方向更耗时间。让它给的是线索的时空关联——什么时候报的警、前后有什么变更、历史上有没有类似——这些是客观事实,判断留给你。
第三条是这个场景的价值所在。历史踩坑记录的检索,人在紧张排查时不会做,但它可以顺手做。
翻半小时记录→两分钟
那些你不想写的产出物
工程师不怕难题,烦的是重复的文字活。
基于这份接口代码,生成接口文档:每个接口列出方法、路径、请求参数(含类型、是否必填、含义)、响应结构、错误码及含义。参数含义从代码注释和字段命名推断,推断出来的用「(推断)」标注,我来确认。文档格式按(现有文档模板)。生成后存到(飞书文档位置)。
同类的还有:
- 数据订正脚本:说清表、条件、要改成什么、影响行数预估,要求先出 SELECT 查影响范围给你看,确认后再给 UPDATE。这一条不能省,第五节会再说一次。
- 单元测试:给它函数和边界条件清单,让它补全用例,重点是覆盖异常分支
- Code Review 第一遍:让它先扫一遍明显问题——空指针、未处理异常、资源未关闭、并发问题、和团队规范不一致的地方,你在它的结果上做第二遍。它扫不出设计问题,那是你的部分
接口文档里「推断」的那些字段含义必须逐个确认。写错一个字段含义,下游按它接了,是要出线上问题的。
一下午→半小时
值班与告警的日常整理
每天早上八点,把过去 24 小时(告警群)里的报警按服务和类型归类,统计每类的次数,标出重复次数最多的三类和首次出现的新类型。已经在群里被讨论过或有处理结论的,把结论附上。生成一份值班交接简报存到(位置)。没有新增告警也说一声。
告警群一天几百条,重复的占大半,真正需要关注的新问题淹在里面。按类型归类、把新出现的挑出来,这件事人做很枯燥,它做刚好。
交接会二十分钟→读一份简报
四、该装哪几个技能、伙伴、连接器
| 类型 | 具体名称 | 用在哪 |
|---|---|---|
| 内置技能 | 云文档、知识库 | PRD、技术方案、踩坑记录 |
| 内置技能 | 飞书 IM | 告警群、值班群 |
| 内置技能 | 项目、任务 | 排期与提测 |
| 内置技能 | 审批 | 变更记录 |
| 内置技能 | 定时任务 | 场景四 |
| 推荐技能 | 编程类(内置 6 个 + 推荐 8 个) | 代码相关 |
| 工作伙伴 | 高级开发工程师 | 方案与代码评审 |
| 连接器 | Gitee | 仓库与提交记录 |
| 连接器 | Linear | 工单与迭代 |
| 连接器 | Supabase | 数据服务 |
模式建议:链路长、要反复自我修正的任务(跨多个文件的重构、需要调试的脚本)上 Pro;日常的文档和整理用 Turbo 就够。
五、边界在哪
研发这一章的边界和别的岗位不同——不在于数据敏感,在于代码的责任归属。
它产出的代码,署名的是你。 Code Review 通过、上线出问题,追责追到的是提交人。所以核心业务逻辑、涉及资金和权限的代码、性能敏感路径,AI 写的部分你必须逐行读懂再提交。读不懂就别提交,这一条没有商量余地。
线上变更必须人来执行。 发布、回滚、改配置、执行 DDL、跑数据订正——AI 可以准备、可以生成脚本、可以列出检查清单,执行由人做。不可逆动作前的那道确认,就是给这类操作留的。
它适合的是:脚手架、一次性脚本、文档、测试用例、排查线索、review 的第一遍。它不适合的是:需要理解你们系统历史包袱才能做对的决策。那些包袱不在任何文档里,只在老同事脑子里。
六、研发指令卡
| 场景 | 指令模板 |
|---|---|
| PRD 挑问题 | 「读这份 PRD,先不写方案。一、列出所有没说清的地方,分状态流转/边界异常/与现有功能关系/数据口径/非功能要求五类,每条指出出处并写成可直接问产品的一句话;二、列出受影响的现有模块和接口,依据来自(技术文档),无依据的标「需人工确认」。」 |
| 技术方案 | 「基于这份 PRD 和澄清结论出技术方案初稿:整体设计、数据结构变更、接口定义、影响面、风险点、分阶段实施建议;不确定的地方标出来不要替我拍板。」 |
| 排查线索 | 「排查(问题):一、(群名)(时间范围)内相关报警与讨论按时间排列;二、前后的变更记录并标出时间相关的;三、知识库里类似现象的历史记录及当时处理方式;四、可能的排查方向及各自依据。不要下根因结论。」 |
| 接口文档 | 「基于这段代码生成接口文档:方法、路径、请求参数(类型/必填/含义)、响应结构、错误码;参数含义推断出来的标「(推断)」等我确认;格式按(模板),存到(位置)。」 |
| 数据订正 | 「我要把(表)里满足(条件)的(字段)改成(值)。先写 SELECT 查出影响的行数和样例数据给我看,我确认后再给 UPDATE 语句,并附回滚方案。不要直接给 UPDATE。」 |
| Review 首轮 | 「按(团队规范文档)扫一遍这段代码:空指针、未处理异常、资源未关闭、并发问题、SQL 注入、与规范不一致处;每条指出行号和理由,不确定的也列出来。设计层面的问题我自己看。」 |
| 值班简报 | 「把过去 24 小时(告警群)的报警按服务和类型归类统计次数,标出重复最多的三类和新出现的类型,已有处理结论的附上结论,生成值班交接简报存(位置);无新增也告知。」 |
