2016-02-02 14:44:20 +0000 2016-02-02 14:44:20 +0000
192
192

一个编程任务吓跑了应聘者,要不要放弃?

我是第一次做HR,我们公司要找一个开发人员。

我遇到的问题是,当我给一些应聘者(大多是刚毕业的大学生*已经有1、2个技术实习经历的应聘者*)的编程任务时,他们不仅没有在规定的时间内(一个星期)完成,而且除非我跟进,否则就没有任何消息。

***我在考虑放弃编程任务,但我真的认为这样做可以帮助建立起谁真正懂得简历上所列的语言,

*我该如何改善我们的招聘流程? *

Update SINCE THIS QUESTION HAS BE POSTEN POSTED

对于大多数情况下,很多应聘者都会被编程测试所阻挡,这让人非常沮丧,因为我需要通过大量的应聘者才能找到愿意做的人。尽管如此,我还是找到了一些愿意做这些测试的人,而且一般来说,我发现:

a) 如果他们准备好了要完成测试,这表明他们对公司和角色有**好的态度。当然,他们可能有作弊,但如果他们尝试过,同样,对我们来说,一个好的态度更重要,因为他们会更容易管理。

后来我雇佣了一个毕业的开发人员,他尝试并成功地完成了练习。他也完成了任务上的所有加分 “加分"。现在说他的能力有多强还为时过早,因为他才刚开始工作不久。

在某些场合,如果开发人员已经在好的品牌公司有很强的工作组合,并且有良好的业绩记录,我就会****避免给他们做这个练习。因为要进入大品牌,他必须要做他们自己的入门测试。

第二次更新,因为这个问题已经发布了*

这位毕业的开发者已经成为了明星员工。我们已经留住了他,并给他加薪了。

Ответы (23)

277
277
277
2016-02-02 19:27:36 +0000

你***需要进行编程测试。但应该是5 -10分钟。最多30分钟。没有任何一个2小时的测试可以告诉你一个程序员有多好。你无法判断他们是否能持续地写出可维护的代码,或者他们是否总是正确地注释,或者他们是否想出了一些无法阅读的乱七八糟的 “聪明的 "问题解决方案等等。在2个小时内,你唯一能做到的就是发现谁在懂一门语言/程序的问题上公然撒谎。

除了你应该能在比2个小时更短的时间内发现公然的骗子。5分钟写FizzBuzz和2-3个关于语言特性的快速问题就能告诉你他们是否绝对不值钱。而这是你在面试中能做的最好的事情。

让我告诉你,如果我收到一个2小时的考试,我将会怎么想:

"要么这些人认为这有价值,这意味着他们对自己在做什么毫无头绪,要么,他们知道这是浪费时间,但出于某种原因(可能是盲目地遵循HR的繁文缛节),他们愿意在候选人被录用之前就浪费候选人的时间。 你的面试过程的长度。你让人做一个电话面试。然后是一个带回家的测试,他们有一个星期的时间来完成。然后你再去复习测试。然后你再安排管理层面对面面试。然后(我想)你做几个面谈。然后,你再去找你想雇用的人。那要花多少时间?2周?

在这段时间里,我已经收到了3份offer。我接受了一个,下周就开始工作了 你觉得我会去做你的2小时测试吗?

197
197
197
2016-02-02 14:51:10 +0000

首先,我想说的是,一般来说,招聘员工是一门很不精确的科学,无论你怎么尝试,都会得到不同的结果。说到这里,我觉得我应该分享一下我的想法。

我认为编程练习是一个失败的例子,主要是因为你会得到那些不顾一切的人,他们有太多的时间来完成它。如果他们有一份全职工作,你要问一下,他们从他们现在的雇主那里抽出多少时间/精力来为一个连工资都没有的人工作。你想让他们对你做这样的事情吗

另外,如果他们很优秀的话,他们很有可能会去面试很多雇主。你猜猜他们会优先考虑哪些人?就是那些还没跟工程经理通电话就不要求完成项目的人。

还有一个问题,就是抄袭问题。当然,他们会在面谈时被发现,但那时你已经浪费了公司里(大概是)高薪的人面试这个人的时间了。

我现在的公司做得很好,在你的位置上我会走这条路。给他们一个小任务,应该只需要90-120分钟就可以完成,然后告诉他们在评论中说明为什么选择这种方式来解决问题。这样的事情一晚上就能完成,会让你洞察到他们的想法。

我现在就可以告诉你,如果我接到一个需要8个多小时才能完成的项目,我告诉他们谢谢你,但我不感兴趣。我有一份好的工作和生活。如果经理认为这是一个问题,那就说明他们不会关心我在工作上的工作/生活平衡(尤其是如果他们不关心****前我有了它)。除了谷歌、苹果或Facebook之外,没有一家公司能做到这一点。

109
109
109
2016-02-02 19:58:12 +0000

根据我的经验,带回家的项目并不会淘汰掉坏的代码员,很可能会让优秀的代码员找到一份不需要跳槽就能和招聘经理谈的工作。一个好的编码员可以很容易得到电话和面谈。他们每跳过一个额外的环,就意味着他们会选择更容易的途径,被其他的人面试(并被录用),而这些人也会付出同样的代价。如果你让人们跳过障碍,确保他们从一开始就看到这是值得的。你不会看到他们花4倍的时间;你只会看到完成的测试。你也不会看到他们去找Google或他们的朋友求助于if声明。

我的上一家公司也是这样做的,我们带来的绝大多数人都失败了Fizz buzz(约65%)。我认为这是因为我们无意中把那些优秀的、忙碌的人淘汰了,他们不需要另一家公司的面试,同时,在坏的代码员面前,我们还把一个简单的面试挂在了脸上。这也会花同样多的时间,但我很可能在两个小时的面谈之前就把坏的程序员淘汰掉。

72
72
72
2016-02-02 22:03:09 +0000

从这个问题的两边都有亲身经历的人提出了一个对比的观点。我怀疑这个答案会引来下风,但这是我几十年来在这个行业中发展起来的一个非常有见地的观点。因为我喜欢这样做,所以我仍然每天写代码为生,在我的 “丰富的空闲时间 "中作为一种爱好,但我也曾是几十名程序员的最终决定者,并且帮助面试和建议雇用了相当多的程序员。但随着时间的推移,我们在这方面做得越来越好。比起面对面的聊天,比起琐碎的问题,简短的现场编程挑战是越来越重要的一部分:不仅是技能,而且是态度。

注意,我说的是"简短 ”。当应聘者来面试的时候,我们会给他们一台安装好Eclipse(我们选择的IDE)的笔记本电脑。正确设置意味着他们可以访问jdk源代码,但没有网络,并且要求他们在测试期间不要使用手机。他们有一个小时的时间来解决从零到五个问题,从 “FizzBuzz "开始,到复杂度上升到简单的多线程生产者/多消费者系统。

没有人在一小时内解决了所有五个问题,我也不希望有人能在一小时内解决这五个问题(我可以在一小时内写出五个问题的解决方案,当然,我以前看过这些问题并解决了所有的问题,所以我不是一个公平的测试)。让我再说一遍:我们已经有少数考生未能正确完成FizzBuzz。

我们让他们在这里一边写代码,一边在这里写代码,而不是给他们做作业,原因有几个,一部分是作弊的风险,一部分是为了给每个考生一个平等的机会去做问题。我们也会在挑战题集中轮流出题,事后我们会和考生讨论解决方案。

我对这个问题的感受非常强烈。我从未见过有应聘者因为我们的编程测试而拒绝职位或退出面试。但这可能是受我们告诉为我们服务的招聘人员,我们的流程包括现场编程,这可能是有影响的。所以,我们可能就不会看到那些认为被要求写一个小时的代码是 "无薪工作 "的求职者。如果是这样的话,那就好办了。如果他们认为一个小时的编码工作比一个小时的答题更像是 "工作",或者说他们对测试问题的回答能产生什么有用的东西,我不需要他们的态度。

我们确实有一次有一个考生抱怨过测试,因为他认为他的资历太深,必须证明自己(这不是猜测–他是这么说的)。而他在挑战中表现得很好,他有我们想要的所有经验。但他是个可怕的员工:他显然也认为自己的资历太深,不适合带方向,也不适合学习,最终我们不得不让他走人。

我们这么多年来,我决定的一件事是,任何一家测试的公司,都不太可能得到我这个员工。就像他们对问题的回答一样,比如他们用什么来控制源码等等,一家公司是否进行测试会告诉我很多关于他们在软件开发业务方面的能力。提前告诉他们,这是过程的一部分,并在他们与上层管理人员见面之前进行(但你应该先与他们见面,让他们放心)。而且真的:如果他们失败了,就跳过与上层管理人员的面试。不要担心在求职者中的受欢迎程度,也不要担心在网上发帖。雇用不好的人的成本比你拖延到雇用好的人的成本要差得多,*。

41
41
41
2016-02-02 20:45:45 +0000

为什么没有上门测试?

即使我们忽略了作弊的可能性,以及导致优秀而诚实的候选人避开有上门编码测试的公司的反向过滤,上门编码测试的价值也是有限的。我们不会知道具体有多好,但我们会知道,如果不是比每一个能想到的上门编码测试告诉我们的都要多。

如果是初级职位,我们对技术专长的要求不高。我们需要的是热情、学习的意愿和天赋,而这些都不是在家编码测试所能发现的。有太多的东西是允许初级员工无视的。如果我们雇用他们,我们无论如何都要对他们进行培训。

如何测试?

作为一个过滤器,只需在第一轮面试时给他们10分钟的时间,让他们在现场解决一个FizzBuzz的变化,或者,如果你被优秀的简历淹没了,需要另一个过滤器,在第一轮真正的面试之前通过Skype进行。我建议你花30分钟到最多2个小时的时间进行配对编程或代码复习—实际的实际工作,而不是练习。与不同的伙伴重复1-2次。对编程和代码复习的好处是,开发人员已经有足够的知识来贡献。

不要担心每个人的测试都不一样–招聘过程的目标不是找到在几个可测量和可重复的测试中得分最好的人。**我们的目标是雇用一个能胜任工作的人。

31
31
31
2016-02-02 22:42:47 +0000

这里还有一点,我没有看到现有的答案(我认为这些答案总体上涵盖了这个问题)。我想仔细认真地看一看,人们究竟需要多长时间才能完成。我有过四次求职面试,期间有四次需要完成的编程练习,每一次都有不同的方法(各有利弊)。四个中的两个(下面的3号和4号)比他们说的时间要长得多,而且这两个都是我最后因为涉及到的难度级别而放弃了。下面我把它们描述了一下,并从我的角度出发,从最好的到最坏的进行了排名。

  1. 在技术面试的时候,他们让我坐在一台电脑前,让我解决三个相对较短的问题(找到并修复一个他们特意添加的bug,给信息表添加一个新的字段,等等)。他们给了我一个小时的时间来做,一个小时后,他们对我的解决方案以及我如何处理这些问题进行了分析。这让他们对我作为一个程序员有了更多的了解,同时也尊重了我的时间,让我的时间更短,更有针对性。在技术面试的时候,他们让我在白板上把自己在开发过程中遇到的问题在白板上做了一遍,同时还能把自己的想法从他们身上跳出来。这是最短的选择,同时也给了他们一个机会,让他们看看我是如何通过问题解决的,以及我实际能做多少必要的工作。
  2. 在技术面试的时候(一个初级Ruby on Rails Web开发的职位),他们要求我从头开始建立一个Web应用程序,让我浏览一个网站,填写多个表格,从结果页面中提取数据,然后将这些数据呈现给用户。他们说这应该是一个很快的工作,可能对于一个高级别的web开发人员来说,这可能是个很简单的工作,但是由于我只有一年的专业经验,我花了4个小时的时间来完成这一切,然后就放弃了,回家了(所有的面试官都比我早走了几个小时,因为是下午的面试,他们说我应该把完成的程序保存下来,等我完成后再回家)。这对于挂牌的职位来说,这是一个荒唐的任务,让他们根本不知道我的编码能力,在我看来,他们只是想从交易中获得免费的工作。不用说,我那天离开的时候,我甚至不想要这份工作。在技术面试之前,他们给了我一个任务,让我创建一个网络应用,利用他们公司使用的API来 “做一些有趣的事情"。这个任务听起来确实很宽泛。这就要求我在尝试创建应用程序之前要做以下工作:为API创建一个开发者账号,下载API开发工具包,创建一个公开的Web应用程序(用另一个开发者账号),学习API,并创建一个数据仓库,用API访问。这当然光是上手就花了好几个小时的时间,而就在Web应用本身上手后不久,我又接到了另一个工作面试,不久后又接到了一个工作通知,于是我就中断了这个任务的工作。这在面试过程中是一件很疯狂的事情,因为谁愿意花那么多时间和精力去开发一个程序,只是为了在面试过程中能有一个小小的机会晋级呢?

所以更直接地回答你的问题,你应该有一个编程练习吗?是的,但要确保它是有针对性地测试你真正关心的东西,而不是要求面试者做大量的无关紧要的工作。你想知道他们的算法思维吗?给他们一个算法问题。你想知道他们的编码风格吗?给他们一个编码问题。你想知道他们的开发过程吗?在他们处理问题的过程中和他们讨论他们的过程。

28
28
28
2016-02-03 21:14:44 +0000

让我从以下几个方面说起:

–有人给我发测试,让我在家完成15分钟到10个小时不等的测试; –有人给我做在线测试,让我在白板上写出FizzBuzz和其他时髦的网络测试的答案; –有人问我关于方形和圆形井盖的问题;

总之,我几乎处理过所有开发者喜欢的不同的面试方式。说实话,我很怀疑绝大多数面试我的人甚至不了解每一个测试的潜在结果是什么,最终只是根据他们是否 “喜欢 "这些测试来雇用他们。

在你发布招聘信息之前,你应该坐下来仔细研究一下你想雇用的是什么,"开发人员 "不是一个合适的答案,至少,这不是一个合适的答案。一个好的答案应该是像 "抵押贷款领域专家 "这样的东西。

找到一个能写点代码或在google上搜索如何应用特定模式的人,与找到一个在你所从事的行业中的人,并能利用这些知识相比,是微不足道的。换句话说,如果我在为一家抵押贷款文件公司招聘,我会选择一个能讲15年固定贷款和ARM贷款之间的区别的人,而不是一个能在2分钟内写出泡沫排序算法的人。原因是 "正常 "的业务人员会提出各种奇怪的要求,而领域专家更容易切中要害,而一个什么都不懂的人,会很乐意加一些无用的东西,或者把APP做得很糟糕。

回到问题上来,只问去/不问去的问题。可能是,通常不是。我敢打赌,有相当一部分开发人员几乎不知道何时使用这些关键字,但他们不是你的超级明星,他们是那些没有视觉设计人员就无法编写代码的人。

当一个查询被打开进行SQL注入时,发现是关键吗?对于Sr职位–绝对是;对于Jr.职位不是。这是很容易培训的事情,可以通过代码审查来处理。因此,你想让Sr. 一般情况下是不会的–这种程度的微不足道的知识是google所需要的;但也许你的要求是在内存受限的设备上进行编码–在这种情况下:绝对是这样的。我不送测试回家–让朋友帮忙太容易了。我不使用在线测试网站–考虑到评分必须是自动化的,这对于游戏来说是微不足道的。我不要求考生写出fizzbuzz的答案–几乎每个人都看过那个测试,应该都知道答案;其他人都是去年进场的,反正都是jr.s。我也不问一些琐事问题—能够背诵答案通常意味着你以前听过这个问题。

我在面试的时候会怎么做:

–我会让他们描述一两个之前的项目。在这一点上,我所关心的就是让他们感到舒服,让他们开口说话。

  • 我问他们一些我需要他们使用的技术方面的具体问题。如果是SQL服务器,我就会问关于联接上的更新。如果是HTML,我会递给他们一个10行的html文件,加上几个css类,然后问他们输出是什么。这些问题对有这些领域经验的人来说都是一些琐碎的问题,很快就能把装腔作势的人赶走。不是边缘案例的问题,而是核心原理的问题。如果我需要你领导一个会计后端的项目,那么你最好掌握基本的会计原理。

  • 如果我找的是Jr. 这应该能让你知道他们真正想做什么。换句话说,一个C#开发人员不可能用php做宠物项目。老实说,我对一个jr开发者的要求不高,除了要能接受培训之外。如果他们正在积极地做一个宠物项目,那么我可以对他们进行培训。如果他们是那种需要别人告诉他们该怎么做的人,那么这些人可以在更大的公司工作。如果一个问题不符合这个模式,那么它就不相关。我也会问每一个应聘者同样的问题,除非我百分之百地相信我不会雇用他们,否则我会停止面试。

我有一家公司给了我一个带回家的测试,测试内容是写一个定制的密码服务提供商。我完成了这个测试,因为它有点有趣;他们录用了我。在我在那里的时间里,我没有做过任何与安全、密码学甚至是数学相关的事情,除了加几个数字之外,我没有做过任何与安全、密码学甚至是数学相关的事情。我想知道有多少人因为这个测试而被他们赶走了?

17
17
17
2016-02-03 03:48:05 +0000

我曾经是编码测试和白板编码的坚定信徒,但我已经开始意识到,它们几乎没有什么用处,因为

你到底在测试什么?

一个白板测试,或者说简短的编程测试可以让你对个人有一些了解,但真的没有那么多。除非你打算让一个人花时间在白板上写代码或者FizzBuzz风格的代码。 你想要的人是什么?你最不想雇佣的人是不适合你的团队的人,因为他们会拖累你的团队。

如何测试这些?

  • 问他们一个他们喜欢的项目。如果他们似乎不愿意谈论它,可以试着表达出温和的不相信,例如:"你不能做X,是吗?" 如果是他们热衷的事情,他们会纠正你。这也可以帮助你了解他们是否有技术含量。 –问他们最近学到的东西。或者他们从他们工作的项目中喜欢的项目中学习到了什么。 –问他们上一次(或一次)缺少一些知识的地方。他们是如何获得他们需要的信息的?他们去找队友了吗?他们在网上搜索了吗? –问他们在当前/上一个团队中是否有什么需要改进的地方。他们需要更好的提交信息吗?更多的代码审查?更多的测试?更多的自动化? –问他们什么技术让他们兴奋,以及为什么。

如果你有一个在技术上是comptentent的人参与到这个对话中来,这将是世界上最容易判断这个人是否会是最差的。一个例子:我们有一个孩子来面试–他说,在1-10的评分标准中,他的Java技能好像是7-8。我想他甚至不知道Java是被编译成jar文件,后来被JVM编译成机器语言。我给自己的排名可能是2或者3,知道。

其实前几天我们的CTO在面试的时候也问过他同样的问题,我们的CTO叫他,他解释说不可能是7-8。但他说不清楚他们是怎么工作的,也说不清楚他们是用投票来防止忙的。他不能解释任何技术性的东西。

那个人没有被录用。

弄清楚你要找的是什么样的属性,然后再想出如何测试这些属性

但我真的需要看看她是怎么编码的!

好吧,那很好–但除非她要在一个孤岛上编码,否则最好的办法是把她作为一个小的、定义好的项目的承包商来雇用她。也许你要增加从FTP上下载一些文件,然后将其转储到你的数据库中的功能。一些简单的,不需要太多/任何领域知识的东西。

让你的候选人与一两个现有的员工一起工作,并支付他们的时间报酬。你可以看到他们是如何工作的,以及他们与团队合作的情况。他们沟通得好吗?他们是否容易受到挫折?他们是否坚持不懈?

有_些事情你可以做,以雇用更好的员工……….但编程竞赛可能不是其中之一。

15
15
15
2016-02-02 18:17:47 +0000

从一个人找工作的角度来说,我一般都会避开那些需要1个多小时才能完成编码的地方。有一次,我去了这个地方,需要做一个近3天的java编码项目。我都做完了,那个人甚至对我刮目相看,但他们在第二次面试阶段结束后告诉我,他们请了别人。所以在那之后,如果来了一家公司,我就会忽略/通过任何需要超过几个小时才能完成的项目。我的时间和他们的时间一样宝贵,我宁可不要把时间浪费在那些对我没有任何帮助的事情上。

说到这里,如果你的编码练习时间太长,也许人们不愿意投入时间。我会尝试减少它,使它最多需要一个小时的时间,但同时也要显示出对编码的理解,也许可以在它上写上一个截止日期,比如 “请在明天COB前完成 "之类的。他们仍然可以在网上 "复制粘贴 "一些东西,但要具体化,而不是你在网上读到的东西,让它变得很难。

13
13
13
2016-02-02 18:48:24 +0000

正如其他人指出的那样,有些开发人员可能会被1-2个小时的编程练习所打消了应聘的念头。最好的办法是进行白板面试,让应聘者在面试时在白板上解决一个问题。这可以让你有机会进行面谈,同时也可以确保他们的技术能力。

这些问题不应该是非常困难的,或者说是为了让开发人员感到不安。一个典型的例子是FizzBuzz。这可以让你看到他们的思维方式,同时也知道他们至少会编程,不需要去google上搜索如何做一个循环。

10
10
10
2016-02-03 17:30:56 +0000

在我看来,你这里的问题不一定是编程考试。首先是电话技术面试,然后是在家工作的测试,然后是面对面面试。这听起来像是你们在与候选人保持距离,并将其留到最后一分钟再与他们见面。在什么时候,你希望候选人决定他们****想为你工作?

我想你的招聘广告和大多数的招聘广告类似,所以重点是地点、工资和(希望)技能清单。应聘者并不真正知道他们将从事什么工作,也不知道工作环境或与人打交道。你还没有把工作卖给他们,在这里,你要求他们证明自己的技术能力,在他们问一个关于工作的问题之前,你要先证明自己的技术能力。对应聘者来说,这似乎更容易实现,给他们一个激励,让他们保持对过程的重视,而且你会得到观察挑战者在挑战中花费的真实时间的好处(我想你可能会感到惊讶)。

8
8
8
2016-02-04 04:58:34 +0000

*你想雇用不会编程的程序员吗? *

我敢说你不想。如果你的招聘过程中不包括某种编程测试,你就无法有效地剔除那些不会编程的程序员(外面有很多程序员)。正如评论和回答中提到的那样,有些求职者不愿意把编程练习作为面试过程的一部分,因为_他们不需要为了得到工作而去做编程练习。那些遵循阻力最小的路径,做任何对他们短期内最有利的事情,并且对你的公司并不真正关心,不愿意完成一个简单的编程练习的人?这些似乎都不像是积极的特质,而且也不能给人提供长期留住这些候选人的信心(这对科技公司来说也很重要,因为学习曲线往往很陡峭,更换现有员工的成本很高)。反正你也不想雇佣他们。不像他们,你有一个计划。一个不是基于 “程序员就是程序员 "的谬论的计划。你的重点应该是质量和可持续发展,而不是体量。

*吓退候选人是个问题吗? *

一般来说不是,只要他们被吓退是有原因的。你不希望雇用那些不合格的人。而一些说他们 "不能被打扰 "的人由于需求量大,可能实际上是在用这句话作为借口来掩盖 "不是很擅长编程,所以需要一周时间来完成1小时的练习 "的情况。你要雇用有能力、有上进心的候选人。只要你不把那些候选人也吓跑,你就很好。

每一个你没有吓跑的候选人,你都要尝试着去评估。而如果你没有给你的技术候选人做任何技术性的练习来进行评估,这可能是很难做到的。

**如何改善我们的招聘流程?它是否合理,是否适合面试的背景?

你不想要一些需要几天(甚至几个小时)才能完成的东西。你想要的是一些简单的东西来筛选出那些不会编程的人,最好是有足够的细微差别的空间,让那些会编程的人能够区分出自己。牢记你想达到的目的(剔除不熟练和不认真的候选人),并确保你的内容是为这个目标量身定做的。

如果你已经有了一些技术人员,你可以利用他们来检查(和/或帮助设计)你的练习。如果你只是给他们一些文件,说 "在这里,在接下来的一周内做这个,然后通过电子邮件发给我",那可能只会起到最小的效果。然后他们要么在这一小时内提交东西,要么不提交。这样做没有那么多的限制,能更好地保留考生的注意力,并且提供了一个明确的截止日期/时间框,这样一来,1)你就不会为了一个永远不会出现的结果而整整一周的等待,2)不合格的考生不会为了完成你的编程练习而浪费了一周的时间。他们有1个小时的时间,他们要么解决问题,要么不解决问题,你马上就知道结果了。

还有,更好的办法是带他们去现场面试。把他们介绍给你的开发团队的一个成员。把他们关在一个房间里,并把他们和工作站放在一起。让你的开发人员从一些一般性的/软性的面试问题开始,然后他们可以和应聘者配对编程,解决编程练习。这不仅能告诉你候选人是否会写代码,还能告诉你他们与你的团队合作的程度。你的开发人员也应该能够收集到很多额外的信息,而这些信息是你通过查看应聘者写的一堆代码,然后通过电子邮件发给你的方式无法得到的。但是,你可能要审查一下它的内容是否合适,确保它不需要太长的时间来解决,同时也要看看你是如何把它融入到你的总体面试流程中去的。

自我指导的带回家的练习可能不是最好的方法。但解决这个问题的办法并不是完全放弃练习。

吓走很多坏的候选人和少数好的候选人,总比打开洪门雇用几个坏的好。

7
7
7
2016-02-03 10:18:09 +0000

似乎没有人提到一件事;即使测试不是你的问题,你也应该寻找其他吸引人才的方法。

如果你是根据他们现有的已发表的作品来寻找优秀的人才,你不需要对他们进行测试。他们想把人安排到你这里来。你要的是一个顶级工程师。如果他们能找到一个顶级工程师,那很好,因为你会再来找他们,但如果他们找不到(而顶级工程师往往有事情要做,几乎没有时间去面试),他们就会退而求其次,只安排一个中等偏上的工程师,穿上漂亮的衣服。对他们来说,损失的是一点长期的名誉,但与错过目标相比,那是微不足道的。如果你的情况证明不是这样,那就紧紧抓住那个招聘者,永远不要让他们走_(),那些把长期关系优先于目标的招聘者是煤尘海洋中的珍贵钻石。通过StackOverflow和GitHub寻找顶级工程师(我听说StackOverflow有一个工具可以帮你解决这个问题),检查那些在技术上有趣的公司,这些公司生产出了很好的软件,但却把财务或货币化搞砸了,而且刚刚解雇了10个顶级工程师。花时间在大学工作,协助最后一年的项目。找出好的潜在候选人,和他们交朋友,最好是当面,或者是通过远程,即使他们有offer,好的工程师也会和好的工程师混在一起。另外,他们可以告诉你,他们对你的招聘过程有什么感觉。应该是这样的。招聘工作看起来如此 “辛苦 "的原因之一,就是因为你要尽可能高效地去做。你分流的时间、脑力和资源越多,它就越容易。这些资源是否能更好地用在出货产品上,是永恒的管理问题。但如果你把大量的时间花在 "垃圾程序员过滤 "上,那就是_烧钱。至少上面列出的步骤有内在的价值,超越了招聘过程。

(*):见鬼,雇用他们

7
7
7
2016-02-02 23:38:14 +0000

我不喜欢把带回家的测试作为面试的一部分,原因有很多,比如大家已经提到过的原因–延长了招聘过程,贬低了应聘者的时间,可能会让应聘者的时间减少,也可能得不到回电,等等。求职者要的是这个地方是否适合自己,包括企业文化,团队的工作方式和解决问题的方式。你主要也是看是否适合,包括他们的工作方式、是否有合适的技能。一个带回家的测试并不能让求职者有机会评估一个职场的软性素质,雇主也无法了解到求职者是如何对待问题的。

更好的解决方案可能是给求职者一个更开放的问题,可以用任何类型的创意方式来解决。你甚至可以把它限制在X种语言上。与其把它通过电子邮件发送过来,不如邀请他们回来向自己和上层管理人员展示。这样可以给他们自主权和动力去做得很好,因为这样可以保证再来一次面试,并且表明你很关心了解他们的想法。

如果你一定要用测试来筛选哪些候选人能够进入上层管理人员的面试,我会在面试中加入测试,这样你就可以一起讨论他们的思考过程。

7
7
7
2016-02-04 22:58:40 +0000

我觉得你这个问题的措辞有点不对,但你的措辞方式反映了一个常见的招聘程序员的误区。求职者是被编程任务 “吓跑了",还是因为这个任务而把你的公司过滤掉了?

一个轶事来证明我的观点:不久前我在找工作的时候,看到一家公司的一个职位,看起来很一般。他们描述他们的编程过程的方式让我听起来很不错,但细节很少,所以我很怀疑。也许他们是一个好的工作场所,也许不是。但我想,我想我应该去看一下手机屏幕,这样我就可以弄清楚细节,看看他们是否像他们看起来那么好。唉。我想每个求职者都很讨厌求职信。我不认识这家公司,也不使用他们的产品,我能说什么呢?我上网搜索了他们,阅读了他们的网站和产品介绍,想出了如果被录用的话,我可能会在他们的组织结构图中的位置,然后写了几段 "推销 "自己。这些信息都在我的LinkedIn和我的简历上,要我提供3次同样的信息,真是太可笑了。我关闭了浏览器选项卡。5分钟后,我申请到了另一家公司,这家公司提供了一些很酷的福利,而第一家公司没有提供。

你需要确定你的求职者对你的公司有投资,特别是你的公司**,然后再给他们提供任何跳槽的机会,否则他们不会跳槽。你做到了吗

我经常看到的科技公司提供的优质福利的例子:

1.远程工作。远程工作 2. 免费赠送电脑/显示器作为签约奖金。 3. 公司为受人尊敬的开源项目做出贡献。 4. 报销专业培训和/或会议费用。 5.提供餐饮午餐。 6.弹性工作时间。 7.有机会使用新的或不熟悉的技术。 8. "初创企业文化”–即缺乏政治/官僚主义。公司股权 10.知名度:你的公司或产品的知名度。候选人喜欢提到他们工作的地方,听到别人的回应是 “哦,很好! 我喜欢他们的产品。” 11. 慈善性或革命性的公司目标/愿景。人们喜欢写出让人们生活更美好的代码。 12. 高于平均水平的薪酬。金钱覆盖了众多的组织罪恶。 13.

这个清单并不全面,但如果你的公司没有提供一个或多个类似于这个清单上的项目,那么你的招聘过程中的任何障碍都可能会让求职者去找一个能提供的公司。那么你能做什么呢?相对于繁忙的编程任务,我有两个选择:

备选方案#1–给他们支付小时费,让他们像承包人一样完成你的编程任务。这可以鼓励他们认真对待,无论是出于专业的原因还是因为………..他们得到了报酬。这样做是要花钱的,但任何形式的招聘也是一样。如果你真的很优秀,你甚至可以找到一种方法让他们诊断和修复你的代码中的一个实际bug,在这种情况下,你的钱就会得到一些有用的东西。

备选方案#2–他们可能已经写出了免费的代码,如果你问他们,他们会给你看。大多数程序员在Github、Bitbucket、Q&A网站(如Stack Overflow)上都有代码,或者可以给你提供一些他们还没有发布的代码。

为什么要让他们写一些他们不关心的代码,而你可以让他们和你分享一个激情项目呢?这比起第100次阅读同样的通用问题的另一个解决方案要无聊得多。而且,由于代码已经写好了,这可以节省你和你的候选人的时间。此外,你还可以了解到他们喜欢写什么样的代码,从而了解到他们的个性,以及他们与你的公司文化的契合度。

6
6
6
2017-06-29 00:07:29 +0000

作为直接回复波波的答案(这是公认的答案,因为这家伙自己写的,而且是自己接受的,坦白说我觉得有点可怜):

你的出发点是完全错误的。我不为你工作。你从哪里知道有人_想为你工作?你只是许多公司提供工作的其中之一。我不想为你工作。我想评估一下你的公司,如果你在所有的公司中脱颖而出,那就是我想为你工作的时候。

有十几家公司我可以工作,你只是在排队的某个地方。我先看看有什么公司,把我的简历发给他们,他们看了之后会适当的打动或者不打动,然后你通常会有一个快速的电话对话,他们向我展示他们有一个有趣的工作,我展示我有这个技能,任何编码测试might在最后的最后。为了补偿你,你必须贴出比别人高1万英镑的工资范围。反正找工作是很费时间的,能让工作费时十倍的人都是排在最后面的。如果让我在发简历和十家公司的电话面试之间做选择的话,你猜我会怎么做,

所以,结果是你找到了想为你工作的候选人因为他们在别的地方找不到工作

5
5
5
2016-02-02 20:41:16 +0000

我真的认为这可以帮助确定谁真正了解简历上所列的语言。

如果这真的是你的目标,我会考虑换一种方式。正如其他的回答所指出的,是的,你应该总是有一个编码问题,但编码问题很少会涉及到语言的细节。我看到的一些问题对测试这个很有用:

  1. 比较和对比一下Java和C语言(或者是相关的、应聘者的简历上的这两种语言等)
  2. 你认为这门语言应该增加哪些功能? 或者更好的是,你对这门语言的这个特定的提议/新近的改变有什么看法?)

看过一两道题的工程师都知道如何回答这些问题相当容易,而且只需要几分钟的时间。

5
5
5
2016-02-04 00:15:18 +0000

你的业务问题是什么?

抛开所有赞成或反对特定测试的论点不谈,这一切都归结为一种权衡–更多的过滤器会吓跑一些好的候选人,更少的过滤器会让差的候选人通过,而这些候选人可能在招聘后不久就会被你取代。你需要甩开这个最初的编程任务。

你目前是否有一个问题,即你对近期招聘的人才质量不满意?那么,你需要实施更多这样的过滤器。

你是否有_这两个问题,而且这两个问题都同样痛苦?恭喜你,你已经找到了这个权衡的平衡点。

5
5
5
2016-02-03 04:26:48 +0000

IMHO一个刚毕业的大学生几乎没有0%的概率能够完成一个入门级的高难度的编程代码。如果你的代码测试需要一周的时间来完成,那么你应该在你的要求中明确提到,你们要找的是至少有2年以上经验的程序员,因为我认为完成一个需要一周时间完成的代码工作,需要很多经验。而且我觉得如果你要找的是应届毕业生,那么你可以在网上找到很多的想法,或者你可以请为你工作的资深程序员设计一个适合应届毕业生的测试。

2
2
2
2017-06-27 16:35:49 +0000

以为我会回答这个问题,这个问题已经贴了一年了,我们坚持了一年了。

**结果*

方法的优点*

1) Take home test 淘汰掉不积极的应聘者,用真正想为你工作的应聘者代替他们。仅此一点就能使其成为一件有价值的事情,因为有上进心的人=有生产力的员工。如果他们不愿意做一个小时的任务,那就说明他们对获得这份工作的态度很重要。我在招聘过程中加入它的结果如下-

a) 有些应聘者没有完成它。不值得招聘。

b) 有些应聘者尝试过,但完成得很差。不值得聘用。

c) 有的应聘者作弊,这时就应该对其任务进行跟踪提问。我们有一个最近的应聘者就是这样做的,但他没有回复我们的邮件。

d) 有些应聘者在听说有技术任务后,突然撤回了他们的申请,而之前他们对这个任务很感兴趣。

e) 有些应聘者做得非常好,对自己的代码进行评论,并在一两次提供文档。值得聘用。

方法的缺点

1) 应聘者因为带回家的任务而放弃申请,这使得找到合适的人的时间更长。

**这种方法的结果*

这种方法的结果

这种方法的结果

我用这种方法雇佣的一个员工,后来成为了我们的明星员工。一年多后,他仍然为我们工作。他很可靠,技术上也很有天赋。

1
1
1
2017-12-01 18:50:23 +0000

不熟悉的鼠标或意想不到的键盘布局(尤其是Mac vs PC),或者不同的IDE,在能力上没有任何差异的情况下,可能会使性能大幅减慢。另外,一个完整的应用程序往往需要大量的模板代码,开发人员可能没有足够的时间来输入甚至不记得。完全从头开始一个新的应用其实是非常少见的,大部分的工作都集中在扩展或改进现有的代码上。最好是要求写一个函数,必须接受给定的参数并返回解释的结果,我建议在纸上完成,完全避免在电脑上完成。

1
1
1
2016-02-03 19:56:14 +0000

我会让他们去参加一个在线测验,在那里你可以过滤掉那些毫无头绪的人。

在我职业生涯的早期,猎头告诉我 “你要面对的是那些看了简历就把申请书放在简历上的人"。我想这种情况可能仍然会发生在那些年轻而天真的人身上,但一旦你在几次面试中被毁了,你就会知道这是个不好的建议……

-2
-2
-2
2018-04-30 15:25:14 +0000

我最近做了一个带回家的测试。它是一个完整的应用程序,需要连接到一个Socket服务器,必须模拟一个缓慢的feed。

我想学习socket,因为我想把它用于我正在编写的一个扑克服务器。但后来我把它看成是一个证明自己能力的机会。我没有CS学位,所以错过了一些理论上的东西。他们问我OOP的3大支柱是什么,想说谁在乎呢,

我的想法是想做这个工作的人就应该完成考试。