上周有人在 dev.to 上写他周五面试栽在人工代码评审那一轮,整个周末都在重放那三十分钟。
我看完第一反应不是同情。
题目的形状是这样的:面试官在代码里埋了一处,找出来加分。他说自己抓到的是 sha256 那个类型宽度写错的地方,面试官还夸了句"很少有候选人能发现"。
差不多就长这样:
- const DIGEST_LEN: usize = 32;
+ const DIGEST_LEN: usize = 16;
这一行是错是对,我判断不了——面试官只给了答案,没给上下文。
把评审做成猜谜,这类题的老毛病全在这儿。
然后作者的结论是:人工代码评审正在变成过时的技能,看的是近期记忆和过往经历,不是可迁移的工程能力。
对了一半。
错的那一半更狠——他把面试里那版表演,当成了评审本身。
真实的评审不长这样。真实的评审是你面前躺着一段明天要上生产的东西,你得同时知道:谁写的、上一个动它的人还在不在、它底下压着几个下游、上一次它出事是几点。这些信息面试官一个都不给。
不给还不算,他还反过来怪你没抓到。补一刀:这测的不是你,是他那道题出得好不好。
我见过真正难抓的问题,从来不是类型宽度。是那种看着完全合理、单测也过、评审也过,然后在某个大促凌晨把库存扣成负数的一行。
那行丑吗?不丑。写得比周围都漂亮。
抓到它靠什么?靠你知道这个字段三年前从 int 换过一次,换的人留了个 TODO 就走了。
这就是上下文。这就是那三十分钟里装不下的东西。
那个作者还说自己同时推十二个项目、跨四套系统,所以没时间练逐行审代码。这句我信一半。他没时间,是真的——因为这活本来就要时间,而你只给了三十分钟,还叫了另外五个候选人在门外等。
说句实话,我一开始也想顺着骂面试。面试官那句"很少有候选人能发现"确实烂,它暴露的是他自己没想清楚要考什么。这个点如果靠的是"最近刚好碰过",那他筛的是运气,不是能力。作者骂这轮面试,骂得对。
但骂完面试,结论不能滑到"评审没用了"。
滑过去,就是给"让模型自己改、自己审"开门。
AI 一来,评审这件事不是变便宜了,是变贵了。以前一个人一天看两道 PR,认真看完还有工夫问两句。现在一天十道,其中五道是模型写的,格式比人规范,注释比人整齐,也更没有头没尾——它不知道上一版为什么长那样,它只知道这一版看起来对。
写代码的门槛确实掉了。帖子里那句"Claude 一个月二十美元,写代码本身已经不是雇你的主要理由",我同意。但他顺着往下推,推到了"公司该用什么高信号方式招人";我推的是反方向——那公司还剩什么能筛人?
写代码不值钱了,值钱的就是"知道哪一段不能改"。这项能力没有任何工具能替你验。
它只会在凌晨三点验。
帖子里还有一段,说公司会故意压候选人估值,问你当前薪资而非期望薪资,摸你底线。这个成立,不用争。可它跟"评审表演化"是同一件事的两面:都是把"这个人真能干出什么",换成"这个人在压力下能演成什么样"。
压价压出来的是什么人?是最缺钱的那个,不是最会救火的那个。
然后半夜系统挂了,来的是这个便宜的冤种。他可能接得住,也可能接不住。但便宜。
扯远了,回到评论区。一个自称干了十五年 QA 的人写,面了很多次都没过,现在能接受同等甚至更低的薪资。他说得很平静。我不觉得他说错,市场就是这么运作的,然后我们管这个过程叫"市场定价"。
那些讨论我不逐条回应了。只提一条:那个说自己没面过试、但预判被拒后掉的不是薪资期望,而是"我能拿到这份工作"的信心的人,写得最诚实。信心掉下去不会写在简历上,三年后才看得见。
所以真要我带面试,评审那轮我不埋 bug。
我给他一段真在生产里跑了六年、没人敢动的代码,注释不删,让他看半天,交一份东西上来:这行为什么长这样、我要动它得先做什么、动完出事怎么回滚。
抓不到那个类型宽度的问题,没关系。答不上这三条的,简历上写了十二个系统也没用。
至于那轮三十分钟的猜谜,输了就输了。别上升到"评审这门手艺过时了"——评审没过只能说明那道题出得不好,跟被考的人是谁一点关系都没有。
以后我带人,就按上面那三条问。答不上来,这位置我宁可空着。
