想象一下,您是一家希望招募新老师的K-8小型学校的校长。由于您的老师少于20名,因此您必须确保雇用的每个人都可以教任何年级。更复杂的是,您最近失去了一位最好的老师,一位拥有15年经验的人,以及许多初级老师的导师。你怎么能代替她?
经过一番思考,您可以制作出自己认为是一种创造性的面试方法。当候选人出现时,您将要求他们教授从K-8课程中汲取的教训。为了确保候选人全面发展,您将在面试开始之前不告诉他们要教的课程。如果他们做到了这一点,您就可以推断出他们可以轻松地教任何东西,因为他们显然在压力下表现出色,可以随机选择一个主题。
您发出的通知是您正在招聘,并且有一些真正出色的应聘者。但是,对于这种新方法的首次测试,您打算尝试通过推荐进行尝试,该老师是您的一名员工过去与之合作过的老师,并声称是学校的明星。您会为她甚至申请的运气感到惊讶,并认为她将是您新面试过程的完美考验。您可以联系她安排面谈日期,并告诉她您正在使用的这项新技术,以便给她一些准备的机会。
然后面试的日子到了,你的候选人出现在学校。您会感觉到她有点紧张,这很奇怪,因为她是一位经验丰富的候选人,简历无懈可击。您决定不对此进行详细介绍,而是将她带到您的一个教室中开始采访。 “我希望您教给我一门关于数论的课程”。那时,她的脸下沉了,因为您不认识她,所以她十年多没教过8年级了。但她始终是专业人士,因此上了董事会并开始上课。她谈到数字的因素,以及如何确定给定数字是否可以被2、5和10整除,但她仍在努力。当您询问GCF和LCM时,她需要澄清首字母缩写词,您认为这是一个不好的信号。您解释说,您指的是“最大公倍数”和“最小公倍数”,但此时您可以说出她的信心已被击中,并且您的声音中有些淡淡的烦恼。
在一小时的结束时,她偶然发现了数字理论的要点,但并没有让您充满信心,她可以在一群表现不佳的8年级学生面前钉牢这节课。她在其他基于行为的面试中表现出色,但您无法摆脱这种感觉,因为她可能不是最佳的室内老师。经过深思熟虑,您决定放弃她,并雇用经验不足的老师,他们在“课程测试”方面表现出色。
尽管这似乎是一个完全人为的示例,并且是面试教学申请人的一种奇怪方法,但它恰恰是用来面试软件工程师的方法。尽管我并不是要说编码面试完全被打破了(尽管其他人已经做到了),但我坚信,在采访高级工程师时他们没有地方。
为什么?简而言之,高级工程师是不同的,典型的编码面试使他们处于劣势,原因有很多:
他们需要花费大量的准备时间-编码访谈从软件开发的整个领域汲取,因此很难为详尽的准备做准备。对于高级工程师,此问题有两种解决方法。首先,顾名思义,他们被进一步取消了学业,这可能是他们最后一次遇到软件开发中一些更深奥的方面(动态编程,红黑树甚至是递归)。在各种各样的算法和数据结构上刷新它们的内存可能会花费大量的准备时间。除此之外,高级工程师对时间的压力更大(他们要求苛刻的工作,并且通常承担重大的个人责任),这成为一场完美的风暴。我知道有几种情况,高级工程师询问了给定雇主的面试过程,并且听说有一次编码面试,却拒绝面试。
他们推动高级工程师以不同的方式工作-高级工程师与用于编写编程采访的基本开发环境相距甚远。它们通常具有经过高度优化的环境,经过多年的完善,旨在使它们摆脱不必要的编码负担。在不加限制的人为的时间约束下,将其从中分离出来会使它们处于明显的劣势。此外,他们可能在过去几年中使用了现有雇主的专有库(内存管理,错误检查,跟踪)。一次编码采访使他们突然脱离了舒适区,回到了标准库和简单文本编辑器的世界。
他们并没有真正测试过您希望他们聘用后会做什么—也许与高级工程师进行编码面试中最令人震惊的方面是他们只测试了您要雇用他们做的一小部分。高级工程师的收入通常比新毕业生的收入高3-5倍(或更高)。期望他们产生比新毕业生多3到5倍的代码是不合理的–一天中没有足够的时间。相反,您正在寻找他们来帮助初级工程师团队,指导那些人,识别系统性问题,调试最复杂的问题,以及在进行编码时了解复杂的系统以及在其中进行编码所需的复杂工作。这些方面都没有在编码采访中得到测试,这是高级工程师讨厌它们的主要原因之一。
他们发出了不好的信息-正如您所知,您并不是要雇用高级工程师来编写代码,他们也知道。但是,当您在招聘过程中强调面试编码时,您就会让高级工程师第二次猜测您要招聘的职位。 “他们只是想让我成为代码猴子吗?” “我会在这里浪费我的才能吗?” “这是向前迈出的一步,还是向后迈了一步?”您最后想要的是让有才华的工程师对面试过程中的角色或您的公司有疑问。问他们编码面试问题就可以了。
综合所有这些因素,高级工程师讨厌编码面试也就不足为奇了。如果您想吸引最优秀的高级工程师并减少在这个特别紧张的劳动力市场中的面试摩擦,我建议您不要再问他们编码面试问题了。
但是,您可能在想,我怎么知道他们是否可以编码?如果您不愿雇用高级工程师而对他们的编码能力一无所知,建议您提供简短的实地工作(最多不超过一两个小时)。大多数高级工程师应该能够找到少量时间来完成这样的任务,尤其是因为这样做省去了编码面试所需的准备工作,并且可以分成更小的时间片,从而更适合他们的繁忙日程。带回家的作业还允许他们在其本机IDE中工作(如果愿意的话),并花费任何必要的时间重新熟悉标准库。
另外一个好处是,申请人可以根据自己的意愿花最少的时间或更多的时间来进行练习,这一事实使您可以深入了解哪些因素使他们打勾。他们对评论是否体贴?是否全面考虑测试?他们是否以合理且易于理解的方式来组织代码?他们是否在乎提交的工作质量?换句话说,您不仅会知道他们是否可以编写代码,而且会知道他们是否可以很好地编写代码,并且设置的更为现实。
高级工程师是任何软件组织的命脉。 它们是最理想,最昂贵且最难吸引的。 尤其是在历史上紧张的劳动力市场上,您的招聘过程需要针对他们的特定需求进行量身定制,因为您比他们更需要他们。 高级工程师讨厌编码采访,如果您想吸引最好的采访,也应该讨厌他们。