我们公司一直在考虑取消我们的面试程序,让每位候选人与一些程序员坐下来进行4-5个小时,然后进行一些配对编程.
我在理论上喜欢这个想法,但我不确定你怎么能真正让每个候选人都公平.你怎么评价他们?难道他们的输入真的不取决于每个程序员当天的工作吗?
任何关于这是一个好主意/坏主意或如何让它工作的想法都是我在这里寻找的.
干杯!
编辑:
结果 - 根据要求
我们将像以前一样进行面试的第一步.电话紧接着面对面.我们将带回3名开发人员与团队的所有7名成员坐在一起,而不是将他们带回第三次也是最后一次烧烤.我们决定让团队决定谁被雇用.
出于几个原因,我们得出了这个结论.我们相信这将使开发人员能够选择他们正在工作的人.第二个原因是群体动态.我们认为拥有一个良好的团队动力是非常重要的,直到你雇用一个人之后很难说,如果他们适合或不适合.
因此,最终的结果是我们将继续进行结对编程会议,但采用完全不同的方式,并采用与最初预期完全不同的方式.
对这种方法的任何想法或批评都非常受欢迎!(这个编辑作为下面的答案发布,所以如果你认为这不是最好的方法,请随时选择downvote)
除非你在现实世界的开发中广泛使用结对编程,否则我会非常犹豫使用它.我遇到了许多高质量的专业开发人员,他们提到了对编程的强烈厌恶,他的技能在这样的过程中不会得到很好的评判.
我希望你在这一步之前有一堆步骤.为此,您需要一个出色的简历和电话屏幕.你不想花大量时间在你不应该与之交谈的候选人身上.
所以你建议进行初步面试,并可能将第二次面试作为结对编程会议? - 泰德史密斯(1分钟前)
是啊.您甚至可能会想到使用CoPilot之类的东西在网上进行简单的编码访谈.
最简单的方法是让每个人都使用相同的程序员和完全相同的代码.
你要遇到的问题是,招聘与编程不同.没有一步一步的流程可以为谁雇用正确的答案.(您可以通过多个步骤来简化决策).你必须根据他们的优势等来评估每一个,并基本上做出有根据的猜测,哪个是最好的雇用.有时你猜错了.
关于结对编程的另一件事你需要注意的是让每个候选人在那个阶段进行这种测试所需的时间.如果我正在寻找工作,我会犹豫是否要求我这样做的公司接受采访.为什么?因为那是一段很长的时间,如果我在多个地方面试,我几乎可以花几天时间去面试我甚至可能没有或想要的工作.像Google或MS这样的某些地方是一个例外,但大多数地方都不像那两个.(更不用说如果他们正在处理真正的代码,你实际上是要求他们免费做某人的工作).
我刚刚接受了一家以旧金山为基地的公司的采访,该公司以敏捷方法/等为荣.我本人要采访CEO.我有大约20年的行业经验,但从未使用TDD方法进行编程或开发.我被告知这将是一个"编程面试",但不知道会发生什么,在我们开始之前,他说他认为我可能同意所有采访都应该这样做.(回想起来只不过是一个傲慢的陈述).
无论如何,在采访中,练习是使用TDD开发课程.我花了一秒钟来调整我对整个过程的想法,因为我从未配对编程或完成TDD.虽然我在这里偶然发现我最后还是没事.但是他的回答是我没有表现出他们对编程环境所需的激进的来回性质.现在,这也可能是一种愚蠢的说法,"我认为你做的不是很好"的消息.
幸运的是,我不需要这份工作,说实话,经验让我意识到,我宁愿找到一个不同的职业,而不是成为一名软件工程师,日复一日地成对工作,当涉及到开发码.奇怪的是,有时候我和另一个人同时处理代码,所以一切皆有可能.
最后我想这是一个很好的结果,因为他们认为我不合适,我不关心他们的工作方法.但是如果我谈了几分钟关于我自己的话,我们会得出同样的结论,并且他给了我更多关于他们如何开展工作的信息.也就是说,除了让他们完成与完全陌生人结对编程的压力之外,还有其他方法可以找到一个合适的候选人; 伪造能力的虚假方式.
作为一个个人轶事,由于这样的技术,我在一次采访中被打乱了.我在面试过程中走得很远; 通过了简历检查,代码提交,这是面试的面对面部分.
我刚从大学毕业,从来没有配对编程,也没有完成TDD.他们让我坐下来做一副卡片锻炼,然后失败了.厉害!我不明白为什么面试官正在编写看起来如此愚蠢的测试*(IE"返回null;")并且他们没有解释为什么当然对TDD来说是陌生的我不知道要问什么问题.最终结果是看起来我无法用纸袋编程.
如果你打算做这种类型的运动,你需要迎合受访者,因为他们将会在他们的能力不同的地方.这意味着您将获得可能不是基于实际人才的不同评估,因此会产生严重偏差.
**现在我了解TDD,我确实理解这样的测试以及它应该如何工作,但是那个人当时看起来似乎很愚蠢!*
我几天前刚刚进行了一次编程访谈,说实话,我真的不喜欢它.在面试前一天我接到通知,然后面试官告诉我,结对编程是我最终在工作中要做的事情.我走进办公室,与一位非常资深的软件工程师配对.该公司位于旧金山,他们是着名的结对编程公司,每个人都在办公室配对.起初它看起来很好,他解释了他们使用的所有工具,他们自己构建的单元测试框架,以及一些项目.然后,他基本上写了一堆单元测试,并希望我在实现过程中使其通过.就像一个FYI,已经存在的代码库是巨大的,我会说10k行,它不像一个超级复杂的项目,但是对于某人来说只是介入然后编写代码而不事先了解类层次结构等是很复杂的我发现很难相信他希望有人能够在已经存在的10k行源代码中马上跳过.它只是一对编程访谈不匹配,较小的代码库会有所帮助.我在课程中导航和来回挣扎,因为我不记得课程名称,因为我已经被已经存在的类/代码的数量所淹没.说实话,这真让我在采访过程中做得太可怕了.最后我感觉不太好.我以前没有完成结对编程,主要是在我大学一年级的作业中.
对我来说,如果你已经熟练/舒适地配对,那么结对编程的力量可以得到利用,但并不适合面试.有时我想向我的同事提问,但后来我想如果我问了太多问题,那么他们就会认为我是愚蠢的,无法表现.如果这已经是一个真正的工作,我会毫不犹豫地问,但在一次采访中很难......你想问,因为当你被困时你的配对应该帮助你,但同时这是一次采访,所以你不能真的问多少.
这只是我对配对编程采访的经验,如果你真的想这样做我的建议:
请确保您没有让候选人使用大型代码库,使用较小的代码库,因此他/她可以最大限度地展示他/她的技能
在结对编程面试之前与候选人预先对话,你可以在遇到问题时提出问题吗,你能不能做到这一点,那你不能做什么?
尽可能详细
最后,我不建议.在结对编程中很难衡量候选人的表现,也可能存在偏见.
一家特定的公司使用一种称为极端访谈的技术.对于极端的采访,他们会带来30位开发人员并将他们分成15对.他们会解释他们正在寻找与他人合作的人.他们将根据他们与他人合作的能力做出招聘决定.
它们将为要解决的对提供问题.他们将强调他们对解决方案不感兴趣只是每个程序员与他人合作的能力.对于每对,他们将提供该对的观察者.在运动期间(持续约2至4小时),观察者将记录一个人配对的能力......而不是解决方案.
他们惊讶于有多少程序员专注于解决问题而不是合作.在15对中,他们将确定约4至6名开发人员进行第二次访谈.这些开发人员将被要求回来并与团队共度一周(他们获得报酬).一周后,他们决定保留谁.一般约一半(2至3名开发人员).
完成后,他们拥有能够进行协作的开发人员,并且在与各种工作对象合作一周后,该团队可以有效地指出谁可以有效地开发软件.这个过程既创新又有效.他们雇用的人成功率很高.