从一月份到现在,面试了二十个左右的研究生,满意的很少,我开始去思考,到底是自己的要求过高,还是自己的面试方法有问题,抑或真的是现在的研究生的素质越来越低了?
我理想的人选,首先,我希望他对测试感兴趣,有测试的感觉,测试并不是一件很有创造性的工作,但其中的乐趣,是很多coding高手所无法体会的,但需要发现其乐趣,必须要喜欢上测试,才会更有效地发现软件存在的隐藏问题。其次,我希望他有一定的技术基础,对于在校的研究生的技术水平,我的要求不高,只需要掌握最基本的SQL语句,会简单得Linux命令,懂得用Java或C写一个简单的程序,这些知识,是需要在项目中使用到的技术,同时也是学校的基础课程上的东西。最后,是他的态度和性格,我希望他是一个责任心很强、具有良好沟通能力和团队精神的人,测试根软件开发最大的不同是,开发工程师可以只关心自己所负责的模块或功能,而测试则要把握全局,需要跟不同的人去沟通,发现问题需要协助不同的人去定位和解决,测试是一个团队的工作,我希望招聘进来的人,能够很快地融进我们的团队中,谦虚地学习,踏实地工作。
我的这三个要求,似乎真的很高,因为当我以这三个标准去衡量我的candidate的时候,我总是满怀希望地开始跟他们交谈,而又失望地与他们告别。首先是笔试的题目,至少有一半人,最基本的SQL和Linux命令都是没有把握地写进卷子的。“这份题目你觉得怎样啊?”我笑着问他们。“都是在学校学过的,不过忘记了,只要给我时间,我很快就会学会的。”果然都是名牌大学的研究生,那样的自信。“我们的工作要求有一定的JAVA/Oracle/Linux技术基础,如果给你时间,你要多长时间可以掌握呢?”“一两周就可以了。”“我们的招聘要求里面有些清楚这些要求吗?”“有。”“你从发简历到面试,大约多长时间了呢?”“两周左右。”“那你为什么不利用这两周把招聘要求中的技术都好好温习一下呢?”我仍然笑着问,只是接下来大多都是沉默。我发觉这个问题,真的能问倒所有人。其实,我不是想为难他们,只是,他们都是名牌大学研一或研二的学生啊,这些基础我当年大学三年级就已经可以灵活运用了,这些命令我也经常会忘记,但是,每次自己去面试之前,都会花些时间认真地复习一下招聘要求中的技术,有备而战。其实,我想看的是这个来面试的人,是否在来之前有认真地准备,我只是想看他对这个机会的态度。插一条记录到数据库中,居然有人用add,真叫我心疼!同事批评我说,别总拿态度来作要求,只要你给他培训两个月,什么技术不会?用add还是用insert into有什么关系?只要他足够聪明就可以了。态度真的不重要吗?我真的不需要他们有技术基础吗?他们真的可以没有任何基础就进来,这些技术,我两周的培训就可以让他们掌握,只是,他们的态度,我没信心让他们在两周之内扭转。当他们可以很高效地干活的时候,恐怕他们又要马上回学校去了。如果我培训的成本,已经远远高于我自己做的成本,那么,我宁愿自己辛苦一些。不要怪我以态度作为评判的准则。
简历,是用人单位初步刷选的一份资料,有些简历看上去就像一份草稿,或者是所展示的资料并不符合我们的要求,通常我们都会放弃进一步去了解。有些人的简历做得很漂亮,好像什么都会,而且还有很多的项目经验,看上去似乎很有吸引力,但简历给人的印象未必就是真实的。每个公司都希望招聘进来的人可以有一定的项目经验,因为这意味着他们一进来就可以给公司干活了,可以节省很多的培训成本。我也喜欢有项目经验的人,我还很喜欢跟他们聊他们曾做过的一两个项目,因为在在这个互动的过程中,你可以看出他的思维、表达和技术。简历中的项目经验可以是假的,但在面试的时候就不能假了,在面试过程中的交流足以让我们判断出这个人的技术水平和思维能力。很多人,在简历中写着正在做的项目或一两个月之前做的项目,当我们问他有关系统的框架或某个功能的流程时,表达起来却是不够清晰,再深入一些去追问,回答就差强人意了。我在想,是因为他们不善于表达,还是他们本身没有深入理解过自己所做的项目,甚至是自己根本上就没有这些项目经验?企业或者也应该思考一下,是否应该给没有项目经验的人一些平等的机会,以免他们投其所好,将简历粉饰得很漂亮,但事实上又没有那样的真实。我可以理解他们,因为简历写上如果连项目经验都没有,可能他们就连面试的机会也没有了,只是,有了面试机会,但如果没有把握这个机会的实力或者没有做好把握机会的准备,有了也是白有。
我最看重的,是这个人是否具有测试的感觉以及兴趣,我希望他对自己的发展和选择是清晰的,我希望他能清楚自己为什么来应聘,如果他来只是纯粹的找一个工作机会,或是冲着公司的名气而来,而对于测试是什么,自己所选择的这个测试机会是否有利于自己的长远发展都不清楚,只是为了工作而工作,是否能够将他的潜力挖掘出来呢?我没把握。而这样的candidate,偏偏又不少。