最后,您的公司已决定变换到远程就业。另一方面,雇用远程全球人才可能很困难。在美国雇用某人时使用的标准大多数都不适用。您可能无法识别候选人以前的学校。您可能从未听说过申请人曾就职的公司,您可能不知道所提供的参考资料是否合法。您也不能依赖招聘人员,因为他们可能正在面临相同的问题。
那么,您怎么能确保谁是最适合的远程职位人选,并且不会减慢你的速度呢?
使用彻底的筛选来寻找最佳候选人
当使用传统的人才寻找方法不那么管用时,我们便需要一种新技术。这是我目前的公司领类试图解决的一个挑战。在本文中,我将分享我通过数百次技术筛选学到的东西。我的目标是帮助您确定评估候选人的最佳实践,并确保您的职位能够实现您想要的结果。
领类将来自世界各地的开发人员与一些世界顶级和最迷人的企业的机会联系起来。当我们进行安置时,我们都会冒着声誉的风险。换句话说,我们不能做出糟糕的匹配。
我们建立了一个系统,在对候选人的远程工作成功至关重要的所有领域提供公正的反馈,因为我们不能依靠传统信号来确定某人是否对我们的客户足够好。
我们的方法基于高度组织的审查程序,包括复杂的自动化测试,以及对通过我们编码测试的人员进行广泛的面对面技术筛选。
我们所有的测试都旨在帮助建立有关候选人的经验,技能和能力的关键信息。我们试图通过测试和面试来理解什么,这将有助于我们确定一个人是否拥有他们声称拥有的技能,以及他们是否能够执行基本任务,管理项目和人员,甚至领导整个项目从概念到实施。
作为起点,我们想知道是否有人可以为代码库做出实质性贡献。也许他们的能力仅限于做某些孤立的工作。例如,这个人是否可以在这个网页上安装一个按钮,在考虑应用程序的整个技术堆栈的同时完成x,y和z?
或者这个人可以将单元测试添加到以前开发的后端逻辑中吗?一般来说,如果考虑到职能需求,他们能否在现有的既定框架内做出贡献,并完成不会破坏该结构的事情?
然后还有另一种复杂程度。这个人能否有效地执行比如“嘿,我们希望构建此更大范围的功能”之类的指令?他们能否以这种复杂程度执行由众多任务组成的东西?例如,此人是否可以为匹配服务创建新的注册流程或新的匹配算法?他们能否在设计和执行中做出这种有原则的权衡,而这种权衡是在那种复杂程度下进行有效施工所必需的?这个人是否可以发现埋藏在更高层次规范中的功能需求?
最重要的是,我们试图评估这个人是否能够在任务和基于功能的层面上,在技术和程序上添加到已经构建的基础设施中。
远程工作的候选人筛选和招聘:猎头程序员、项目总监和架构师
我们开始进入复杂的领域。如果只是给出一个大致的大纲,这个人是否可以从头开始构建整个项目?如果他们负责开发和分发一个新的Android应用程序,创立一些新颖的事情,他们能胜任吗?或者,如果一家公司想将其产品扩展到一个全新的市场,开发人员是否可以采取一些粗略的业务理念和粗略的草图来了解公司想要如何去做,然后构建一个全栈产品,从UI到后端架构再到数据库模型的设计?
他们能否监督整个过程,从系统架构设计到开发完美的实现?他们是否有足够的知识深度和广度以及体力来开发从前端到后端再到数据库,以及他们将如何使用仅有的资源以传达该代码?
即使根据面试者的技术能力筛选,以便接收有关面试者“资历”的信号也是一项艰巨的任务。必须有适当的筛选以确定一个人是否能够设计高水平的系统。他们能理解这些部分是如何组合在一起的,以及它们是如何相互交流的?然后你开始探讨更深层次的问题。面试者是否知道产品功能是否是符合整体范围?
他们是否能学会在别家公司使用这些工具?然后,他们能否适应他们所在团队的节奏和工作流程,并与他人合作以形成一个更大的整体?然后,在任务级别,您必须评估面试者是否具有基本的基线计算机科学能力。他们会写出高效的代码吗?他们是否理解运行时和空间复杂性的概念,以及面试者是否能够将开发的代码连接到他们需要解决的挑战?
他们是否能够设想他们的代码将如何在实践中被利用,以及他们编写的代码将如何执行?
但要记住的最重要的事情是,这一切都归结为代码。代码有两个功能。它将由计算机执行,它将以特定的节奏运行,并具有特定的数据和内存。但这也是人们会参考并必须跟上的事情。为了增强或增加特定程序的功能,人们需要更新或理解您的代码段带来什么结果。编写另一个人可以理解的程序至关重要。
人工智能与远程工作的人工审查
要成为一名“优秀”的软件开发人员,几乎就像是需要大量的人才。试图在长达一小时的电话采访中对他们进行全部审查是相当具有挑战性的。至少在某种程度上,我们领类已经认识到,去除人为因素是可行的。
我们确实对平台上一些最有经验的工程师进行了长达一小时的技术访谈,在那里我们确认并扩展了通过自动化测试发现的项目。
技术面试帮助我们筛选出我们正常发现很难测试的东西。当然,我们对他们的沟通技巧很感兴趣,但除了自动考试之外,我们也更喜欢在面试中评估某些技术方面。
为什么不两者兼得?
我们发现,在设计领类的平台时,自动化测试对于验证面试者在某些技术堆栈中的能力非常有用。例如,我们发现我们可以评估面试者对如何在自动化测试风格中更有效地利用JavaScript或Python等编程语言或React,Node JS或Laravel等框架的理解。
我们可以判断某人是否熟悉给定的框架或会编写特定代码语言。非常美妙的是,我们希望通过快速聘请远程员工并且运行客户正在使用的代码为客户提供技能验证。
我们还发现,我们可以自动测试更广泛的格式。
例如,我们可以确定申请人是否了解如何创建服务器。他们是否知道并理解数据库将如何与服务器连接,以及该服务器如何与前端客户端交互?他们是否了解在软件工程中观察到的典型设计模式以及如何有效地应用这些模式?
面试者是否熟悉软件工程中可能遇到的多种算法?或者,如果这段代码是您声称理解的语言编写的,您能告诉我们,如果您输入某种代码运行它,你预计会发生什么?我们发现,这类问题非常适合我们现在所做的自动化测试类型。
我们相信,我们可以很好地分辨开发人员对特定形式的代码的掌握,例如前端开发,后端系统开发,移动开发或数据库设计。
我们已建立工具,使您能够在浏览器中执行程序。例如,这使我们能够进行自动实时代码测试。我们可以以这种方式进行自动化的实时算法测试,在测试算法的正确性和效率方面取得很大的成功。
我们可以测试面试者是否可以开发在特定时间内执行特定功能的代码,并具有特定的内存量。领类非常高兴能够继续开发这项技术,并探索可以执行哪些其他基于编码的自动化测试。
自动化测试失败的地方
但是,即使在实时编码模式下,我们的自动化测试也存在差距。
现在,我们无法从一台机器告诉我们某人代码的准确性。或者它的结构有多好,它有多清晰,或者它有多抽象。
这就是我认为技术面试有帮助的地方。因为我可以向他们展示潜在的工作环境,并让他们指导我如何建立解决问题的方法。这可能有助于我了解候选人的想法,以及他们在技术面试期间为近似解决方案而设计的代码类型。这真的有助于我穿透潜在客户的批判性思维的能力。我可以观察他们如何应对未知需求的挑战,他们如何提出有关获取所需规范的问题,以及他们如何更好地了解其编程抽象和优雅的本质。
自动化测试帮助辨认出众面试者。面对面的面试可帮助验证真实性,并根据现在难以自动量化的关键因素评估申请人。
总的来说,我们在领类上发现,在盲目筛选大量应用时,精心设计和完全自动化的测试设施非常具有成本效益。如果我必须进行面对面的面试,甚至对每个想与领类合作的申请人进行背景调查,那么将没有足够的时间。
随着我们测试技能的提高,我们将能够找到最优秀的候选人,然后将我们的精力集中在最有成效的地方:专门对顶级应用程序进行技术筛选。
如果您没有自动化测试,并且想要筛选和招聘远程工作人员,该怎么办?
在我的下一篇文章中,我将介绍如果您无法访问自动化测试设施,您可以做些什么。我还将讨论简化入职流程的方法,以及如何识别远程招聘人员正在挣扎或可能失败的早期预警信号。请留意!