技术招聘和测试。 有没有更好的方法?

这些年来,我已经完成了大量的技术测试,其中有些很棒,有些有些恐怖! 如果您是开发人员或曾经是开发人员,您将了解我的意思。 大小公司都喜欢问荒谬的编码问题和算法编码挑战。

这是获得优秀开发人员的途径吗? 还是一种懒惰的做法,而不是提出适合业务,更重要的是适合团队的测试? 您掌握了真正需要的技能吗? 一个UI开发人员知道如何计算给定范围内的半素数,还是一个真正在不过度设计的情况下构建东西的开发人员?

是的,雇用开发人员很辛苦!

您可以进行数百种测试和技术。 我将介绍几种不同的类型。 我使用了多种技术,但发现只有一种对我有用。 剧透,它不涉及结对编程!

在线测试

我已经进行了一些在线测试,但是唯一想到的就是Codility。 现在我可以理解Codility的前提,但是他们如何将Codility卖给公司却很糟糕。 这些问题结构合理,对于行业内的任何人都是一个真正的挑战,但对于大多数公司的需求而言,它们也是荒谬的。 您知道,这些公司的预算不会达到数百万美元,而且通常不需要研究生编码人员。

现在在软件中工作了一段时间,即使我发现它们也有些混乱。 它可能证明您可以编写一些超级疯狂的代码,或者您在计算机科学专业上获得殊荣,但是对于绝大多数公司而言,这并不重要。

例如,多年前我去了一家开发人员的职位,而我必须回答的问题与我将要做什么无关。 从字面上看,从来没有涉及到这些主题。 当面对面时,他们甚至没有问我任何特定的平台问题,他们只是以为我很棒。 太棒了吗?! 我们正在编写面向消费者的应用程序,这些应用程序不仅需要优质的代码,而且实际上比其他任何东西都需要对平台的更多了解。 从理论上讲,他们雇用我对我的能力一无所知! 我猜他们很幸运,与一些核心的C / C ++编码器相反,我能够提出关于UX和技术决策的问题和挑战,同时仍能编写出色的东西。 他们是本能地吗? 我对此表示怀疑,他们正在根据给出正确数字的测试进行测试。

一定要使用这些测试,但前提是它与您所在的行业相匹配,然后使用人工方法进行支持。

如果有的话,我想说的是,如果您要根据市场聘请具有一定等级和背景的开发人员,则只能进行在线测试。 例如金融科技后端工作,其中算法和性能可能对您来说更成问题。

测验…多项选择😬

多数通过电话或面对面与之相遇的人都会发现这一挑战和艰巨的任务。 大多数候选人(除Codility之外)最可怕的噩梦进入面试,并被高级开发人员无休止地询问。 这些问题是否具有良好的指标能力? 人们是否知道StringBuffer和StringBuilder类之间的区别,是否使他们能够实际编码?

过去我问过技术问题时,如果人们正确回答所有问题,我就不会真正感兴趣。 我对讨论更感兴趣。 我完全理解,大多数出色的程序员都会定期在他们喜欢的编码器和Google之间切换。 我雇用了无法正确回答单个问题的人员,但我仍然雇用他们。 当我们开始讨论这些问题时,他们给我留下了深刻的印象,向我提出问题,向我展示了他们的人文能力以及并不总是可见的基本技能。 渴望了解更多!

做到这一点,很多开发人员很高兴知道他们所知道的。 尽管有些人想要不断学习和进步,而这正是我所寻找的,尤其是在代理商和初创公司内部。

过去,我收到过面对面提问的Word文档或电子邮件。 然后,当我遇到他们时,他们甚至没有意识向我询问有关我的答案的任何信息。 逻辑要求您至少对此有一点疑问。 或将其用作技术讨论的前提。

白板

我第一次这样做是在大约9年前,当时我被问到如何构造应用程序然后进行编码的问题。 四名面试官组成的团队一直坐在那里观看和聆听! 并不是那么困难,但是很多人肯定在练习中增加了另一个要素。 像我一样彻底崩溃了。

只要基于真实世界,这种类型的技术测试就不错了! 当时真是太棒了,因为它基于我们将在一周内在项目中进行编码的组件,因此它是项目开始之前的完美预测试。 没有伪代码,只有很好的旧技术讨论。

如果要使用白板,请根据当前和将来的工作来使用白板。 让另一位开发人员与白板上的候选人配对,解决问题,提出主要问题,然后慢慢提出想法。 这使您可以深入地了解该人的思维方式,以及他们在讨论进行过程中是否可以反复考虑各种想法。

如果您要开辟绿地并且需要一个团队合作得很好,而不仅仅是一起编写代码,那么这是一个不错的选择。

建立一个应用程序

可能是所有这些中最标准的测试,或者是我被要求做的很多…叹气! 通常以表单的形式出现或构建使用Twitter API或其他服务的简单应用程序。 显示这些API项的列表,并可能显示两个屏幕。 然后评估候选人的编码水平。

我已经做过很多次了,我开始拥有一个标准的代码库,我可以针对该任务进行自定义。 另一个问题是,许多开发人员只是不想花时间进行这些测试。 您可能会争辩说,他们应该愿意进行测试,因为他们想为您工作。 是的,如果测试需要一两个小时,但还要更长的时间,请重新考虑一下。 开发人员拥有生命,信不信由你!

对于希望保持标准的初创公司和小型公司,这通常是理想的选择。

讨论区

让开发人员在开发人员之间讨论编程和平台。 他们可以深入探讨不同的主题吗? 讨论意味着您可以测试他们的知识,但同时也可以看到他们的思考和沟通。 这不是为了问题而提出的问题,而是正确和错误的答案。 我希望人们能够口头表达自己,并讨论项目的技术方面。 这也给了我一个很好的主意,即它们适合团队的位置以及如何最好地将它们放置在项目中。

过去我去面试时,面试官进行这种技术讨论给我无尽的印象。 消除标准技术测验或编码挑战。 它向我展示了他们得到了它,并且他们可以找到一个好的开发人员,而不必依赖测试。 它还使我也有机会对其进行测试,并对开发和平台进行了很好的讨论。

讨论和意见比知道如何知识更好地指示了知识……编写代码以检查字符串是否为回文式!

如果您实际上很在意建立团队,那么这是一个好方法。

我理想的过程是什么?

阅读以上内容,我认为您可能可以解决。 对我来说,理想的招聘流程应该基于现实世界的编码,讨论,并且重要的是要人性化。

听你的直觉。 我知道您不能仅凭直觉就雇用员工,但我建议您尽可能地保持直觉。 如果应聘者不适合担任该职位,那么机会很可能是不对的。