最近经过一个多月的努力,终于为公司签下一个新的项目,因此就需要组建该项目的开发团队。在反复的筛选简历和面试了50+名程序猿后,开发团队的骨架基本形成。下面就对这段时间的招聘工作进行一些总结:
1、 如何筛选简历
------------- 本文系转载白昼的系列文章“如何组件开发团队--面试篇” ------------------------------------------------------------------------------------
因为本项目开发时间紧并且使用的都是相对比较新的技术,所以在选择开发人员上尽量以相对资深的程序员为主。最开始的要求是3年以上的经验,后来在人员招聘过半后又将要求提高到5年以上工作经验。
我承认如此切分可能对有些程序员不是很公平,肯定会有没有达到我们工作年限的技术牛人,不过因为招聘也是需要计算时间成本的,要招聘十几名程序员的话,大致需要阅读几百份简历。这种简单粗暴的方法往往也是最有效的,起码在第一关能筛选掉80%不合格的候选人。
本职位的JD大概描述了十几个技术点,我们当然是希望候选人全部都具备相关的经验,不过这也不太现实,从我个人的经验我会把比较重要的技术点放在前几位,如果这几个技术点都不满足的话,我们就会放弃这个候选人。因此如果各位在今后应聘工作的时候,可以参考公司的背景和项目的背景来推断这个JD的核心要求,这样更能有的放矢。
2、 如何面试
关于如何面试的问题很多人都已经从各个方面进行过论述了,并且也没有个放之四海而皆准的方案。所以这里只谈谈我是如何面试开发人员的。
面试是一个考察候选人是否适合这份职位的过程,也是候选人初步了解要应聘的公司以及项目情况的渠道。
面试本来就是一个很主观的过程,很多人也会根据个人喜好来评价开发者。
因此很多公司就会以笔试的形式来从客观的角度先行对开发人员的技术能力进行考察。我个人是比较反感笔试的,并且也不会去应聘有笔试环节的公司。作为项目的管理者,我也知道笔试时面试初级开发人员最有效的手段之一,但是如果面试的候选人比较资深的话就不是很合适了。
下面谈谈具体面试的过程,因为面试是一个双向选择的过程,你在考察候选人的同时,候选人也在考察你。
我认为在面试过程中,招聘方是属于比较弱势的。因为我们不了解候选人,所以需要费劲浑身解数来考察候选人是否合适,如果候选人精通此道的话,招聘方很容易找到一个不是很合适的人员。
我认为在面试过程中完全没有必要以一种盛气凌人的姿态来拷问候选人。我会以平常交流的方式进行面试,毕竟买卖不成仁义在嘛。
面试开始时,我会首先介绍一下我自己,并且先以一下small talk作为开场白,比如聊聊候选人怎么来的,路好不好找什么的,消除一下紧张的气氛,让候选人很快的进入状态。
然后我会让候选人进行自我介绍,这里的自我介绍不是让候选人介绍一下什么毕业院校啊、专业啊、工作过的公司啊神马的。不认真看简历就约面试的一切行为都是耍流氓!我会让候选人重点介绍一下开发过的项目,在项目中负责的工作担任的职位。毕竟我看过的简历,没几个会很详细的介绍过项目的构架啊、使用的技术神马的。
在听取过介绍后,我会根据项目经历详细问一下候选人关于开发过的项目的情况,比如会问项目的具体实现功能、使用的技术、用户的数量以及数据库的数量级。通过听取这些问题的回到,可以了解到候选人对项目的熟悉程度并推断出他在项目中的大概定位。
然后对应中级人员会根据项目中使用的技术点,提一些相关的问题;高级人员会让他们跟我画一下项目的构架图,并讲解设计的思路。在高级人员讲解过构架图中,我会根据构架图来提出一些设计上或者构建上的问题,并且在某些点上问他们如何对现有构建进行改进来避免一些问题或者如何对现有构建进行扩展。这样交流下来就可以对候选人的技术能力有个大概的评价了。
然后会抛出一些JD相关技术点的技术问题,请候选人回答。问题可能会包括基础知识、原理以及扩展使用等等。
有人会说这类问题只要准备准备谁都知道,也不屑于回答这些问题。不过从我的角度来讲,招聘方毕竟属于弱势群体。
我们需要无所不用其极的来了解你的技术能力,回答技术问题和写代码都可以考察这方面的能力。并且如果你真的想要应聘这份工作,提前准备准备也算对我们工作的重视吧。并且这部分也不会称为我们拒绝一位候选人的重要因素,除非您答的实在太不让我们满意了。
(P.S. 这次面试过程中的确遇到过一问三不知的候选人,并且已经后了5年工作经验,简历也很符合。)
然后对应有过管理经验的候选人比如项目经理或开发组长,我会提一些跟管理有关的问题,比如项目延期、风险识别和开发人员管理之类的问题。这类问题没有什么标准答案,这里考察的是候选人的系统性思维。通过这类问题,我们可以了解你的工作风格和遇到问题时解决问题的思路。这类问题候选人回答的逻辑性越高并且兼顾的方面越多相对来说得到的评价也会越高。
最后我会让候选人对我们进行提问,可不要小看这部分时间。
第一这部分问题是你了解公司以及工作的最直接的手段;
第二这部分也是我们考量你是否想得到这份工作的依据。这部分问的多问的好的,肯定得到大大的加分。
从我的角度,我会建议候选人问些项目相关、公司相关的问题;我也会认真的对候选人的问题进行解答。
如果候选人问到了项目周期、进度以及开发技术相关的问题或者问些对公司的平台和个人的发展的问题,我会认为候选人对工作比较认真负责并且对自己有着清晰的定位,能更容易的适应工作。
最后呢,从我个人的角度来说,我要讲讲面试中的一些需要注意的地方。
第一是态度,面试呢需要有个谦虚的态度没错,但是过于谦虚了就变成了谦卑。如果你过于谦虚谨慎会影响面试官对你的评价。我就遇到一位候选人,他的态度实在是过于谦虚了,并且技术能力一般,给我的直接印象就是对其能否胜任工作产生疑问,最后综合权衡放弃了该候选人。
我建议面试应该有个端正的态度,要以平常心来面对面试官;如果真要是遇到了盛气凌人的面试官,那就去你妹,这年头工作还是有的是的,有能力到哪都有饭吃。
第二是团队合作,团队合作是招聘时考量的重中之重,起码我是这么认为的。有的候选人在面试过程中,不经意间就会表现出攻击性和不容易妥协的性格。如果碰到这样的候选人,我就会思考他是不是一个合格的Team Player,他是否会对团队产生什么不好的影响,这样的人是否难于管理。我不排除这样的人很有可能是技术大牛,所以才这么不合群。但是我们目前面对的项目,大多数都是劳动密集型的,并且很大程度上需要依照甲方的意志为转移的,所以这样的人哪怕技术很牛,我感觉也不是很适合我们这里的项目。