最后一次技术面试:我们能修复破碎的招聘环节吗?
几十年来,技术面试一直是软件工程师的入职仪式。从令人恐惧的白板挑战到折磨人的 LeetCode 考验,这一过程旨在筛选出“不合格”的人。然而,正如 Steve Yegge 在其挑衅性的文章《最后一次技术面试》中所言,当前的系统从根本上就是破碎的。尽管采用这些方法的公司规模庞大且非常成功,但这一过程仍然是一个高风险的猜测游戏,产生了不可接受数量的误报(false positives)和漏报(false negatives)。
问题的核心在于信噪比的崩溃。公司在面试环节上花费了数千个工程小时,却经常雇佣了无法胜任的人,并拒绝了那些本可以成为超级巨星的人。行业已经趋向于一套代理指标——算法谜题和简历关键词——这些指标衡量的是候选人的面试能力,而非其工程能力。
提议:从面试转向临时雇佣
Yegge 建议进行一次彻底的变革:用“临时雇佣”取代传统的面试环节。与其进行一系列人造测试,不如让候选人以短期、带薪的方式被雇佣来执行实际工作。这种“营火”模式模仿了技术工种中常见的学徒制模型,即工匠只有在经过多年证明了工作能力的阶段后才能获得认证。
在这种模式下,候选人将处理现实世界的任务,其表现将被记录在一种可携带、永久的记录中——一种跟随他们前往其他公司的认可或失败的“印章”。目标是从预测性模型(猜测某人是否能胜任工作)转向经验性模型(观察他们实际在做工作)。
反论:实用性与权力动态
虽然临时雇佣的理论很有吸引力,但 Hacker News 社区提出了重大的实际和伦理问题。最直接的问题是高素质候选人的准入门槛。
"许多优秀的候选人都有工作和家庭,他们不会为了尝试一家没有承诺的公司而放弃现有的工作。" 一位评论者指出。
对于一名资深工程师来说,为了一个“临时”试用而放弃稳定的薪水、医疗保险和 401k 是一个不合理的风险。这会造成一种选择偏差,即只有失业或走投无路的人才能负担得起参与新系统的成本,从而可能排除掉该过程旨在寻找的那些“瑰宝”。
此外,批评者认为,这并不能真正消除筛选问题;它只是将其推向了更下游的环节。如果一家公司为一个职位招聘 1,000 名申请人,他们无法临时雇佣 1,000 人。他们仍然需要一个过滤器——无论是简历筛选还是传统面试——来决定谁能获得临时试用机会。
获取更好信号的替代路径
如果临时雇佣过于具有侵入性,那么有哪些可行的替代方案呢?讨论强调了几种策略,它们在不承担六个月试用风险的情况下,比 LeetCode 提供更好的信号:
1. 工作样本测试
许多人认为“金标准”已经存在:工作样本测试。与其进行抽象的谜题,不如让候选人执行镜像实际工作的任务。这可以是一个 2-4 小时的结对编程(pair-programming)环节,或者一个受控的家庭作业项目(take-home project)。如果操作得当,这些比面试更具扩展性,并能提供技术能力的直接信号。
2. 开源贡献
另一个建议是利用开源工作。要求候选人向真实项目贡献代码,这为他们处理复杂代码库、与他人协作以及提交高质量代码的能力提供了一个透明、公开的记录——而公司无需管理一名临时雇员。
3. “人类”方法
一些经验丰富的招聘经理建议,技术门槛往往是“渴望度”和“聪明度”的次要关注点。通过在面试中关注关系和团队契合度,并在面试期间利用严格的三个月试用期(这在许多非美国市场很常见),公司可以减轻雇佣不合格人员的风险,而无需要求候选人过早地辞职。
系统性悖论
社区中最引人注目的观察之一是成功的悖论。如果招聘如此破碎,为什么 Google 和 Amazon 等公司会如此成功?
答案可能在于,对于万亿级规模的公司来说,“漏报”(拒绝了一名优秀的工程师)的成本是微不足道的,而“误报”(雇佣了一名有毒或无能的工程师)的成本却很高。当前的系统并非为了寻找最好的,而是为了避免最差的。
最终,“最后一次技术面试”的辩论揭ent示了行业内深层的紧张关系。我们处于企业风险规避的需求与候选人对稳定性的需求之间。直到行业转向更标准化的、更专业的认证——类似于其他行业中持证的专业工程师——技术面试很可能仍将是一种有缺陷但持久的仪式。