最后一次技术面试
摘要
Steve Yegge 反思了科技行业技术面试流程中长期存在的缺陷,讨论了以往改进尝试以及向新方法不可避免的转变。
暂无内容
查看缓存全文
缓存时间: 2026/05/30 01:22
# 最后一场技术面试
今天,我们将为那曾经备受推崇、如今却奄奄一息的技术面试流程敬上一杯。同时,我们也会聊聊什么将取代它。
这篇文章的构思酝酿了近35年——这也是我主持技术面试的时间跨度。在其中的几十年里,我也曾致力于改进流程本身。我不得不对这件事格外上心,因为它实在是太糟糕了。
事实证明,在我入行之前很久,面试就已经是千疮百孔了。尽管人们尝试了无数种打补丁的方式,但直到今天,它依然漏洞百出。然而,它却硬是撑了下来。但如今,它终于要自己走向消亡了。人们对于接下来会发生什么有些模糊,所以我们将探讨一些可能的选项。
但我带给你们的并非一条坦途,也没有什么银弹。记住这一点,小菜鸟,当你读到最后,跑来向我咆哮的时候。
**两大守护神**
回想在亚马逊的时候,我们有一个精英团体,叫做“拔高师”(Bar Raisers),我听说这类似于微软的一个角色,他们称之为“酌情把关者”(As-Appropriate, AA)。在这两种情况下,每次面试轮次都会安排一位值得信赖的面试官(BR/AA),他有权否决面试官试图放行的任何不合格人选。我曾是一名BR,也是“拔高师核心组”的一员:这是一个由贝佐斯和达尔泽尔亲自指派的小组,负责定义BR这个角色本身、选拔新的拔高师、培训他们,并汇报该计划的有效性。
BR和AA的角色,其实是对一个事实的默认:你无法信任你的面试团队能做出正确的招聘决策。这更广泛地暗示着,如果每一轮面试都需要一个“保姆”,那这个流程本身就是有缺陷的。但我们当时确实尽力了。
当然,我们不会把它说成是当保姆。我们会鼓吹“维持高招聘门槛”,并为之加油打气。而且,BR/AA也并非终点。还有数不清的其他面试流程“创可贴”,五花八门,核心都是如何安排一天内进行四到六场面试。一切都围绕着如何将评估塞进一两轮面试中展开。这一点从未改变。
这些创可贴没有一个真正管用——尽管我们竭尽全力想让流程变得完美,甚至只是变得“良好”,但我们依然会招进大量的“假阳性”(不合格人选),并拒绝掉大量的“假阴性”(实际合格的人选)。
现实是,人才评估——我们这个行业将近五十年来几乎未曾改变的一角——已经尴尬地坏掉了。它在实践中就是没那么好用。
最清楚这一点、每天感受最深、却又最没有能力去改变它的人,都在人力资源部门(HR)。科技行业的“技术派”不想改变它,是因为惯性:这么多年来,这个流程勉强还能用,足以抵御一次彻底改革。所以HR所能做的,就是向我们展示它有多糟糕,然后在它出问题的时候进行危机管控。下一节我会分享一个关于此事的惊人故事。
离开亚马逊后,我在谷歌时也一直试图改进面试流程。我曾在谷歌柯克兰的“招聘委员会”工作了好几年,在那里我们处理了数千份微软的简历——那些想从雷德蒙德山那边“叛逃”的人。我编写了一份30页的内部简历筛选指南。我甚至写了一篇博文,《Get That Job At Google》(https://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html),十七年后的今天,谷歌的招聘人员仍在分发这篇博文。那时我对这些事情可是相当认真!
简而言之,关于技术评估这行,我知道的几乎不比任何人少。而我准备像《厨房机密》那样,把它彻底抖出来。
这篇文章既有诊断,也有处方。但重要的是诊断。我想让你相信,我们需要在评估人才的方式上进行彻底的变革,而技术面试已经日薄西山了。
看看我能做到什么程度吧。至于解决方案,一旦我们达成共识这确实是个问题,我们就可以慢慢琢磨。
**还记得那次我们集体把自己开除了吗?**
面试的结果在统计上糟糕透顶。谷歌多年来进行了一波又一波的分析,所有的结果都令人难以置信地沮丧。
随手举几个例子:面试官之间几乎毫无共识。把同一个候选人放在我们最聪明的两个人面前,一个会自信地给出“强烈建议录用”,另一个则会干脆利落地给出“不予录用”。没有哪个面试官是万无一失的神谕,即便是杰夫·迪恩也不行。
而且,一旦人们实际入职,他们的面试分数几乎无法预示他们未来的表现——至少按照我们当时那套面试流程是这样。见鬼的是,我们一些明星员工在谷歌面试时失败了四、五次,花了两年多时间才最终入职,然后表现却远超其他人。
事实证明,面试就像一场大型的飞镖游戏,一场“我喜欢你吗”的相亲会。
我们从谷歌所有的统计数据中唯一能发现的是,存在大量可怕的、无意识的面试官偏见,阻碍我们雇佣那些本应该在这里工作的人。谷歌从未在内部公布过这些结果,我只是从HR朋友那里听到一些传闻,但情况确实非常糟糕。
Gergely在他的一个播客中问及技术评估的情况,我跟他说了一个我觉得挺相关的故事,所以在此复述一下。你可以在他的播客上听到更长、更有趣的版本。
在谷歌,他们并没有在每个面试轮次里安排一个像亚马逊那样的小“钦差”,而是(基于证据地)假定所有面试官都是糊涂蛋,于是在每个站点成立了一个名为“招聘委员会”(Hiring Committee, HC)的机构。这个委员会充当该站点所有招聘的最终仲裁者和守门人。我在这个委员会里待了好几年。
当时我们那个HC小组大概有十五个强人,包括许多本地的大佬级谷歌同事,如巨大技术的共同发明者、面试系列丛书的作者,以及现在身居高位的高管们。
我们当时觉得自己牛逼闪闪。
有一天,招聘人员给了我们一批特殊的评审包。在这些特殊的包里,我们能够看到面试官的笔记和候选人的回答。所有个人信息都被隐去了,他们告诉我们这是一次“校准练习”。我们必须像往常一样对这些特殊包进行投票,看看结果如何。我想我们可能以为这些包来自其他站点,因为跨站点校准很常见。
我们的小组按部就班地完成了工作,投票拒绝了大约三分之二的包。这跟通常情况差不多。
但是,惊喜来了,这一次,那些包*就是我们自己的*——是我们当年面试谷歌时的面试记录。招聘人员骗了我们,让我们审阅自己的面试包,而我们投票否决了我们自己小组中的大多数人。
在那短暂的一刻,我们都瞥见了我们的流程有多么彻底地坏掉了。人事部门直接把我们的鼻子按在了这坨屎上。
但我们从未修复它。
按回车键或点击查看全尺寸图片
当我们意识到那是我们自己时的那一刻。
**变革是禁忌**
我曾在谷歌的一个公共邮件列表里挑战过面试流程,结果一位重要的工程领导把我拉到一边,说我“在教堂里放屁了”。人们不允许质疑面试流程是否有效。挑战它,无异于对整个工程团队的水平说三道四。首先,你竟敢如此?
此外,许多工程师和管理者继续为这个流程辩护,即便他们知道它有多糟糕,因为这是他们自己通过的考验,所以别人也必须通过。当我这么说的时候,听起来很傻,但每当你建议改变流程时,总能听到这种论调的回声。
当你把这一切加起来,并为此折腾大约35年之后,你最终会发现,面试——其目标是确定“这个人能否胜任这份工作”——从根本上就无法以任何可靠的程度回答这个问题。这近乎于伪科学。
至少谷歌试图去测量它,这一点值得喝彩。他们确实找到了一些可操作的东西。比如,超过四轮面试就纯属浪费时间了,诸如此类。但总体来说,画面是暗淡的,而且大部分都无法转化为实际行动。
大多数公司从不对自己的面试流程进行内省——至少不是那种“我们旨在改变它”意义上的内省。他们可能会调整一下覆盖哪些能力,或者复盘会议是什么样子的。
但核心流程——一系列短时间的一对一面试——五十年来从未改变。我们大多数人还没出生的时候,就一直在用这套愚蠢、糟糕的面试流程了。不知道你是怎么想的,反正我是受够了。
所以,在今天的博文里,我将展示所有已被尝试过的方案,然后指出一个更好的方向。作为行业,我们可以开始朝那个方向前进。只要我们有足够多的人大致上都做同一件事,它就应该能获得动力。
我相信,几年之内,我们大部分人会停止进行技术面试,它们会像颅相学(如果听说有些面试官还在用颅相学,我一点都不会惊讶)一样,沦为一段可爱的历史注脚。面试将成为我们过去做的另一件古怪事情。
你准备好了吗?我准备好了。出发!
**信号问题**
人才评估是一个信号问题。你需要大量的信号。你想尽可能清晰地描绘出候选人的画像,这需要大量数据。
你得到的第一个信号源是候选人的简历。正如戴夫·巴瑞告诉我们的:“简历远不止是一张纸。它是一张写满了谎言纸。”公司每年会收到数千到数百万份简历,信噪比糟糕透顶。AI辅助写作正在加剧这个问题,如今的简历作为信号源已近乎无用。
我们过去做的第一件事是技术电话面试。这对双方来说都极其艰难。所有人都讨厌它。想象一下只凭音频为别人写代码。Zoom让它们过时了。但即使是那些糟糕的电话面试,作为信号,也比简历*强得多**,因为你可以和那个人共度一段时间。
下一级别的信号是“已完成的工作”,包括证书和评估(如编程学院和挑战赛),以及个人的开源工作。这些都是较弱的信号源,因为你无法在他们工作时与他们互动。但它们可以作为一个有用的决胜因素或“敲门砖”信号,帮你进入下一个评估阶段。
直到现场面试环节,招聘信号才开始显著改善。但即使是现场面试,众所周知也与现实工作大相径庭。在白板上面试和在实际工作中观察他们相比,结果如何?我想我们都知道答案。
所以,你只有几分钟看他们的简历,半小时的视频面试,和几场现场面试。今天的标准招聘流程仅仅收集了几个小时的信号,就要做出可能持续数年的雇佣决定。
**试用雇佣来救场**
人才评估的黄金标准信号,如果可行的话,就是实习。这通常让候选人作为准员工工作大约3个月。他们是一个团队的一部分,做“真正”的工作——尽可能真实,这因团队而异——并根据他们完成工作的质量进行评估。
一个为期3个月的实习,其信号强度显然远高于一天的面试轮次。除非你实在搞砸了实习的管理(搞砸的难度可能比你想的要容易),否则你对他们的技能、能力以及他们与团队的“融合”程度,会比实习开始时有一个清晰得多的认识。这个信号比面试轮次强得多,以至于你在做最终决定时常常会忽略面试反馈。面试只是让实习生获得了“进门”的机会,而实习本身变成了评估。
我见过一些公司在寻找“合适的人做合适的工作”上走得更远。我工作的第一家公司,Geoworks,有一个严格的要求:每个候选人必须先完成一个为期六个月的实习合作项目(co-op),然后公司才会做出雇佣决定。
这个实习合作项目类似于暑期实习,但我们是高薪的全职员工(任何没有学校提供福利的人都享受福利),做两倍时间的硬核真实工作,所有人都拼命想知道自己最后能不能被录用。
实习信号(~7周的有效工作时间,在适应期之后)和实习合作项目信号(5个月的实际工作)之间存在实质性差异。那一年是1992年,Geoworks从我们8个人中录用了3个。门槛高得离谱,感觉他们是在培养新的“猎魔人”。对那些没被录用的人来说很遗憾。但他们的方法打造了一个几乎全是明星和超级明星的公司。
作为实习合作项目有效性的证据,亚马逊在 1999 年(我加入几个月后)收购式挖走了 Geoworks 西雅图办公室,带来了近 30 名工程师(我自己启动了整个过程,几个月后看到我的老同事在走廊里闲逛,感觉很不真实)。亚马逊的领导层多次说过,甚至在两周前我还从一位资深 VP 那里听到,Geoworks 团队是他们带进来过的最强团队。许多 Geoworks 的员工后来在亚马逊和/或谷歌做出了惊人的成就。
所以,Geoworks 的 6 个月实习合作项目是铂金级别的信号。还能更进一步吗?你愿意走多远?在供应端,滑铁卢大学以其计算机科学专业的学生在毕业前总共完成六次实习(总共大约两年真实工作经验)而闻名。这极大地提升了滑铁卢毕业生的信号,以至于公司们激烈竞争,优先招聘滑铁卢的实习生和毕业生。
我们在这里讨论的是*试用雇佣*。这是在绑定“录用”变量之前进行的“不投入”式评估。不管是实习、实习合作项目,还是合同转正,它都是一个临时职位,不是兼职:试用雇佣是与兼职雇佣不同的一个维度。试用雇佣*目前*是行业在“如何可靠地知道该录用谁”这个问题上找到的最佳解决方案。
但是,等等,如果试用角色如此有效,为什么还要费心把它们做成试用性质呢?为什么不直接雇佣人,让他们工作,如果他们不合适就解雇他们呢?
要是这么简单就好了。实际上,除了,你懂的,法律之外,这确实很简单。大多数试用雇佣方案都是对美国雇佣法的变通。信不信由你,美国法律确实为员工提供了一些保护,尽管这些保护与世界其他地区相比很薄弱。
在美国,你不能随随便便就炒掉一个人,即使他表现不佳,即使是“随意雇佣”,也面临着被起诉和赔偿的风险。这使得招聘决策的风险如此之高。
但如果员工是*试用性**雇佣的,那就另当别论了。他们的实习或合同只是“结束了”。感谢参与。
所以,在公司能钻空子的情况下,他们完全会尽量利用试用角色,尽可能久地推迟做出正式职位的决定。
**你管这叫救援?**
好吧!如果试用雇佣就是答案(它不是,但我们暂且假装它是,因为它目前是同类型中最好的)……
相似文章
从面试到生产:用拉取请求替代白板
AngelList 推出了一种面试流程,候选人通过提交拉取请求来替代白板编码,旨在更好地评估真实世界的工程能力。
设计抗AI的技术评估方案
Anthropic工程师Tristan Hume探讨了为招聘性能工程师设计抗AI技术作业测试的挑战,并详细介绍了近期Claude模型如何开始超越人类候选人的表现。
编程依旧令人头疼
这篇文章批判了对科技职业浪漫化的看法,将其描述为混乱和充满压力而非井然有序,同时探讨了人们对人工智能取代岗位的焦虑,以及软件开发缺乏明确方向的问题。
要是科技公司能直言不讳就好了
一篇评论文章,探讨科技行业缺乏坦诚直率的问题及其对消费者和开发者的影响。
我1994年微软实习面试中的四道编程题(2023)
2023年的一篇回顾性博客文章,讲述了作者在1994年微软实习面试中遇到的四道编程题,分享了题目和背景。