我正在寻找一些小型编程项目,这些项目可以给潜在的员工评估他们的编程能力。这些将是刚毕业的程序员。我正在寻找需要花几个小时才能完成的项目,他们会在面试后通过电子邮件将答案发送回去。
一个示例是采用这段文本并返回按字母顺序排列的唯一单词列表。在每个单词之后,请告诉我该单词出现了多少次,以及该单词在什么样的情感中出现了。
有人有什么好的建议吗?
我正在寻找一些小型编程项目,这些项目可以给潜在的员工评估他们的编程能力。这些将是刚毕业的程序员。我正在寻找需要花几个小时才能完成的项目,他们会在面试后通过电子邮件将答案发送回去。
一个示例是采用这段文本并返回按字母顺序排列的唯一单词列表。在每个单词之后,请告诉我该单词出现了多少次,以及该单词在什么样的情感中出现了。
有人有什么好的建议吗?
Answers:
我很早就得出结论,一个人在短时间内无法做的任何事情都可以告诉我有关该人的任何有用信息。但是每个优秀的候选人都已经写了个人项目,这些项目可以告诉您很多信息。因此,我用“给我一段令您感到骄傲并乐于为您加盖您的名字的代码”代替了具体的挑战。
他们选择的项目比任何一个小时的任务都多。然后,您可以花一个小时讨论它,以了解更多信息。
我对这种令人讨厌的胡扯感到厌倦。我去过一些地方,要求我提供代码示例,将它们撕开,然后让我从他们的系统中解释示例代码,这些示例代码似乎是由2岁的小孩子编写的。我被要求实施晦涩的排序算法,网络服务,GUI,数据结构(总是树或链表)。关于面试官的想法的各种烦人的烦恼问题都是编程中最重要的部分。
最后,这几乎没有用。评估员工的最佳方法是雇用他30天,并查看他做得如何。花费所有时间来开发测试,这不会告诉您某人日常工作的任何事情。
允许某人自己做一个实际的项目并不一定意味着是他们自己做。
每个人都较早到达接受采访(至少应该如此)。我们有一个“等待时”工作表供他们使用,直到我们准备好看到它们为止。它有八(8)个问题,这些问题用我们主要使用的语言测试申请人的知识。
我们并不是在寻找万事大吉的答案,因为任何人都可以使用面前的计算机来正确解决问题。我们正在寻找过程,他们甚至尝试尝试问题,如何找到答案。
当我们进入面试时,我们会与他们一起讨论并回答他们可能遇到的任何问题,这也可能导致他们获得正确的答案。它还使我们可以问他们如何得到他们想出的答案。
我们发现,这与先前的工作相结合是筛选候选人的最佳方法。
更新2016/06/15
我们在雇用开发人员的过程中已发生了重大变化。
阶段1:15分钟的电话采访,我们问了7个问题。前两个是“您从事的最有趣的事情是什么?” (不必与编程相关)和“您在业余时间会为娱乐编写什么代码?”。
阶段2:一个小型项目,他们可以自己完成。然后,我们与他们进行屏幕共享,他们向我们展示他们的作品。在屏幕共享期间,我们还让他们对他们的项目进行两项更改,然后观察他们的工作并使其正常工作。
阶段3:亲自面试。
这个过程使我们能够立即确定文化是否适合(阶段1)。如果他们能完成工作并实际发言(阶段2)。最后,确保它们的值符合我们的期望(阶段3)。
您可能想看看Jon Jagger出色的Cyber-Dojo。
这是一个基于Web的集成环境,旨在进行“ 测试驱动开发”的有计划的实践并了解团队动态。它具有许多小型编程任务(kata任务),并且支持从Python和Ruby到Java和C ++的多种语言。
与为生产力而设计的IDE不同,它没有代码完成,语法突出显示或自动重构的功能,因此您可以了解没有这些功能的受访者可以做什么。
最好的事情是,做完kata之后,您可以回头查看每个kata的红色/绿色进度(如果他们不做TDD * 8',也许就不行)。每个编译/测试都将所做的更改与测试结果一起提交到git存储库。
我认为将其用于面试编码测试不仅可以告诉您很多候选人解决问题的能力,而且还可以告诉他们解决问题的方法以及在不受外部因素约束的情况下使用的过程,只需选择一个适合于您希望候选人花时间的时间。
如果您想要自己的CyberDojo服务器,则可以在github上找到整个项目,甚至从那里链接有Turnkey Linux设备虚拟机,这意味着如果您已经安装了VMware Player或VirtualBox,则可以在其中运行几分钟下载设备!
为了要求人们完成一个项目,您应该记住一组要评估的特定技能,并设计项目以测试这些技能。
一个示例是采用这段文本并返回按字母顺序排列的唯一单词列表。在每个单词之后,请告诉我该单词出现了多少次,以及该单词在什么样的情感中出现了。
您在寻找什么问题?有多少种方法可以解决该问题,每种方法对编写答案的人有什么帮助?有效回答该问题所展示的技能是否与对您的业务最重要的技能相同?
我不想要这些问题的答案;我只是希望您在对一组候选人进行处理之前考虑一下答案。如果您知道自己在寻找什么技能,那么创建一个问题来寻找这些技能并不难。如果您使用别人的问题而没有完全理解要评估的内容(如果有的话),那实际上就是在自欺欺人,浪费了每个人的时间。
一个示例是采用这段文本并返回按字母顺序排列的唯一单词列表。在每个单词之后,请告诉我该单词出现了多少次,以及该单词在什么样的情感中出现了。
他们会用什么语言写?如果他们来自一所专注于C的学校,那将不会像教授Python / Perl / Ruby等的人那样写,甚至不是Java或C#。尽管如此,这是一个很好的小测试。
我实际上在面试中建议了一些简单的方法。没有技巧问题。我在这上面与TMN在一起。给他们几个执行基本任务并询问他们做什么的功能(阅读其他人的代码)。然后给他们一些基本任务(<20行),用他们选择的语言编写。对于入门级来说,这足以知道他们是否可以编码(在入门级位置)。加上面试和GPA,应该使您对需要了解的东西有个好主意。
让他们使用该语言的设计范例,为您正在使用的任何语言实现Conway的生命游戏。
Java或C#Conway的生活游戏应面向对象,LISP或F#可以运行,等等。