我最近一直在进行软件工程师面试。面试开始时,我都会问面试官两个问题,但至今没有得到令我满意的回答:
1. 你们面试的目的是什么?
2. 如何评估你们的面试水平?
你们的面试目的是什么?
面试官的回答多种多样,只有极少数会说「其实我也不知道我们在寻找什么样的人」。他们大部分人的看法,在我看来,都属于以下几种:
要找到“最出色的”人才;
要搞清楚候选人是否适合公司;
要评估候选人能多好地完成他们正在面试的工作(这也比较罕见。注1:在我问的 11 家公司中,只有一家公司给出了接近的回答。)
在我接受面试的公司中,只有不到 10% 说:他们进行面试是为了评估候选人如何有效地完成应聘的工作。
在我看来这点很荒谬:“适合的”招聘策略以及招聘“最好的”人才,这两点筛选过滤掉了许多人才,但这是却基于面试官的偏见,而不是候选人的能力。
如果你将评估候选人的工作能力看作是面试的重点,那么这也揭示了现在诸多技术面试的不足之处。我本人从未在面试中,接受过团队任务或优先级任务方面的能力评估,相对于在 O(n) 时间内找到回文词(anagram)这样的技术评估,这两项能力可能对软件工程师的工作更加重要。
如何评估你们的面试水平?
面对我的这个问题,大多数公司的答案是“我们不评估”。(注2:“没错,我们对自己的员工很满意,所以我要说,我们在招聘方面做得还不错”,这样的回答在我看来,其实并没有评估招聘过程是否有效。)
如果你正在优化一个项目,而你的成功标准却是“我不知道(标准),但我做了一些改变,结果似乎看起来更好了,”相信我,走出房间后你一定会被人耻笑的。然而,这点在招聘过程中似乎是可以被接受的。尽管在创业初期,团队获得的口头承诺是特别重要的一部分,但大多数公司似乎都忽视了其招聘环节,几乎没有人将工程流程应用于招聘中。
要将工程流程应用到招聘中,第一步是评估你目前拥有的员工,你可以问问自己:目前表现最好的员工是面试过程中表现最好的员工吗?如果不是,原因是什么?大多数公司都会进行绩效考核,也会保留当初面试的材料和相关数据,但很少会有公司将这些结合起来,以改进他们目前的面试过程。
这样做总比什么都没做要好,但是你仍忽略了问题的另一半:那些你面试中过滤掉的人哪?
人们常说,拒绝一个好的候选人比招聘一个糟糕的候选人,承担的风险要更小,但我不同意,在我看来它并没有道理。我经常听说,那些顶级公司缺少并渴求有才能的开发人员,而人才市场上却几乎找不到这类人,但也正是这些顶级公司,因为嫌弃候选人的学历或资历不足,或是没有通过白板测试等这个那个的原因,拒绝刷掉了一大批人,其中就有它们想要的人才。这听上去很讽刺,不是吗?即使你认为缩小(已经很小的)人才范围,仍比招错人的风险要小,你至少应该确保,一开始选定的范围是正确的。
这是一个非常艰难的问题:如果你能获得一些信息,它们足以改变你对候选人最初的看法,那么你应该先雇佣他们。好吧,这是个悖论~ 但我们仍然可以尝试缓解这个问题:
对现有员工进行面试
如果你想改变面试流程,可以先在现有员工身上尝试。如果有人没有通过面试,你应该问问自己,是否应该要解雇他。当然,你可能不会这么做。
我听说有一些公司是这么做的,但我认为,绝大多数公司都不会这样尝试。
做一个“验证集”
要确定认当前招聘策略是否有效的方法之一,就是深入了解一些被你拒绝的候选人,并判断拒绝他们是否是正确决定。
我一直在 Twitter 上关注并追踪那些在面试中被我们 Pass 掉的候选人,结果证明我们几乎都错了。—— Pulltergeist (@trek) 写于 2016 年 1 月 26 日
但这存在一些问题:
它对那些没有公共 Github/博客/Twitter 等(社交平台)的人不利。
有许多候选人的编程能力非常糟糕,而在面试过程中,要花更多的时间来发现这个问题。
尽管依然存在着问题,但我认为它对一些公司来说仍是一个好策略,特别是那些申请者数量较少的公司。
在现场面试中,这么做一定是可行的。简历则很难适用,因为存在着很多不合格的候选人,但我认为这个策略可能还是有用的。
结论
在面试过程中,大多数公司似乎都是盲目的。我发现,有些招聘人员和招聘经理甚至不知道他们在找什么样的人才,而且几乎没有人尝试更新和优化面试过程。
在少数几个关注评估面试流程的公司中,大多数关注的是找到验证候选人好坏的方法,而不是改变现有的面试流程,让那些容易在“典型面试”中淘汰的优秀人才得以通过面试。(注3:Matasano 从那些在“传统面试”中淘汰的人才那里,吸取经验教训,获得了极大的成功。)
如果你正在(作为面试官)为你的公司进行面试,我很乐意听到你的看法!如果你正在(作为候选人)接受面试,我强烈建议你向面试的公司提出这些问题,以此来看看它们对此的反应,这会非常具有启发性。
-
软件工程师
+关注
关注
8文章
217浏览量
21121
发布评论请先 登录
相关推荐
评论