Appearance
带新人一周:哪几次我把 AI 关掉
应届生入职第三天,屏幕右边已经开着 Cursor 的 Chat。他问我:这个列表接口能不能直接让它写完。我说可以,但今天这一个不行。
他脸上那种表情我认得——不是不服,是怕浪费时间。组里其他人写业务都开着补全,我偏偏卡他。解释起来比写接口还费事,所以这篇按那一周记:哪几次关掉、关掉之后他问出了什么、我事后觉得对不对。
不是反 AI。我自己日常也用。怕的是新人把「能跑」当成「懂了」,三个月后一出线上问题,两边都说不清楚是谁写的。
周一:报错先别贴给模型
上午环境没配完,本地起不来。他已经把一整段红色堆栈复制进对话框。我伸手按了 Esc。
堆栈最上面是 Node 模块找不到,中间夹着三行我们自己的封装,最底下才是真正的路径拼错。模型若接过去,十有八九会先建议重装依赖——我上周刚在另一个项目里看过同样的建议,浪费半小时。
我让他做三件事,按顺序,不许跳:
- 只读第一行和最后一行,中间先当噪音。
- 在项目里搜报错里出现的那个函数名,找到我们自己的封装。
- 把封装打开,看它拼路径时用的是哪个环境变量。
二十分钟后他自己说:.env.local 没复制,文档里写了。模型不会翻我们内部 Wiki 第二页的那句「本地必须有一份 env」。
周一晚上我在笔记里写:报错的前十分钟,AI 是加速器也是障眼法。 新人还没建立「堆栈怎么读」,一加速就跳过那层肌肉。
周二:CRUD 可以补全,鉴权不行
周二下午做一个后台列表。筛选、分页、导出,典型 CRUD。我说:补全开着,Tab 尽管按,但有两处手写——权限判断,和「导出为什么不能走前端拼 CSV」。
他问为什么导出不行。我没讲原则,把去年一次事故翻出来:前端导出把不该出的字段带出去了,客服收到用户投诉。那次 diff 很漂亮,测试也绿,就是没人盯字段白名单。
他手写鉴权时卡了很久,问我 canExport 应该挂在角色上还是挂在资源上。这问题 AI 也会给一个听起来完整的答案,而且往往选「都可以,看业务」。对我来说,他能问出这个问题,比接口当天合并更重要。
周二结束时列表能跑。Code review 我只留了一条:导出接口的单测里补一条「无权限时不得出现字段名」。他自己写的,没让模型生成测试。生成的测试常常只断言 200,不断言不该出现的东西。
周三:文档在仓库里,不在模型的记忆里
他要接一个支付回调。模型给了一段「标准 webhook 验签」示例,用的是别家的 header 名字。我们内部用的字段在 docs/payments.md,去年改过一次,外部教程全是旧的。
我把 Chat 面板关了,让他打开那份 md,对着读十五分钟,再写。他读完问:为什么文档里写「重试以订单号幂等」,示例代码却用时间戳当 key。我说:文档是对的,示例是过期的,这就是为什么不能只喂模型。
周三下午他交的第一版仍用了时间戳。我没改代码,只在 PR 里问:同一笔订单回调两次,你的表会怎样。他愣了一下,自己改成订单号。那一下愣住,比我直接把正确代码贴过去值钱。
和 我拒绝合并那段 AI 补丁 里写的是同一类事:好看的 diff 里藏着过期假设。新人更容易信「完整示例」。
周四:让他解释,而不是让他再生成一版
周四做 code review。有一段分页,逻辑能跑,但 off-by-one 藏在边界。我问:最后一页只有 1 条的时候,前端页码怎么显示。他说:模型说这样写就行。
我把模型关掉,让他在白板上画:总数 21,每页 10,第三页。他画到一半发现自己的 Math.ceil 和接口返回的 hasMore 对不上。这不是 AI 写错这么简单——是他 没有一个自己的例子。
我现在带人有一条私规:PR 里如果出现「AI 说」三个字,先停。不是禁止用,是禁止把模型当出处。出处必须是文档、测试或你自己的例子。
周四晚上他问:那我还用 Cursor 吗。我说用。补全、重命名、解释陌生文件,继续。关掉的是「生成完就提交」,不是工具本身。
周五:事故演练,故意不给提示词
周五上午做一次桌面演练:staging 上一条支付回调重复打了三次。我把日志丢给他,不许开 Chat,只许 grep 和读代码。
四十分钟。他找到幂等键,找到漏记的一笔,写出复盘的三行:现象、原因、补丁范围。三行很短,但每行都能指到文件。若交给模型,会得到一份结构完整、章节齐全的「事故报告」,读起来像咨询公司模板,组里没人爱看。
周五下午我让他把这三行扩成组内帖。扩写可以用 AI 改病句,但 三行必须他先写。这和 四周不用 AI 写初稿 是同一条:第一屏是立场,后面才是抛光。
那一周我允许他用 AI 的时候
说「关掉」容易显得清高。其实那一周他用 AI 的次数并不少:
- 记不住的 TypeScript 工具类型,问一下,比翻 handbook 快。
- 把一段乱的 git 冲突说明人话,再自己决定留哪边。
- 英文注释写得太绕,让模型压短,我再看有没有改掉含义。
这些都没关。关的是 他尚未建立判断力的那一层:鉴权、钱、幂等、报错的前十分钟、文档和示例打架的时候。
如果把这些也交给模型,短期交付好看,三个月后你带出来的是一个 提示词很顺、问不出「最后一页只有 1 条怎么办」的人。
新人问过我的三句,我当时怎么答
「别人都用,我不用是不是吃亏?」 别人用的是补全和解释。你现在缺的是例子和文档。吃亏的是跳过那一层,不是少按几次 Tab。
「你怎么知道我是不是真懂?」 让你画最后一页、让你说回调打两次会怎样。画得出来、说得出来,就懂。能跑不等于懂。
「那我回家自己练的时候能不能全交给它?」 能。私人练习随便。仓库里、staging 上、有用户数据的路径,按周一到周五那几条。
答完第三条他好像松了口气。界限清楚,比「AI 要谨慎使用」这种空话好执行。
我自己也踩过的对称错误
两年前我带上一个新人,相反方向:几乎不让用补全,搞得他自卑,觉得自己被当成不信任。那次是我错。工具羞耻解决不了判断力。
这一周我刻意说清楚:关的是场景,不是人。 他可以比我敲得快,也可以比我更会写提示词。我要看的是钱、权限、幂等,这三处他必须能离开模型讲清楚。
组里另一个同事看了周五的复盘帖,说写得像人。我没告诉他三行是手写、后半才抛光。不重要。重要的是出事时帖子里有文件名。
一周之后我留在 Wiki 上的四行(给下一个新人)
- 报错前十分钟自己读堆栈,再问人,再问模型。
- 鉴权、钱、幂等,手写逻辑,测试要覆盖「不该出现的东西」。
- 内部文档和模型示例打架,信文档,把示例当过期。
- PR 描述里不要写「AI 说」;写你的例子,或链到文档段落。
四行不够当培训大纲,够当那一周的备忘。写在 Wiki 比写在我脑子里强,我也会忘,也会偷懒。
若你也在带人
不必学我这一周的节奏。有的组业务更急,有的新人已经在上家用熟了 Agent。可迁移的大概只有一句:先问他有没有自己的例子,再决定开不开 Chat。
有例子,开。没例子,先画、先读文档、先 grep。模型会把没例子的人送进「完整但浅」的那条路,路很好走,回头难。
我周五下班前看他关电脑,Chat 面板还开着。没让他关。下周有列表页,补全尽管用。支付那条路径,仍旧先问他订单号。
周一晚上我差点改口
回家路上我想:环境问题卡二十分钟,是不是太抠。组里 deadline 在下周四。若他用模型,十分钟就能装上依赖,我还能去写自己的单。
后来还是没改口。因为那天真正省下的不是二十分钟,是他以后自己配环境时 会先看 Wiki 第二页。模型给的重装依赖,看起来像在做事,其实在消耗信任——新人会觉得「官方建议都让重装」,内部文档变成可选。
我把这句写进给自己的备忘:带人时的着急,常常是在保护我的日历,不是保护他的判断。
周二的鉴权,他后来补的一封短消息
周三早上他在群里补了一句:canExport 我挂在资源上了,角色只决定能不能进这个资源。没人 @ 他,也没人点赞。我回了一个字:行。
这种消息以前很少见。用模型写接口的人,不大会回来解释自己选了哪边。他解释了,我就知道周二那一下卡住没有白卡。
若当天让模型选「都可以」,群里不会有这句,PR 里也不会有那条「无权限时不得出现字段名」的测试。短消息比周报能说明问题。
周四白板上的数字,我拍照存了
21 条、每页 10、第三页。他画叉,改 ceil,又改 hasMore。白板拍下来发他,说:这张比注释有用,注释会过期,例子可以下次还用。
我自己写代码时也常懒得举例子,直接让模型「按最佳实践」。带人一周,被逼着重新做自己平时省略的那步。所以这篇文章也不全是在说新人——有一半是说我。工具用顺了,例子会从手里溜走。
周五演练里他问的一句「能不能先问模型再 grep」
我说:可以颠倒顺序的场景很多,这一条不行。支付重复回调,组里有人的肌肉记忆是「先问再查」。先问的结果是一份漂亮复盘,文件名是假的或者是邻项目的。grep 慢,但文件名是真的。
他点头。我不确定他下周还会不会先问。习惯回潮很正常。我能做的是下次再演练一次,而不是把 Wiki 四行写成军规。
给其他带人的人:我不会写进 Wiki、只会私下说的
有的新人上来就很会写提示词,演示的时候主管会鼓掌。鼓掌没问题,别把鼓掌当成已经会看钱和权限。提示词是表达力,判断力是另一块肌肉。
反过来,有的新人不肯用补全,觉得那样像作弊。我会把补全打开,让他看我自己怎么 Tab。工具羞耻要先拆掉,再谈场景开关。这一周我两种人都遇过——第二种是上家公司禁止 AI 带出来的习惯。
一周的时间账(给觉得「关掉会误事」的人)
| 天 | 关掉的时长约 | 若全交给模型的乐观估计 | 我认的账 |
|---|---|---|---|
| 一 | 20 分钟读堆栈 | 8 分钟装依赖(可能装错) | 换他会读 Wiki |
| 二 | 鉴权手写 40 分钟 | 15 分钟生成 | 换他问出挂在哪 |
| 三 | 读文档 15 分钟 + 改幂等 | 一次生成验签示例 | 换他信文档 |
| 四 | 白板 25 分钟 | 再生成一版分页 | 换他自己的例子 |
| 五 | grep 40 分钟 | 一篇完整复盘 | 换三行真文件名 |
加起来大概两个半小时。两个半小时换不来一个成熟工程师,换来的是 他开始会问问题。组里若真的一天都匀不出来,那是排期问题,不是 AI 开关问题。排期把带人挤掉,模型只是让你暂时看不见亏空。
写这篇时他又来问了一句
入职第二周,支付回调要加一种新的失败码。他先发了文档段落链接,再问:这种码算不算要幂等。没先发模型答案。
我回:算,按订单号。然后说:Chat 可以用,帮你找这个码在哪个枚举。
开关不是永久关。关过一次,再打开,他知道关的是哪一层。这就是我要的。
写完这篇我把 Wiki 四行又看了一遍,删掉一个形容词,留下动词:读、手写、信文档、写例子。形容词像「务必谨慎」没有人执行。动词可以在下周再演练一次。
带人不是把 AI 关成品格教育。是把判断力练到他能自己决定开还是关。练的那段时间看起来慢,账在第二周那条失败码上已经开始还。