这几天金三银四招聘季,招聘是团队管理中重要的一环,公司也是各种的面试日常和专场,我也作为面试官参与了很多场面试。
在这里我结合我的一些经历和技术管理书本知识,综合分析一下作为面试官应该怎么去招聘技术人员。
招聘的目的
现在的IT行业,工程师可以说是最宝贵的资源了,优秀的人能够为团队增强团队技术实力,增加新鲜血液,所以招聘就是选择最优秀的人。
那什么人才能叫优秀的人呢?
在如何在阿里技术面试中脱颖而出?这篇文章中,挑选了三个最关键的因素。
技能
工作项目经验和解决疑难问题的能力,首先招来的人能够很好的完成工作,这是最基本的要求,注意,是很好的完成,不是仅仅完成。其次,能够为团队提供技术活力,带来创新力量。
潜力
主要是看对计算机相关专业的知识体系是否完整,基础是不是扎实,平时是不是喜欢专研,是否能对新鲜事物保持好奇心,这几年走下来,沉淀的速度如何,这些都是判断一个人潜力的方式。但是要注意的是,我们判断一个候选人是否有潜力主要是基于候选人之前的成长经历实事求是来看的,过去优秀的经历才能给未来背书。潜力和技能一样重要,我们不能只看眼前,团队是需要不断发展和向前的,所以我们招人应该面向未来。
软实力
这里的软实力包括性格,执行力,领导力等等,他代表了候选人是否能快速融入团队,能不能激励和影响身边的人变得更加优秀等等,这部分HR会考察,我们也值得注意。
说了这么多,其实在找人上有一个对比的标杆,就是你招的人是不是比团队中同一等级中50%的同学优秀,如果觉得没有,那么这个候选人可以不要了,团队必须不断加入更好的同学,才能变得更加强大。
面试方法
怎么去做呢?首先,要做到让候选人以一种放松的心情去对待面试,面试官则最好以讨论交流的方式来对待候选人,尽量让候选人发挥出应有的水平。
面试不要做的事
一、问一些知道性的问题比如问知不知道这个API干什么的,怎么调用,这个命令怎么用的,知道性的知识,google一下或者认真看下文档就应该知道。
二、问一些特别复杂的问题比如问一个特别复杂的算法,问一个很抽象的大问题,短时间内很难给予回答。
三、问一些假设性的问题假设你参与了这个项目,你觉得哪几个地方需要优化。
之所以说这些问题不应该问,我认为主要是因为这些很难考察到面试者的真实能力,面试时间本来就很短,有些问题有可能比较偏,有些问题又过于庞大没法一下子描述特别清楚,还有一些问题缺乏上下文,让人摸不到头脑,所以尽量避免这么问问题,另外把握一个重要原则,不要在面试中试图证明别人不如自己,毫无意义,人无完人,总有覆盖不到的地方,按照这个规则招聘,会错过很多优秀的人才。
面试应该做的事
问已经发生的事情
比如面试移动开发者,面试官应该认真看下其做过的App,具体的工作是什么,准备一些相关的问题,这里就可以看出来之前工作中的积累是什么,有多深。
问题解决思路
针对项目经验和一些学习的经验上面,应该问拿到问题以后解决思路是什么,在什么场景下为什么这么做,这里根据面试者的方案,分析的方法论,就可以大致了解面试者是否聪明,知识面是不是够广,遇到问题时会不会举一反三。
少问多听
一般刚开始做面试官的同学很喜欢以问为主,但因为大家的知识体系不太一样,成长环境也不同,直接这么问起来很难就找到面试者的优点,所以尽量让应试者自己陈述,然后以学习和交流的心态针对陈述中存疑的地方再进行发问,会更容易让应试者放松,也更容易让应试者更全面的表达自己。另外,问的差不多的时候,结尾的时候可以补充一句:您觉得刚才的面试中还有哪些我没问到的,您想再补充一下的内容?末了,再问下:我的问题问完了,您有什么想要问我的吗?
上面说了, 考察候选人要通过已经发生的是事实。这里比较推崇行为面试法,这也是《技术管理之巅》一书中所推荐的方法。
行为面试法
行为面试法,是通过对已发生的事实,提出一系列问题,例如“这个项目发生在什么时候? ” “您当时是怎样构思解决方案的? ” “这个解决方案中具体都有哪些行动项?”等,收集应聘者在代表性事件中的具体行为和心理活动的详细信息。基于应聘者对以往工作事件的描述及面试官的提问和追问,运用素质模型来评价应聘人员在以往工作中表现出的素质,并以此推测其在今后工作中的行为表现。
通过对所收集信息的对比分析,可以发现杰出者普遍具备而胜任者普遍缺乏的个人素质,即资质,也就是我们经常说到的冰山模型中水面以下的那部分素质。行为面试法可以较全面、深入地了解应聘者,从而获得一般面试方式难以达到的效果。因而这种方式也就越来越多地被企业面试人员所应用。
操作步骤
下面是几个完整的、基于行为面试法的技术面试步骤:
(1)准备(看简历,熟悉候选人):主要审查候选人的工作经历,项目经历,学历背景,所用技术栈等,提前准备好部分问题。
(2)开场(介绍自己,介绍面试时间以及流程):这个很重要,减少候选人心中未知的部分,加强信息交流,让人感到一种平等、心安的感觉。
(3)获取信息(对方自我介绍):这个过程可以积累问题,为下一个环节做准备。
(4)问问题(基于以往行为的问题):主要识别候选人能力的一个步骤,了解候选人在项目中的角色位置,以及发挥的作用。
(5)引导候选人回答问题:如果候选人对有些问题不理解或者一下子回答不上来的,可以适当给点提示,引导候选人,主要考察的是候选人解决问题的思路嘛。
(6)评估表现及各种事实根据:在过程中可以记录候选人的面试表现,如沟通能力,解决问题的思路是否清晰,技术亮点等。
(7)决定:根据面试情况,如技术能力,基础能力,潜力,沟通能力等,决定是否录用候选人。
经典问题
其中,问问题的环节是比较关键的部分,下面书中列出行为面试法中经典的8个问题,供大家参考:
·请讲述一个例子,证明你给自己确立了一个很高的目标,然后完成了这个目标。
·请讲述一个例子,你团结了一群人共同努力,并领导他们取得了成功。
·请讲述一个例子,你在多项任务中,利用已有的信息,把不利因素变成有利因素,最后成功完成这些任务。
·请讲述一个例子,证明你用事实和沟通技巧去说服别人。
·请讲述一个例子,证明你有效地与人合作,共同完成了一件重要的事情。
·请讲述一个例子,你提供了一个创新的想法,使得某一个活动或者项目取得了成功。
·请讲述一个例子,说明你如何评估形势,并且把精力放在最重要的事情上,然后取得了比较好的结果。
·请讲述一个例子,说明你如何获得了技能,并且把这些技能转化到实际工作中。
从以上例子可以看出,问问题的关键点是:要问到点子上、问题短而精、多于事实的行为问题(为什么这么做),少问假设性问题。
当然,上面只是几个经典问题,我们也可以由此引申出来其他符合我们需求的一些问题,关键是要基于已经发生的事情去提问。如:
在你最近的项目/经历最长的项目中,遇到最困难的问题是什么?你是怎么解决的?
在你经历的所有项目中,哪个项目让你觉得最值得骄傲?为什么?
那在这个过程中会不会出现有候选人夸大自己的功绩,造假等情况呢?
有可能。
但是我们可以根据一系列的方法去分辨,如果候选人没有真实经历过这些项目的话,很快就能被我们发现,这里推荐的一种方法是STAR原则,细节的东西很多可以问,很难作假。
STAR原则
·处境(situation)——在什么样的环境下
·任务(task)——接到了什么样的任务
·行动(action)——然后具体怎么落地的
·结果(result)——拿到了什么结果
我们尽量问清楚对方在什么样的环境下接到这个任务,接到以后是做了什么事情,最后的结果是什么样子的。乍一听,感觉,这不是套路嘛,是不是知道这个原则的人,只要按照这四点编故事,就能通过面试了?当然不是,在叙述过程中,我们应该分辨出STAR中的真假,那下面就举一些例子。
假的STAR
描述含糊不清
比如,我用这个方案解决了这个问题,效果很好,得到了大家的一致好评。注意,效果好是哪里好,有什么度量的标准?一致好评的体现是在具体KPI还是比如团队有个什么奖励之类的。
只表达态度和看法
我觉得线上稳定性非常重要,应该重点解决和持续跟进。如果只有这一句话,没有后面具体认为重要的解决方案的话,这部分的经验难以令人信服。
假设式描述
如果我来做这件事情,我会1234怎么怎么样。前面其实面试应该问的问题里面有提到,我们本身就不应该问假设性的问题,那作为面试者,假设没做过的事情,如果只是看思路还好,但是如果说的天花乱坠,这个时候要警惕了,毕竟说和做之间的差异是很大的。对于假设的事情,面试官是没法评估具体效果的,因为它不像过去已有的项目和工作内容,是有明显结果的,如果对过去结果存疑,后续也可以背调了解具体的情况。
针对假的STAR,我们要甄别分辨出来,引导其表达出真正的情况。
鉴别方式
更多的关心What/How/Why
做了什么事情,具体做的方案1234几步,为什么要这么做,比如图片的优化,最早肯定什么都没有,后续加cache,cache策略又可以升级,包括cache本身的算法以及多级cache的实现,图片尺寸上面后来有做了什么裁切之类的,图片格式上面后续又做了优化等等。
每个阶段不太一样,关注的重点也不一样,刨根问题问一问,会了解是不是真的做过这件事情,另外有一些可能项目做得很久说很多东西忘了,这里我分享一个观点,之前看过一句话,招聘的人中有一种人是比较好的,他总能比较清楚的记住过往项目当中的重点,这样的人在经验沉淀的过程中肯定更快一些,当然这样的同学肯定得归结在聪明一类的人了,当然能记住也说明他可能喜欢总结和回顾,平常的学习习惯应该也比较好。
细节!细节!细节!
很多关键节点的细节很重要,比如网络库的优化。如果你是一个iOS开发,一般都会知道iOS的网络协议优化常采用拦截NSURLProtocol的方式进行,然后针对传统的https协议我们会将其替换成为spdy协议或者http2协议,过程中还有一些httpdns等的优化。但如果你今天希望招聘一个有这部分网络优化经验的同学,怎么判断这个同学有实操的经验呢?你可以让他说细节上面的很多事情,比如说URLProtocol拦截request以后,针对不同的case的降级策略是什么,选择依据是什么?当时遇到了什么其他的坑没有?你自己的做法有什么缺陷?
又比如Weex的实现上面,整个渲染的流程到底是怎样的,渲染部分还有什么优化空间吗?或者说这个方案本身做了哪方面的优化?它的配套工程体系上的问题是什么,你遇到以后是怎么解决掉的,这些在了解大概思路后,都可以往深入再问一下细节的部分,认真研读以及修改过代码的同学,肯定是答得出来的。
补充问题
当出现没什么可问的情况的话,提前准备的技术问题作用就发挥出来了,当然,面试最好还是基于已经发生的事情去考察候选人的技能、解决问题的思路等。
技术问题来源可以是候选人简历里出现的技术,在面试过程中提过到的技术等。
网友评论