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