
在雇用软件开发人员时,评估其能力的常见技术是”编程挑战”。这些形式多种多样,但它们通常都涉及一个阶段性的例子,即候选人的任务是解决存在多种解决方案的某种类型的任务。然后,对考生进行评分(无特定顺序),以决定他们的能力:
- 查找任何解决方案
- 他们找到解决方案的速度有多快
- 他们发现的解决方案有多最佳
这些类型的挑战往往是高度主观的,根据问题的性质,他们也可能有偏见。一个常见的挑战问题,至少在某些领域,可能会偏向于结果,使来自某些背景的候选人处于有利地位或不利地位。因此,我总是试图使用改变的问题,既是我独特的创造,也限制他们的使用。后者,因为太频繁,招聘人员在面试后汇报候选人。我亲眼见过一些例子,后来来自无良招聘人员的求职者似乎已经意识到了在我问他们之前我会问的问题——不酷!
正因为这个,我偶尔会退休一个问题。今天,我将退休一个这样的问题,在这个过程中,我想与大家分享。挑战的介绍通常是这样的:
在面试的这个时刻,我想让你做一个编程样本。这项任务的目的不是衡量你记忆深奥的信息的程度,而是模拟你如何解决日常工作中的真正问题。正因如此,我不期望你记住了每一个标准功能,他们的签名等。在你的日常工作中,你会谷歌的东西,或向同事寻求帮助,所以我强烈鼓励你这样做。谷歌你需要什么,并要求澄清或援助,如果需要的话。不过,我要提醒你,你不会在互联网上找到解决这个问题的办法,因为它是我自己创造的解决方案,所以我要求你不要尝试。同样,我不能直接协助寻找解决办法,而只是澄清而已。
最后,在我们开始之前,我想提醒你,这样做的目的是也玩得开心。我们创造了这个挑战的乐趣,这是我真诚的希望,你也有乐趣,同时解决它。说到这里,我向你提出了一个我喜欢称之为”遗传佩林德罗姆”的问题。您可以用您选择的任何语言进行编程。我在评论中写了一些简短的指示,但如果您需要任何额外的澄清,请告诉我。
问题:
此时,考生通常会在几分钟内查看这些说明。虽然肯定不是确定性的,但此时提出的问题与候选人的成功之间似乎确实存在相关性。在这一点上, 我见过候选人走三条路之一:
- 他们不问任何问题,并立即开始开发
- 他们问了很多问题,似乎以多种方式重复同样的问题
- 他们问了几个,简洁,一套问题,并开始发展。
其中,最后一组——那些只问几个尖锐问题并开始工作的人——更有可能是那些既按时完成挑战,又以正确结果完成挑战的人。中间的类别——那些看似困惑的人——最有可能没有按时完成,而且到分配的时间结束的时候几乎没有取得什么重大进展。
最后,第一组- 那些谁不问任何问题,并直接跳进去 – 更经常是那些谁按时完成,但得到的解决方案完全不正确。
有趣的相关性。
有了这个,我邀请你试试这个挑战。您有一个小时或更短的时间完成此任务。在未来的帖子中,我将分享我的解决方案,并讨论问题的机制。祝你好运。