什么样的软件面试算合理的?

阅读数:2203 2019 年 12 月 16 日 16:02

什么样的软件面试算合理的?

从产品战略到招聘流程的指导原则,分享我们的理念和实践

在 Qualified,我们帮助客户评估和雇用软件工程师,为他们提供从雇用开发人员到产品战略所需的工具和流程。作为软件公司的我们自己,同样面临与客户相同的挑战,我们也需要雇用优秀的软件工程师!

我们必须直接面对客户的挑战,这会导致不断的自省 - 我们正在开发的产品的确是评估软件工程师的最佳方法吗?我们是否提倡遵循自己的招聘方式?用什么来指导我们作为雇主的招聘行为?

尽管每家公司都是独一无二的,但我们认为将自己的想法、信念和理念用在聘用软件工程师上很重要,因为这份文件积累了我们的经验,这些是指导我们的行为和共同标准。

哲学

人才招聘和主管之间的过分紧张情况已得到充分证明,克服这种紧张情况是指导我们开发和雇用实践理念的核心。最好的指导思想如下:

要确定优秀的开发人才,需要对开发人员的工作和生活有深刻的了解,这样公司与开发人员之间的会相互尊重。我们开发的产品希望将用作招聘开发候选者,因为这些工具展示我们的最佳工作情况。

我们的招聘信念和行为方式

绝对不要当场开发

当您看到开发人员认为问题出在眼前时,请不要用批判的眼神盯着开发人员,因为这确实令人毛骨悚然。

白板或结对编程访问会要求开发人员编写代码,而其他人则实时查看,这是一个坏习惯。如果您正在与候选人共同合作以了解他们的工作风格,或者要求引导他们阅读他们已经编写的代码,那么结对编程方式可能会非常有用。但是把它们当场并要求他们按需编写代码吗?不要做

您要做的只会增加候选人的焦虑感,并限制他们进一步展示自己能做什么的潜在能力。

什么样的软件面试算合理的?

工作经验是工作绩效的最佳预测指标

从心理学的角度来看,相关的工作样本已被证明是在职绩效的最佳预测指标之一。忘了只针对算法技能进行探索的通用编码测试,而选择一种针对其在招聘渠道阶段和所要担任的角色进行了真正优化的评估。评估应设计为测试实际的在职任务,一旦被雇用,将要求开发人员使用技术栈和框架。

公平的招聘过程基于证据和优点

您的工程团队可能已经将应聘者推荐给了您的公司,或者您可能会根据他们在 Facebook 或 Uber 的经验而聘请开发人员。不要陷入这些陷阱,就我们的经验而言,最好的开发人员通常不是拥有出色简历和大公司经验的开发人员。

良好的评估和良好的招聘流程可以仅根据人才和应用技能来评判工程师,消除所有其他形式的偏见。这就是为什么我们在评估平台中内置了“盲评”之类的功能,从代码提交中删除了任何识别信息,反过来又迫使您的团队仅根据所展示的技能和所提交工作样本的质量来进行基于证据的招聘。

让开发人员在舒适的开发环境中工作

您不会要求毕加索用刚刚从垃圾箱取出来的破旧的 Crayola 纸袋来交付下一个杰作吧,为什么您要让开发人员在对他们来说陌生的编码环境中完成编码测试?

采访软件开发人员的整个过程应集中于一个单一的目标,即使开发人员具有在现实世界中有效地为您的代码库做出贡献的技能。您想给他们一切机会展示他们最好的作品,首先要让他们在适合他们的开发环境中执行。

我们致力于为开发人员提供高度灵活且可配置的 IDE,并积极致力于使开发人员能够使用自己的开发环境来完成合格评估。

将评估过程限制为 30 分钟或 3 个小时

不要要求求职者在求职面试中花 8 个小时来编写软件,这真是一团糟,要尊重求职者的时间。

通常,在招聘渠道进行的预筛选评估限制为 30 分钟。将这些评估的最长时间设置为 45-60 分钟是有道理的,这样考生就不会觉得挑战像是定时炸弹,而是设计预筛选评估,以便平均可以在 30 分钟内完成评估。

较详细和涉及的后期编码项目应以大约 3 个小时为上限。这些只是粗略的基准,我们认为这些基准表示尊重求职者的时间,同时仍然为您的公司提供了大量评估工作人员技能的工作样本。

最好的是,通过限制候选人花在编码练习上的时间,您可以看到每个开发人员在分配的时间可以取得多大的进步,并可以使用交互式会话公开讨论他们的位置以及他们可能做什么接下来,如果他们继续该项目。

聘请高级工程师时进行周密的预筛选工作

当高级开发人员被要求完成预筛选编码评估时,他们通常会很警惕:“我是一位经验丰富的高级工程师,为什么您要我在这个简单的编码任务上浪费我的时间?”

这种观点是完全合理的,但我们也很感激桌子那边的员工。聘请高级工程师时,我们亲身经历了以下问题:

  1. 高级工程职位得到初级工程师的大量应用。
  2. 许多看起来很出色的开发人员甚至无法为基本任务编写优雅的代码。
  3. 查看存在的老代码示例(通常在雇用高级工程师时被建议作为解决方案)非常耗时,,并且很难验证候选人是否确实编写了代码。

因此,我们提倡与高级工程师一起使用预筛选评估,但“高级”并不意味着评估应该是真正深入,困难或冗长的编码评估。取而代之的是,使用简短的预筛选程序来简单地验证申请人是否可以执行基本的编码任务 - 这是招聘程序中有用的第一步,是真正的高级工程师可以在几分钟之内完成的工作。这对双方都公平。

最后,不要失去你的业务目标的视线,如果你雇用一个关键任务发展中的作用,并有申请人的数量较少,你总是可以跳过预过滤筛选,以增加申请流程和评估推迟技术能力,直到后来在招聘渠道中。

对中高级软件人才,使用基于项目的编码挑战来进行评估

虽然在屏幕前沟通是一个有用的工具,一旦编码能力的基本水平证明你应该集中在招聘过程的其余部分的评估,你会期望高层开发人员拥有的技能超出编码能力,他能提供真正的帮助解决办法。

创建一个基于项目的编码评估,该评估可以直接反映开发人员被雇用时预期将完成的工作内容,并确保提供一些开放性,使求职者能够展示自己的优势。这可能需要开发人员 pull 现有代码库,收集需求,与您的团队沟通他们想要 push 的请求,或者在合并到生产之前已经提交的代码的详细说明。这些实践活动将您的评估过程扩展到了代码之外,从而揭示了候选人实际想要工作的方式。

完善的代码审查流程可以带来 3 倍的价值

在基于项目的代码评估时,请不要仅仅依靠自动评分,您的开发人员始终会审核代码,而正确的审核过程只需几分钟(而不是一个小时或更长时间)。使用自动评分来处理审阅过程中最耗时的部分,使审阅者可以只关注真正值得他们注意的部分代码。

自动计分可以帮助您回答“应聘者可以完成工作吗?”的问题,但是简短的代码审查才能真正洞察应聘者是否可以提供优质的工作价值。另外,不要错过与候选人讨论过去工作的机会,以讨论不同的方法、技术以及诸如在添加新需求如何扩展的解决方案事情。

一旦提交代码以合并到生产环境中,您的工程团队就有可能执行代码审查工作。为什么在招聘过程中提交的工作样本做不同的事情?您还可以观看简短的代码回放剪辑,或与候选人进行配对编程会议以讨论他们的代码提交。无论您选择哪种方式,此过程每次审核应花费 5 到 15 分钟,而不是花一个小时或更长时间观看某人的过程直播,然后再写反馈。

这样的三管齐下的评审方法是使高级人才浮出水面的关键,而孤立地进行自动评分是无法实现的。

应聘者应该知道他们在招聘过程中的状态

如果您要求工程师花费大量时间应聘公司的职位,那么他们应该得到有关他们在招聘过程中所处位置的及时反馈。没有什么比被“漠视”更糟糕的了!

毫无疑问,您如何对待申请人直接反映了公司的文化。在招聘过程中过五关斩六将的候选人表明您正在高效地进行工作,您让不会继续下一轮面试候选人及时了解他们的状况,这表示尊重和考虑他们的时间。这样做不仅是正确的事,而且将候选人留下很好的口碑,避免对公司有不好的认识。

我们在建立我们想要的世界

这些准则听起来很简单,但是实际使用中可以帮助您的公司打开新的扩张招聘渠道,在开发人员中建立信誉,并在整个招聘过程中留下深刻的印象。简而言之,我们正在建立开发人员招聘经验的未来,我们希望以软件工程师的身份参与其中。

原文链接:

the qualified manifesto on hiring software developers

评论

发布