技术面试是衡量软件工程能力的良好标准吗?
对于如此年轻的科技行业来说,技术面试已经取得了长足的进步。大约十年前,像微软这样的公司会给应聘者出一些脑筋急转弯,比如“为什么下水道是圆的?”。当这些问题被证明无法反映应聘者的能力时,这种做法就被取消了。后来,公司开始在面试官面前塞满各种琐碎的问题,包括几页JavaScript问题和关于各种语言的随机小知识。如今,大多数公司越来越注重与平台和语言无关的面试——旨在考察应聘者解决问题的能力。然而,这种面试方式仍然存在缺陷。
大多数工程师都会承认,传统的技术面试可能会错过很多优秀的候选人。那些缺乏实践、状态不佳,甚至(但愿不会发生!)从未真正理解过图论的候选人,可能会在一两次面试中表现不佳,而拒绝他们的公司就错失了一位优秀的候选人。然而,许多人认为,只要不意外地聘用“差劲”的工程师,失去一些“优秀”的候选人是可以接受的。
用 Stack Overflow 联合创始人 Joel Spolsky 的话来说,“如果你拒绝了一个优秀的候选人,我的意思是,我想从某种存在的意义上来说这是一种不公正,但是,嘿,如果他们这么聪明,别担心,他们会得到很多好的工作机会。”
但这种心态足以维持面试现状吗? Tech Crunch 的一篇文章指出:“从历史上看,误报被认为是灾难性的;招到一名糟糕的工程师被认为比招不到两名优秀的工程师更糟糕。但如今优秀工程师如此稀缺,这种说法已经不再适用了。” 没人想招到不合格的候选人。但为了避免出现这样的候选人,公司在招聘过程中投入了数百万美元。让我们来看看一位候选人的代价。除了显而易见的成本:例如现场应聘者的差旅费,招聘流程还有很多额外的成本。根据Recruiter Box 的估算:
- 根据招聘方式的不同,在招聘网站上发布招聘信息的费用在 40 至 500 美元之间
- 审核申请人需要 10-24 小时,公司需花费 500 美元以上
- 预筛选过程需要 2-4 小时,费用很容易达到 100-200 美元
- 招聘人员的面试准备需要 1-2 小时,费用为 40 美元
- 现场面试通常需要开发人员花费 4-5 个小时,费用为 200-400 美元
- 整个流程包括发出录用通知、与候选人交谈以及核实推荐信,大约需要 8 个小时,费用约为 200 美元
此项估算的总金额为:1080-1840 美元(不含差旅费)。
而且,第一个通过面试的人很少会接受录用通知。根据Glassdoor 的分析,公司平均要花大约 35 天时间面试 120 位工程师职位候选人。其中,23 人进入面试环节,5.8 人进入现场面试,1.7 人获得录用通知。所以,你的薪资为:40-500 美元 + 500 美元 + 100-200 美元 + 920 美元(40 美元*23 美元)+ 1160-2320 美元(200-400 美元*5.8 美元)+ 340 美元(200 美元*1.7 美元)= 3060-4780 美元。
虽然这个成本比较保守,但与招聘失误造成的损失相比,简直是小巫见大巫。一次错误的决定可能会让团队因错误和纠正时间而损失数万美元。那么,公司该如何应对呢?
面试真的有用吗?
研究表明,评估候选人的最佳方式是通过“工作样本测试”,该测试旨在反映候选人将要从事的工作类型。这就是为什么技术面试比传统的“行为”面试更受欢迎的原因。托莱多大学在2000年的一项心理学研究发现,面试开始后10秒内做出的判断能够准确预测整体结果。通过白板面试或编程面试,我们力求通过用(更)客观的问题来评估候选人的表现,从而消除这种偏见。
然而,根据技术面试练习平台 interviewing.io 的一项研究,技术面试的表现并不一定与工作表现有很强的相关性。
技术面试绩效来源
该网站发现,候选人的表现差异很大,只有约25%的候选人表现始终保持在同一水平。即使是“表现优异”的候选人,也有22%的几率表现不佳。这些发现中最令人担忧的是候选人的一致性。一些“优秀”的候选人难免会偶尔犯错,但只要“表现不佳”的候选人没有通过整个面试流程,那就没问题。但如果只有四分之一的面试者表现始终如一,这说明面试流程存在什么问题?肯定还有改进的空间。
技术面试的问题之一在于它只关注某一特定技能。大多数面试流程都想当然地认为目标是聘用最有资格的人——我们大多数人认为这意味着“最聪明”。问题是,这并不一定是成功的最佳预测指标。几年前, 《纽约时报》的一项研究记录了一系列研究,这些研究表明,按照智商测试的标准,由少数非常“聪明”的工程师主导的团队在所有指标上的表现都不如那些 A. 更具协作性、B. 在解读情商的能力上排名更高以及 C. 更具多样性的团队。传统的编码测试不会筛选出这些因素。虽然我们会提出问题来衡量文化契合度和协作能力,但与面试技术部分的表现相比,这些因素通常是事后才考虑的。
白板面试的替代方案
还有其他评估候选人的技术方法,但目前科技行业尚未大规模采用。一些公司会给候选人一个技术项目,至少可以代替技术筛选。问题在于,想出一个规模足够小、可完成、复杂程度足够反映软件工程师日常工作的项目可能很困难。许多公司还担心这些测试经常被有抱负的求职者抄袭。此外,许多候选人认为他们应该为完成这些项目的努力获得报酬,其中一些项目甚至在面试后被公司使用!
有些公司,比如 Stripe,采用了与传统技术面试不同的面试方式。Stripe 允许求职者使用自己的笔记本电脑,并在 Stack Overflow 等网站上查找语法,以便更真实地模拟他们所寻求的职位条件。除了技术问题外,他们还会结合面试环节,重点考察求职者解释其参与的技术项目以及回答基本工程设计问题的能力。
亚马逊曾尝试过小组面试,候选人可以从给定的一组问题中选择一个技术问题,并花几个小时研究它,然后才有机会解释他们的方法。
Helpful 会进行简单的1 小时面试,并向所有符合条件的候选人发出录用通知。之后,他们会安排候选人进入试用期(30-60 天),以了解他们的工作表现。这种方法本身也存在挑战,因为许多工程师可能会觉得这种流程有损尊严,但这是对传统面试流程的一种有趣诠释。
这些公司已经介绍了他们的新流程以及取得的成果,前景光明!如果科技行业如此重视创新,那么还有什么地方比我们的招聘体系更适合实践这一原则呢?
我们接下来要去哪里?
虽然上面提到的许多替代面试策略都颇有前景,但技术面试中存在着更深层次的问题。面试官的自尊心会失控,那些面试时信心满满的软件工程师会对经验不足的应聘者非常苛刻,而这些应聘者可能是优秀的工程师,但缺乏实践经验,或者容易紧张。
不知何故,科技行业迅速蔓延开来,认为必须“择优录用”。大学期间,我参与了一个学生小组,与招聘经理们会面,讨论他们的招聘策略。大多数招聘人员都认同这种只寻找绝对最佳候选人的理念。虽然这种态度在高管层也普遍存在,但我在校期间,曾自信至少有70%的工程专业学生能够胜任这些公司的职位要求。即使公司要求学生拥有高于平均水平的工程技能,保守估计也有35%的学生能够胜任你提供的工作。然而,他们仍然表示只想招聘最顶尖的1-5%。
最精英的企鹅来源
精英主义者需要聘用“前 5%”的工程师,并因此认为通过面试的人就是“前 5%”,但这并没有考虑到面试中的随机因素。(这种心态与技术工人因其技术技能而处于食物链顶端的想法相关。这种“技能差距”理论也有其自身的批评者。)寻找顶尖人才的问题在于,正如 interviewing.io 所显示的那样,即使是表现最优秀的人也难免会有 22% 的时间出错!虽然我们愿意相信面试是客观的,但其他研究表明,这个过程的某些因素是我们无法控制的——比如我们在最初 10 秒内与面试官建立联系的能力。
问题不仅仅在于面试阶段。许多招聘人员很早就根据可疑的标准筛选出优秀的候选人。据专门筛选适合 Ycombinator 初创企业的优秀候选人的 Triplebyte 称,在招聘过程中表现良好的候选人是那些反映“创始人背景”的候选人。在大多数这类公司,即使是非技术招聘人员也会根据这些标准进行模式匹配,拒绝 50% 的申请人。而且由于创始人往往严重缺乏多样性(只有 3% 的风险投资资金流向了女性创始人,只有 1% 流向了黑人创始人),这对改善技术领域的多样性造成了巨大的障碍。
我们该何去何从?如果不不断迭代新想法,就不可能找到更好的解决方案。不妨先尝试一下传统的技术面试模式,并计算一下数据——在一个流程中录用的候选人与在另一个流程中录用的候选人相比如何?众所周知,像亚马逊这样的公司非常依赖这些数据来逐年改进他们的面试流程。亚马逊小组面试模式的日益普及表明,这种新方法已被证明是成功的。
除了系统性变革之外,作为面试的工程师,重要的是要努力让候选人感到舒适,意识到我们的个人偏见,并放弃“我们只能与最聪明的 1% 工程师共事”的观念。这种观念是局限的,而且从根本上就是错误的。众所周知,软件工程的职位空缺已经足够多了。
源代码中有大量代码
在评论中分享对您的公司有用的方法!
文章来源:https://dev.to/amandasopkin/are-technical-interviews-a-good-measure-of-software-engineering-ability-1cp9