我们公司正在寻找新的程序员。问题出在这里-有很多开发人员在面试中看起来非常出色,似乎知道您需要的技术并且拥有良好的工作背景,但是经过两个月的工作,您发现他们无法在其中工作。一个团队,编写一些代码需要很长时间,而且结果并不理想。
那么,您是否使用任何形式化的测试(有吗?)?您如何认识一个好的程序员-一个好的人?有没有简单的“好”问题可以揭示未来的问题?...或者仅仅是您对这个人的“感觉”(即主要是您的经历),然后尝试他/她?
编辑:根据Manoj的回答,这是与面试中的编码任务有关的问题。
我们公司正在寻找新的程序员。问题出在这里-有很多开发人员在面试中看起来非常出色,似乎知道您需要的技术并且拥有良好的工作背景,但是经过两个月的工作,您发现他们无法在其中工作。一个团队,编写一些代码需要很长时间,而且结果并不理想。
那么,您是否使用任何形式化的测试(有吗?)?您如何认识一个好的程序员-一个好的人?有没有简单的“好”问题可以揭示未来的问题?...或者仅仅是您对这个人的“感觉”(即主要是您的经历),然后尝试他/她?
编辑:根据Manoj的回答,这是与面试中的编码任务有关的问题。
Answers:
让他们谈论他们感兴趣的东西。我还没有遇到一个真正热衷于谈论编程但实际上无法编写代码的开发人员。当然,它们很可能存在-您的面试也应该检查能力-但是热情是我经验的一个很好的指标。(请注意,这与能够使用流行语进行“交谈”不同。)
询问他们对自己喜欢的语言或平台不满意的地方。他们将如何解决问题?他们希望在下一版本中看到什么?他们有爱好项目吗?如果他们有博客,请阅读。检查他们的一般在线状态。
雇用好人很难。
为了使它变得更好,我已经犯了一些真正的错误。在头几次不信任之后,您开始对肠道有了更多的信任。
我非常尊重史蒂夫·耶格(Steve Yegge)的电话屏幕问题,并以此为基础采访了一些成功人士。
我还认为,在阅读了Joel的游击面试指南之后,我在采访人方面变得更好(现在是3.0版,比网络版和其他版本都要先进,它必须很好)。
还有57个其他问题(截至20/11/2008)标记采访软件工程Stackexchange和一些人看起来非常相关的,所以检查出的那些。
2^16
。底部的快速通道版本只是一个可笑的模仿。
一些想法:
从几个不同的角度提出几个开放性问题:
选择任何东西-候选人声称知道的东西。提出一个简单的问题,然后根据答案,再问一个更详细的问题,并继续“挖掘”,直到达到候选人的知识极限为止。这使您有以下想法:
询问应聘者在以前的工作中如何处理各种情况:团队合作,逾期项目,调试等。答案是肯定的还是否定的?多情?智能?傲慢?
我发现最好的候选人应该是热情,老练,自信但有礼貌,最重要的是当下。您需要知道里面有人。:-)
要认识一个好的程序员,您必须是一个好的程序员。这意味着您必须非常了解编程才能看透采访中所说的和完成的内容,并且必须知道要问什么问题。
我在面试中看到候选人给出了错误的答案,但是他们的解释表明他们知道主题(因此可以通过搜索网络轻松地找到正确的答案)。要看到这一点,您必须非常清楚所要询问的主题。
另一件事是避免对有关细节的问题,这些问题很容易被谷歌搜索。这些问题仅显示应聘者对事情的记忆能力,而不是他或她是否真的具备您所寻找的知识和理解力。
我的建议是从了解很多编程知识并且具有良好人际交往能力的人那里获得帮助,以帮助进行面试。
编辑:我也在这里发表了有关采访的评论。
请记住,编程能力并不是全部。您可能拥有世界上最好的程序员为您工作,但是如果他们讨厌与其他人一起工作,您将不会发现它们非常有用。
程序员的性格应该比大多数雇主似乎都高。在我目前的工作场所中,他们在雇用正确类型的人时非常小心。
人们通常可以学会做一个更好的程序员,人们通常不能学会做一个更好的人。
使它们成为代码。给出一个可以在4或5个小时内解决的问题,并检查代码的文档,编码风格,在实际开始编写代码之前他如何计划解决方案等。他不必实际解决问题。正如乔恩·斯基特(Jon Skeet)所述,让他们谈论编程,他们选择的语言以及诸如此类的事情。您可以在一个优秀的程序员中重新表达自己的热情。询问他们关注多少个与编程相关的站点,例如stackoverflow。他们关注的博客可以很好地说明这一点。
我喜欢热情的答案。我相信您必须对自己的工作充满热情,才能真正做到这一点。
一个好的程序员除了工作外(至少一次)。他/她喜欢解决编程问题。而且,当他/她在家里找不到能够满足特定需求的程序时,他通常会自己尝试解决。
但是有几种类型的程序员。
如果您发现“黑客”也能很好地记录文档并具有出色的沟通能力,那么我相信您已经中奖了。
哦,还有最后一件事。您可能不希望有领导才能的程序员,因为他只会使用编程来启动。这意味着您迟早会失去该资源。
我在雇用程序员时会问的一个问题是:“为什么要以程序员的身份教育自己?”。如果他们犹豫不决,那将是一次致命的礼物。
那是我的意见。
我的一个朋友正在一家公司工作,在他们的招聘过程中还有其他步骤:经过初步筛选和面试后,申请人必须“测试”几天。他告诉我,即使一个候选人有需要的每一个技能和天赋,他们没有雇佣他,因为他的一个不是很好的人一起工作。
仅凭工作面试就很难认出一个程序员。
决定某人是一名优秀程序员的一些事情是:
因此,在面试中您可以找到一些小提示:
您可以在面试中进行一些测试。
但是很多时候工作环境本身也存在问题。当然,在您的组织中可能并非如此,但是在软件行业中,技术债务过大是很常见的。然后,当您雇用新员工时,由于债务而对他们的好与坏没有太大帮助。最大限度地提高程序代码的可读性和可读性有助于新手入门。
也有很多人可以合作,但是有时没有合作的方式。例如,如果所有人都是开发人员,那么他们应该做自己的工作。好吧,他们做到了。但是,您是否有一位建筑师来指导开发项目并举行会议等?普通的开发人员可能会觉得他们没有必要的权限来开始开会,他们可能会认为不时打扰别人是没有办法的。
彼此沟通不应成为最终目标。所需的交流越少越好,但是只有在可能的情况下才可以。如果您有建筑师,那么事情将变得不可能。交流的总量可能保持在良好水平,但是在相同的交流量下您可以获得更多结果。
我知道这不能解决您的要求,但我建议,在法律允许的情况下,始终应首先临时聘用(两个星期或一个月,具体取决于工作)。如果这个人值得他的盐,他不会反对,除了这对你们俩都是一种保障(您可以放开他,他可能最终会不喜欢这份工作而离开)。