为什么高级程序员讨厌编程面试? - Adam


想象一下,您是一家希望招募新老师的K-8小型学校的校长。由于您的老师少于20名,因此您必须确保雇用的每个人都可以教任何年级。更复杂的是,您最近失去了一位最好的老师,她是一位拥有15年经验的人,还是许多初级老师的导师。你怎么能代替她?
经过一番思考,您可以制作出自己认为是一种创造性的面试方法。当候选人出现时,您将要求他们讲授从K-8课程中汲取的课程。为了确保候选人全面发展,您将在面试开始之前不告诉他们要教哪个课程。如果他们做到了这一点,您就可以推断出他们可以轻松地教任何东西,因为他们显然在压力下在随机选择的主题上表现出色。
对于这种新方法的首次测试,您打算尝试通过推荐来进行尝试,某位老师是您的一位职员过去与之合作过的老师,并声称是学校的明星。您可以联系她安排面谈日期,并告诉她您正在使用的这项新技术,以便给她一些准备的机会。
然后面试的日子到了,你的候选人出现在学校。您会感觉到她有点紧张,这很奇怪,因为她是一位经验丰富的候选人,简历无懈可击。您决定不对此进行详细说明,而是将她带到您的一个教室中开始面试。
“我希望您教给我一门关于数论的课程”。那时,她的脸沉了下来,因为您不知道,她已经有10年没有教过8年级了。但她始终是专业人士。她谈到数字的因素,以及如何确定给定数字是否可以被2、5和10整除,但是她正在努力。当您询问GCF和LCM时,她需要澄清首字母缩写词,您认为这是一个不好的信号。
在一小时的结束时,她无数次地浏览了数论的要点,但并没有让您充满信心,她在其他基于行为的面试中表现非常出色,但是您无法摆脱这种感觉,也许她不是最好的室内老师。经过深思熟虑,您决定放弃她,并雇用经验不足的老师,他们在“课程测试”方面表现出色。
 
尽管这似乎是一个完全人为的示例,并且是面试教学申请者的一种奇怪方法,但这恰恰是用来采访软件工程师的方法。
 
为什么?简而言之,高级工程师是不同的,典型的编码面试使他们处于劣势,原因有很多:
他们花了很多时间准备 —由于编码访谈来自软件开发的整个领域,因此很难为详尽的准备做准备。对于高级工程师,此问题有两种解决方法。首先,根据定义,他们被进一步从学校除名,这可能是他们最后一次遇到软件开发的一些更深奥的方面(动态编程,红黑树,甚至是递归)。在各种各样的算法和数据结构上刷新它们的内存可能会花费大量的准备时间。除此之外,高级工程师对时间的压力更大(他们要求苛刻的工作,并且通常承担重大的个人责任),这成为了一场完美的风暴。

高级工程师与用于编程面试的基本开发环境相距甚远。它们通常具有经过高度优化的环境,经过多年的完善,旨在使它们摆脱不必要的编码负担。在不加限制的人为的时间约束下,要使它们摆脱困境,将使它们处于显着的劣势。此外,他们可能在过去的几年中一直在使用其现有雇主的专有库(内存管理,错误检查,跟踪)。一次编程面试使他们突然脱离了舒适区,回到了标准库和简单文本编辑器的世界。
 
也许与高级工程师进行编码面试中最令人震惊的方面是,他们仅测试了您要雇用他们做的一小部分。高级工程师的收入通常比新毕业生的收入高出3到5倍(或更高)。期望他们产生比新毕业生多3到5倍的代码是不合理的–一天中没有足够的时间。相反,您正在寻找他们以使帮助初级工程师团队,成为导师团队,识别系统性问题,调试最复杂的问题,以及在进行编码时理解复杂的系统以及在其中进行编码所需的复杂工作。这些方面都无法在编码面试中得到测试,这是高级工程师讨厌它们的主要原因之一。
 
当您在招聘过程中强调面试编码时,您就会让高级工程师第二次猜测您要招聘的职位。“他们只是想让我成为代码猴子吗?” “我会在这里浪费我的才能吗?” “这是向前迈出的一步,还是向后迈了一步?” 您想要的最后一件事是让有才华的工程师对面试过程中的角色或您的公司有疑问。问他们编码面试问题就可以了。
 
总结所有这些因素,高级工程师讨厌编码面试也就不足为奇了。如果您想吸引最优秀的高级工程师并减少在这个特别紧张的劳动力市场中的面试摩擦,我建议您不要再问他们编码面试问题了。