代码示例和面试?[关闭]


23

自从我来到这里以来,我已经看到了许多问题,答案是有人断言他们永远不会使用面试过程之外编码的作品集或代码样本来判断候选人,因为这样做很可能代码已由其他人编写。我为此感到惊讶。

我的观察方式是,如果我要求某人进场并在现场解决一个简单的问题,那么我将学到的东西很少。我不在像Google这样的公司寻求工作,我可以要求某人有一天的时间。但是大量的业余爱好代码可以告诉我很多东西。

是的,存在窃的可能性,但是必须对他们进行很好的训练,才能进行长达一个小时的有关该代码的讨论。并且,在这种情况下,他们必须是非常快速的学习者,以度过三个月的试用期(在此期间,我可以无缘无故地将其摆脱,而无需另行通知)。如果他们很快成为公平的优秀程序员,我就会受骗了,但我仍然有一个好的程序员。

最后,对我们公司的成本和对candidate窃候选人的好处是很小的。

这使我开始考虑其他行业。艺术家,摄影师,设计师都在使用作品集,没有人担心那里的窃。作者将根据他自己所写的章节获得一本书的资助。在面试时,您不会要求建筑师介入并为房屋绘制设计规格。

那么,什么使我们与众不同?为什么将某人放在计算机前并让他们对数据合并或阶乘计算器进行编码如此重要,而有时却无法使用我们日常使用的工具(例如Internet),为什么如此重要?代码组合的想法有什么问题?

我真的很想知道,以防万一我可能犯了一个巨大的错误,而这还没有把我烧死。

Answers:


14

我对投资组合的反对意见与公司被从互联网复制代码的人欺骗,或者更可能假冒开发人员团队编写的代码被他人欺骗的风险无关。正如您正确指出的那样,通过让开发人员谈论他们通常熟悉的项目至少一个小时,您可以使他们从头开始编写阶乘计算器,从而至少可以学到很多东西。

我对投资组合的反对是,要求投资组合消除了许多有才华的开发人员的考虑。由于与艺术家或摄影师不同,我不保留我制作的代码的版权-它属于我的雇主和/或与我的雇主签约的公司-我无法展示绝大多数“有趣的”代码。如果我按自己的时间编写代码,通常将是一个工作中的附带项目,这会使我的生活更轻松,或者使我感到烦恼,而我又一次无法在投资组合中展示。我在各种论坛上都有很多帖子,但从设计上讲,其中大多数都是相对肤浅的。有很多处于相似位置的扎实的开发人员-他们有趣的代码由别人拥有。如果你是

要求所有候选人从头开始编写代码的技术面试至少提供了一个公平的竞争环境。假设您做电话屏幕的工作合理,并且可以将候选人缩小到合理的范围,那么我宁愿作为候选人来解决您要花8个小时的时间才能解决的问题而不是提供一个没有版权问题的连贯的玩具应用程序组合。


1
+1好答案。跟进问题:如果我要求提供代码示例,是什么阻止您描述的候选人选择花8个小时来解决自己的人为问题,而不是我选择的人为问题?我非常尊重。
pdr

3
像特定的Euler项目这样的常见人为问题,比起让候选人提出自己的问题,应该可以使您获得更好的结果,并对候选人更加体谅。对候选人来说很友善,因为有一个明确定义的停止点-没有人会感到压力要花费大量时间来完善UI或添加“更多功能”。这对您来说更好,因为在解决类似问题时比较候选者要容易得多。否则,很难不受到谁拥有最酷创意或谁的视觉效果最好的影响。
贾斯汀·凯夫

当然,对于客户端Web开发人员来说,拥有代码示例是一个更合理的期望,但是我遇到过的最好的采访格式包括坐下来查看我编写的代码,分享对自己喜欢的事情的想法,希望我做得更好,等等,然后查看面试开发人员编写的代码并进行相同的操作。对双方而言,比起射击队式的采访海事组织更具价值。Google可接受的假阴性方法是我不想为他们工作的原因。它笨拙,笨拙且浪费。就像他们的JavaScript。
Erik Reppen 2013年

6

首先,我们是工程师,而不是艺术家。我们是在团队中工作,因此在我们的实际工作经验中,“我们的”代码通常是团队合作的结果,因为这是通常进行实际工作的方式。我可以声称没有太多的专业代码。

其次,我的假设投资组合中的大多数代码都是我无法显示给任何人的代码,因为它是机密的。我为个人宠物项目创建的代码不一定反映我的所有技能和典型的工作行为。


4

在我担任软件从业人员期间,我采访了很多人。我认为测验和玩具编程作业浪费了宝贵的带宽。测验和玩具编程作业仅用于测试访调员的知识。它们不是评估候选人所知道的准确方法。在我职业生涯的这一点上,我仅在并且只有在面试结束时有机会管理自己的考试时,才接受这种废话。

评估软件从业人员能力的最好方法是以平静而放心的声音与他或她交谈。要求候选人讨论他/她目前的职位要求。当候选人提出感兴趣的领域时,请他/她详细说明该领域。目的是让候选人放下他/她的警卫。没有多少教练可以为“柔和的”审讯准备候选人。或早或晚,绞索会紧缩在试图通过面试获得成功的候选人的脖子上。


2

我确实要求申请人提供代码示例,面试期间确实会引用它。但是,我通常会更重视面试中进行的白板编码。

我所做的每一次开发人员面试都涉及到白板上实施一个简单问题的解决方案。但是,有一些规则:

申请人必须在执行过程中进行讨论。

  • 我可以评估他们如何解决问题。
  • 我可以看到沟通效果如何。
  • 我可以用一个清晰​​的目标来衡量它们的速度。

我有三个问题,它们的实现都相似,我让他们知道他们可以重用或重构他们编写的代码。

  • 我可以看看他们是否可以退缩以查看大图。
  • 我可以看到它们是否实现和重构,或跳入概括。
  • 我可以更坚定地了解自己的思想秩序。

在任何面试中,所有这些的重点是试图对求职者的能力以及他们如何与工作相匹配有一个很好的了解。根据我的经验,采访的“实用”部分在这方面有所帮助。这也有助于我评估示例代码,因为我对程序的方式了解得更多。


1

代码示例是淘汰候选人的一种非常有效的方法-我可以在5到10分钟内判断出代码示例,但是即使是手机屏幕也需要15分钟并且需要安排时间(除以我的经验为基础)。

我认为对代码示例的主要反对有两个方面,并且很容易克服:

  • 要求代码示例为一些有才华的开发人员设置了人为障碍

显然,这是事实。申请或雇用过程中的任何障碍都可能淘汰理想的候选人。这里重要的是要了解您的听众-如果您有1000张履历表,那么您可以在效率方面承担一些虚假的负面评价。如果您有五张简历,则可以在筛选过程中降低效率。

但是,我认为大多数人都想不到的是,面试和录用基本上是“找到录用该人的理由”的游戏。对于任何体面的工作,都有很多合格的申请人-最后一个职位通常是一路走来没有任何危险信号的职位。容易见到最优秀的人才或不愿承担责任,但这对您的聘用没有任何好处,因为您最终会找到10个自己满意的候选人。这并不能使您更接近一个决定。

您在审查,筛选,采访等过程中收集的每个花絮都可能触发不雇用的决定。您必须在不聘用触发器的敏感性与当前(以及潜在的未来)前景之间取得平衡。如果您在一个无聊的行业中,拥有许多遗留代码,官僚主义和低薪水(通常是您无法控制的事情),那么您的触发器就需要比谷歌敏感得多。否则,您将面临从未雇用任何人的风险。

就个人而言,我发现对我来说最简单的折衷方法是提出要求,但没有要求一个代码示例。如果我得到一个,那只是评估候选人的一个附加数据点。同样,如果我以前有一个与候选人合作过的熟人,我会对该熟人的观点给予一些重视。虽然我不认识任何人,但肯定不会取消任何候选人的资格-这仅意味着我评估他们的工作会更加艰辛(如果他们参加面试,可能还会包括编码练习)。如果您的样品很差(或者我熟识的人不好意思说您),那么这几乎是无人租用的。那些提供样本的人可能与未进行初步筛选的人相比,可能会或可能不会相差甚远-取决于简历堆栈和样本的质量和数量,更多信息可能比没有信息更好或更糟。

  • 样品很容易伪造

是的,是的。简历也一样-但我们仍会收集这些。为什么?出于以下三个主要原因-简历或样本不佳很容易被录用,伪造简历或样本容易不被雇用,并且它们是面试中的好话题。我越想清楚候选人是个傻瓜,对每个人都越好。

如果您足够聪明,可以without窃好样本而不会被抓住,那么就聪明地谈论它,并完成面试-我对您如何通过筛查没有特别的疑问。这里可能存在一些道德方面的问题,但这并不是我真正的专长,因此我不会在面试中竭尽全力评估道德品质。对我来说,这实际上与我的老板要求我采访没有经过筛选过程的人成为帮忙的人相同。一旦你在面试阶段,它并没有真正的问题是如何到达那里的,因为有这么多的更多更好的信息,将在面试过程中走出来。

TL; DR-代码示例是一个很好的筛选工具,但是您应该仔细考虑是否可以要求它。一旦过筛查,对访谈的权重远高于样本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.