面试中的双人编程

41
我们公司在考虑取消面试流程,改为让每个应聘者与一些程序员坐在一起进行4-5小时的编程对话。理论上我觉得这个想法不错,但是我不确定如何才能让每个应聘者都有公平机会。他们的表现评分应该怎么做?应该根据程序员当天的工作来判定评分吗?
如果你们对这个想法有任何想法或建议(好的或坏的),或者如何使其成功,欢迎分享。
编辑:
结果 - 按要求提供
我们将按照以前的步骤进行第一轮面试。先电话后面谈。我们不再安排第三轮面试,而是邀请3名开发人员与我们团队的其他7名成员一起共事。我们决定让团队自己决定谁最适合被雇佣。
我们之所以做出这个决定,是因为我们相信这将赋予开发人员选择自己工作伙伴的权利。另一个原因是团队协作。我们认为拥有良好的团队协作非常重要,但在雇佣一个人之前很难判断他是否适合。
因此,我们会继续进行编程对话,但方式和初衷完全不同。
欢迎分享任何想法或对此方法的批评!(此编辑内容发布为答案,如果您认为这不是最好的方法,请随时进行反对投票)

Ted - 让我们知道你们决定做什么! - Gavin Miller
2
没有“团队适应性”,你永远无法发挥某个人的最大潜力。这是一个有趣的想法。然而,有时候与团队略有不同的人可以推动他们朝着新的方向前进。我会保留否决团队做出的决定的权利。 - adolf garlic
3
没有必要使用否决权,因为只有足够优秀的开发人员才能进入团队决策阶段。泰德的做法向团队传递了一个积极的信息,即公司信任集体判断。否决权会传递非常负面的信息,即公司只在团队意见与负责流程的经理一致时才重视团队的意见。 - richj
13个回答

1
为了保持公平,你需要让每个参与的员工准备一个问题来评估候选人。最好是选择一些他们在公司实际工作中遇到并已经解决过的问题。这是一个很好的机会来评估候选人对于问题的理解和解决能力,而不仅仅是编程技能。
我讨厌回答太具体的问题。有一次面试时,有位程序员在测试我的STL知识(我广泛使用STL),试图让我回答需要自定义分配器的问题。我曾听说过分配器但从未使用过(尤其是在windows下),我感到很傻。因此,避免做出评判性的言论。
所以我的观点是,提出一些实际问题,不要只关注编程知识的测试。如果采用“双人编程”的想法,可以评估更多的个人品质和解决问题的方法。
好问题!

我非常喜欢将公司内部存在的问题拿出来,看看他们会想出什么解决方案的想法。 - Ted Smith
@Ted Smith:这是一个很好的通用想法,但你只需要十分钟和一个白板就可以轻松实现。 - chaos
如果有人让你感觉自己很笨,也许你本来就不想和他们一起工作 :) - Alex Baranosky

1
老实说,那听起来是个好主意,尽管Jason Punyon肯定是对的,在你浪费开发人员大量时间之前,你应该进行大量筛选。通过这个过程,你可以窥见一个重要的指标,而在面试中几乎无法获得:与某人一起工作的感受。
我认为没有必要担心它是否“公平”,基于主题或者尝试给不同的候选人提供一致的情境,只要你保持正确的评估态度——这不是关于他们是否“得到了正确答案”或者跳过了一系列正确的步骤,而是关于他们展示了什么样的努力、解决问题的能力、沟通能力和灵活性。如果把它变成一个人为的测试,你将失去大部分的好处,更不用说把它从一个可以让你的开发人员获益(或者至少在此期间完成一些工作)的活动变成了对他们时间的巨大浪费。

0
Joel Spolsky有一篇出色的《面试游击指南》, 其中提到了编程任务等内容。
小知识:Joel Spolsky是stackoverflow.com的联合创始人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接