工程白板面试:赞成还是反对?
白板面试是评估工程候选人的最佳方式吗?
白板面试是评估工程候选人的最佳方式吗?
白板面试是评估工程候选人的最佳方式吗?
软件工程师讨厌白板面试。我怎么知道的?我们总是告诉完全陌生的人我们有多讨厌他们。但事情没那么简单。
问题是我们经常混淆几个问题:使用随机的 CS 琐事/谜语来评估候选人、面试官故意为面试者创造一个紧张的环境、有能力的人恰好面试得很差,以及求职过程总体上很糟糕。
“白板”这个词已经变得过于笼统,把面试过程中所有不尽如人意的地方都概括了出来。但事实远比这复杂,所以我采访了几家科技公司的招聘经理,征求他们的意见。
白板面试是评估工程候选人的最佳方式吗?
杰米·卡拉克
Alto的首席技术官,之前是 Facebook(Parse)的工程师。
我不相信传统的白板面试题能解决数据结构和算法问题,至少不适合我们公司。面试应该尽可能贴近测试工程师在日常工作中会用到的技能。对我们来说,这意味着极高的效率,因为我们是一家早期创业公司,需要用极少的工程师打造大量产品并产生巨大影响。但对谷歌来说,他们必须能够解决数量极少但非常复杂的技术问题,考虑到他们资源无限,效率对他们来说并非什么大问题。所以对他们来说,白板面试题或许更合适,因为它是一种高效且可扩展的测试方法,可以测试候选人解决复杂技术问题的能力。
尤金妮亚·德拉佩纳
Medium的工程经理,之前在 Pivotal Labs 担任工程师。
我不认为它们是评估候选人的最佳方式,但我也不认为它们像一些博客文章所说的那样毫无用处。实际上,我认为它们是提出某些面试问题的最佳方式,例如高级系统设计问题,但它们并非提出编码问题的最佳方式,因为它与人们日常编写代码的方式截然不同。
如今,我倾向于使用协作式编程环境(例如 CoderPad)进行编程面试。CoderPad 的优点在于它允许你运行代码,因此你可以用不同的输入快速测试代码,看看所有边缘情况是否都得到了处理。这也能让你作为面试官了解候选人如何调试实际代码,以及他们如何很好地解释编译器错误和运行时异常等问题。不过,在这种编程环境中完成面试题通常需要更长的时间(因为需要花费时间进行调试),所以你往往没有太多时间在最初的问题上进行拓展或讨论进一步的改进,这是一个需要注意的地方。
如果候选人真的想,我通常还是会让他们选择在白板上写下他们的解决方案,因为有些人在准备面试时会专门练习这一点,我希望他们能尽可能地感到舒适。我认为,总的来说,作为一名面试官,你的工作就是为候选人做好成功的准备,这样你就能在面试过程中尽可能多地获取信息。做好这一点比在笔记本电脑或白板上提问更重要。
布莱恩·惠勒
Braze 工程高级总监,之前在微软担任工程师。
我想说“最好”有点夸张,但我确实认为它们在面试过程中是很有价值的一部分。如果运用得当,它们可以对问题解决能力、沟通技巧和准备程度进行相当一致的评估。有些问题并不适合白板面试,但对于所有其他问题来说,更重要的因素是你问什么、如何提问以及你如何对话。
白板面试是评估工程候选人的最佳方式吗?
丹·埃里克森
Eaze工程副总裁,曾任 Getable 首席技术官和 Yammer 工程师。
完全不是。白板面试能很好地测试一件事:候选人在白板上写代码的能力。我团队里的工程师从来不用在白板上写代码(白板写代码的能力真的很差),我为什么要让候选人做我团队里其他工程师都没做过的事情呢?
有人认为白板面试可以帮助你了解一个人的“软”技能(我讨厌这个词,因为它轻视了情商技能的重要性和难度)。根据我的经验,有更好的方法来评估这些技能,而且通常情况下,直接要求应聘者举例说明这些技能会更有效。
德斯蒙德·布兰德
Flexport工程总监,之前曾在可汗学院和微软 (Bing) 担任工程师。
白板面试可能并不受中等水平候选人的欢迎,但我认为 Kevin Lacker 在这篇博文底部的例子中很好地说明了这一点。
不过,白板这种媒介本身并没有什么特别之处。在Flexport,我们允许人们选择在自己的笔记本电脑上编写代码,如果他们愿意的话,有些人也接受了我们的建议。这对于使用 TDD 风格流程或只是喜欢在其他文本之前插入文本的人来说更合适 :)
但代码的编写方式和地点并不重要。这些面试的重点在于沟通(使用文字和图表)问题及其解决方法,以及沟通(使用文字和代码)如何教计算机解决这个问题。
我们也尝试过一些更激进的改变,例如带回家做项目,但这些改变往往会对候选人造成不对称的时间投入,有些人对此非常不满。所以在实践中,项目充其量只能是一种选择。然而,采用不同的面试风格也可能存在问题,因为它会增加候选人评估中的“噪音”,从而增加无意识偏见潜入招聘决策的风险。
桑迪·詹
Honor联合创始人,此前创立 Meebo,2012 年将其出售给谷歌。
从功能角度来看,这没什么用……没有人会把在白板上写代码作为主要工作。然而,这是一个很好的机会来了解候选人如何沟通、表达想法和接受反馈。面试的期望不是让你在白板上答对问题,而是想更多地了解你作为潜在团队成员的身份。
张大卫
NerdWallet的工程经理,之前在 aboutLife 担任工程师。
评估工程类候选人没有唯一的最佳方法。所有面试流程都有各自的优缺点,因此,了解每个问题能够透露多少信息(或多或少)至关重要。
在NerdWallet,我们通常在白板上进行架构和设计问题。这有助于我们更好地了解候选人如何构建和传达复杂的技术解决方案,而且设计的大致框架比任何特定代码行的细节更重要。出于显而易见的原因,我们通常还会询问一些笔记本电脑编程方面的问题。最近,我们加入了一个拉取请求问题,因为在NerdWallet ,使用他人代码并提供反馈是成为一名高效工程师的关键,而我们之前的面试流程中缺少了这一点。
然而,这些问题并非完美无缺。有些工程师对于按需设计全新系统感到不自在,编码问题可能恰好击中候选人的盲点,而理解从未见过的代码的 PR 可能颇具挑战性。我们坚信反馈和数据驱动的决策,因此我们始终致力于更好地了解面试流程能够揭示候选人哪些信息,并寻找改进方法。
白板面试是评估工程候选人的最佳方式吗?
齐莎·库里姆博伊
Branch产品工程总监,曾任 Evernote 增强智能团队副总裁。
我的整个职业管理生涯都在探讨面试候选人的最佳方式。在我的理想世界中,候选人根本不需要“准备”面试,面试本身就是一种日常工作生活的模拟。为此,我尝试过不同的面试形式,例如带回家的挑战、白板面试、算法和数据结构部分、现场编程环节、调试环节等等。我对这个话题有很多看法(就像其他经理一样)。但总而言之,我认为白板面试是评估候选人的绝佳“工具”。
没错,在我看来,白板会议应该被视为一种“工具”,让你能够与候选人一起解决问题。白板会议的优点在于,它就像一块空白的画布,面试官可以有效地大声思考、协作、绘制图表,并与面试官进行头脑风暴。它不会在你的想法和沟通之间产生摩擦。同时,它不应该是面试候选人的唯一方法,也绝对不是放之四海而皆准的。有效的面试应该从多个维度进行评估,并采用不同的评估方法。无论我们喜欢与否,白板在技术沟通中都占据着重要的地位,这不仅体现在面试中,也体现在工程师的日常工作中。
拉里·萨利布拉
Blockstack的工程合伙人,之前创立了 Pay4Bugs。
我认为白板面试没什么用,因为它无法反映实际工作表现。开放式的编程挑战,比如使用我们的软件来构建一些东西,能让我们更好地了解候选人的技能水平以及他对项目的兴趣。
作为一个开源项目,我们很幸运,真正对我们的项目感兴趣的候选人可以通过发送拉取请求或在我们的平台上构建应用程序来证明自己 - 在某些情况下,这意味着我们很乐意提出要约,而无需要求该人进行额外的编码挑战。
德里克·哈里森
Samsara的工程经理,曾任 Kinetic Growth 的工程总监。
优秀的工程师在解决问题时有很多工具可供选择——优秀的公司在寻找和评估优秀团队成员时也有很多工具可供选择。当候选人需要一张大画布来描绘问题或设计系统时,白板面试是一个很好的工具。当询问系统设计/架构问题,或要求候选人描述多个系统之间的交互时,尤其如此。
然而,白板面试并不适合测试应聘者编写代码的能力。如果在面试中去掉调试和测试环节,面试场景就无法准确反映日常工程的实际情况。协作式编程环境才是更好的选择——它能让面试官以书面形式清晰地定义问题,也能让应聘者在熟悉的环境中编写代码、调试和测试。
我们力求打造一种能让候选人展现才华、并让我们尽可能了解其作为团队成员未来表现的面试形式。这意味着,有时(但并非总是如此)白板面试才是合适的面试形式。
亚当·麦克凯利
G Adventures工程总监,曾任 G Adventures 工程经理和开发人员。
多年来,我们不断改进面试流程,尝试了各种评估应聘者技能和个性的方法,最终发现白板面试对整个面试过程的帮助不大。白板面试或许有助于了解应聘者的工作方式,但更多时候,白板面试反而会淘汰那些之前从未参加过白板面试的优秀候选人。我更喜欢与应聘者就某个问题进行交流,就像我们在现实生活中确定项目范围时讨论问题一样。我发现,人们通常对这种方法更适应,不会纠结于语法、凌乱的字迹,也不会在“编程”时大声说话。
正在寻找新工作?
本文引用的每个人都是Key Values上某家公司的招聘经理。您可以通过阅读他们团队的简介来了解更多关于他们的工程文化的信息,如果您仍然感兴趣,我鼓励您申请,甚至直接与他们联系。
文章来源:https://dev.to/lynnetye/engineering-whiteboard-interviews-yay-or-nay-3hko