(给
伯乐在线
加星标,看经典文章
)
编译:伯乐在线/飞哥的咖啡
我最近一直在进行软件工程师面试。面试开始时,我都会问面试官两个问题,但至今没有得到令我满意的回答:
-
你们面试的目的是什么?
-
如何评估你们的面试水平?
你们的面试目的是什么?
面试官的回答多种多样,只有极少数会说「其实我也不知道我们在寻找什么样的人」。他们大部分人的看法,在我看来,都属于以下几种:
-
要找到“最出色的”人才;
-
要搞清楚候选人是否适合公司;
-
要评估候选人能多好地完成他们正在面试的工作
(这也比较罕见。注1:在我问的 11 家公司中,只有一家公司给出了接近的回答。)
在我接受面试的公司中,只有不到 10% 说:他们进行面试是为了评估候选人
如何有效地完成应聘的工作
。
在我看来这点很荒谬:“适合的”招聘策略以及招聘“最好的”人才,这两点筛选过滤掉了许多人才,但这是却基于面试官的偏见,而不是候选人的能力。
如果你将评估候选人的工作能力看作是面试的重点,那么这也揭示了现在诸多技术面试的不足之处。我本人从未在面试中,接受过团队任务或优先级任务方面的能力评估,相对于在 O(n) 时间内找到回文词(anagram)这样的技术评估,这两项能力可能对软件工程师的工作更加重要。
如何评估你们的面试水平?
面对我的这个问题,大多数公司的答案是“我们不评估”。
(注2:“没错,我们对自己的员工很满意,所以我要说,我们在招聘方面做得还不错”,这样的回答在我看来,其实并没有评估招聘过程是否有效。)
如果你正在优化一个项目,而你的成功标准却是“我不知道(标准),但我做了一些改变,结果似乎看起来更好了,”相信我,走出房间后你一定会被人耻笑的。然而,这点在招聘过程中似乎是可以被接受的。尽管在创业初期,团队获得的口头承诺是特别重要的一部分,但大多数公司似乎都忽视了其招聘环节,几乎没有人将工程流程应用于招聘中。
要将工程流程应用到招聘中,第一步是评估你目前拥有的员工,你可以问问自己:目前表现最好的员工是面试过程中表现最好的员工吗?如果不是,原因是什么?大多数公司都会进行绩效考核,也会保留当初面试的材料和相关数据,但很少会有公司将这些结合起来,以改进他们目前的面试过程。
这样做总比什么都没做要好,但是你仍忽略了问题的另一半:那些你面试中过滤掉的人哪?
人们常说,拒绝一个好的候选人比招聘一个糟糕的候选人,承担的风险要更小,但我不同意,在我看来它并没有道理。我经常听说,那些顶级公司缺少并渴求有才能的开发人员,而人才市场上却几乎找不到这类人,但也正是这些顶级公司,因为嫌弃候选人的学历或资历不足,或是没有通过白板测试等这个那个的原因,拒绝刷掉了一大批人,其中就有它们想要的人才。这听上去很讽刺,不是吗?即使你认为缩小(已经很小的)人才范围,仍比招错人的风险要小,你至少应该确保,一开始选定的范围是正确的。
这是一个非常艰难的问题:如果你能获得一些信息,它们足以改变你对候选人最初的看法,那么你应该先雇佣他们。好吧,这是个悖论~ 但我们仍然可以尝试缓解这个问题:
对现有员工进行面试
如果你想改变面试流程,可以先在现有员工身上尝试。如果有人没有通过面试,你应该问问自己,是否应该要解雇他。当然,你可能不会这么做。
我听说有一些公司是这么做的,但我认为,绝大多数公司都不会这样尝试。
做一个“验证集”
要确定认当前招聘策略是否有效的方法之一,就是深入了解一些被你拒绝的候选人,并判断拒绝他们是否是正确决定。