[

5月15日
-
5分钟阅读
[
拯救
我最喜欢的编码面试练习
白板问题很糟糕。为了评估你的工程候选人,你必须弄脏你的手。
我讨厌面试。
事实上......我收回那句话。我喜欢面试。我只是讨厌被面试。
像大多数软件开发人员一样,我可以用零手数出在工作环境中真正需要反转链接列表或遍历二进制树的次数。但是我已经完全记不清有多少次我被要求在白板上做这些事情了。
这很麻烦,虽然面试官可能会从中得到一些价值--假设他们的目标是评估候选人的技能,而不仅仅是炫耀自己的知识--但这让面试者不清楚在有关公司工作到底是什么样子。
因为这就是很多公司忘记的招聘过程:它是一条双向的道路。就像你评估每个候选人是否适合你的组织一样,他们也在评估你,这就是为什么以一种互利的方式构建你的面试过程是至关重要的。
很好,我可以听到你在想,我只有几个小时来了解这个人,我到底该怎么做?
直截了当地说:通过慎重的计划和执行。
正确评估候选人
照片:Christina @ wocintechchat.comonUnsplash
虽然我很喜欢创建面试 "小道",让候选人通过,其中每个环节都是为了衡量一个特定的质量或技能,但我个人最喜欢的是合作编码练习。
在这个环节中,你让一名工程师和一名候选人配对一个半小时,给他们一个项目让他们一起工作。这不是强迫候选人在白板上写代码,而工程师对其进行评估的练习,而是他们在真实的电脑上一起解决这个问题。
为了让你的员工和你的候选人处于平等地位--从而正确地模拟你在工程团队中可以找到的那种合作环境--我发现以下规则是一个好的开始。
让候选人选择编程语言。
通过允许候选人选择编程语言来建立项目,这使他们处于主导地位。虽然和他们一起工作的工程师可能已经和以前的候选人解决了这个问题,但让候选人控制技术栈,可以确保这个练习是一个真正的合作,而不是一个指导性的练习。
鼓励一个熟悉的环境。
公司一般不应规定他们的工程师使用什么工具。Vim或Emacs,CLI或GUI,甚至Linux或......你知道......其他的;一般来说,这并不重要。生产力是王道,而我们对工具的选择有助于提高生产力。
因此,当你有一个候选人来参加你的合作编程练习时,鼓励他们把他们的笔记本电脑带进来。让他们在他们最熟悉的开发环境中工作。毕竟,你们只有不到两个小时的时间。把一个人放在一个不熟悉的汽车驾驶座上并不会使任务变得更容易。
评估旅程,而不是目的地。
当我进行这个练习时,我最不关心的是我们是否真的解决了问题。不是每个问题都能在这样一个固定的时间段内得到解决,所以把完成情况当作合格/不合格,很可能会拒绝许多合格的候选人。相反,要关注问题解决的过程。
他们是如何开始的?他们的合作程度如何?他们是接受意见还是忽视意见?他们是过度思考,还是马虎了事?要了解与某人合作的感觉,没有比实际与他们合作更好的方法了。我发现,在这种情况下与某人合作90分钟,就能很好地反映出一直与某人合作的情况。
鼓励实用主义。
大多数软件开发人员候选人都想表明他们知道如何做工作*,而且他们知道如何把工作做对*。但在这种情况下,他们没有时间做这些。我喜欢在早期设定期望,说明练习的重点是什么(见上文),像代码质量和单元测试这样的东西既不期望也没有好处。
尽管如此,我发现即使被要求放弃这些东西,大多数候选人都会提到他们可能会如何测试一些东西,如果他们有额外的时间,他们会如何构建解决方案,或者指出他们由于时间的限制而有意减少的角落。
选择一个项目
照片:Alexander SchimmeckonUnsplash
理想情况下,选择的项目遵循Joel Spolsky关于通过电话正确评估软件开发人员的建议。
理想的问题是,受访者因使用过该项目而对其运作方式非常熟悉,但不太可能自己实施过。
在这个练习中,我最喜欢的项目是网络服务器。在上述标准中,大多数后端网络开发人员应该对网络服务器的工作原理非常熟悉,而且不太可能自己实现过它(为此,我只有一个候选人曾经建立过网络服务器)。
问题是,在90分钟内创建一个完整的网络服务器是不可能的,但是,在接受和响应简单的HTTP请求的基础上,不仅是可以做到的,而且也是足够棘手的,使它变得有趣。如果我们能够启动一个简单的套接字服务器,并正确地响应来自标准Web浏览器的GET ,那么我们就有了一个赢家!我们可以在30分钟内完成它。
在30分钟内完成,而不是90分钟?总是有发展空间的。增加对POST 请求的支持、MIME类型解析或缓存头。现在是咆哮的20年代。网络服务器现在已经非常复杂了。要有创造性。
保持两条车道畅通
我在上面说过,但还是要重复一下。
......这就是很多公司在招聘过程中忘记的事情:它是一条双向的街道。就像你在评估每个候选人是否适合你的组织一样,他们也在评估你,这就是为什么以一种互利的方式构建你的面试过程是至关重要的。
面试过程不仅仅是关于候选人。它也是关于你的。你如何对待他们直接反映了你和你的公司,而根据我的丰富经验,从忽视我的蜘蛛感和加入有低劣面试官的公司,这种反映是相当准确的。
Want to Connect?