今天面试了一个开发人员,谈谈面试的体会
公司的ERP项目组开始招人,boss预计在下个季度初期,使公司的管理系统更加完善。量化的目标是有几个模块一定要上线运行,哪怕是有问题,也可以不段修改完善,就怕一直被问题阻挡了视线,看不到目标。于是乎,到网上发招聘公告,去人才市场招聘,在论坛里发招聘帖,也有让同事介绍,各个渠道都尽量用到。说到深圳这个地方,其实是最不缺少人才的城市。每年有大量的毕业生奔向这里,实现自己在深圳打拼出一片天下。也有做了几年想换地方的,有因为和公司不和睦,因各种原因不得不离开公司的。
总之,各种原因会导致深圳不缺少人才。我记得一个老板在喝酒后跟我说过,想要在深圳干出一片天地,有技术(指我这样的人)还不够,光有技术只能混个温饱的生活,买房子还有点压力;还有要资源,人脉资源,项目资源,有事做,有项目可做;最重要的是还要有资金。有钱了到市场上可以找到大量的廉价的劳动力,你不做还有别人愿意做。我只能苦笑。深圳是个很现实的地方,公司今天用你,就要你创造价值,创造出大于雇佣你的价值,公司才会用你,否则就自己卷铺盖走人。
在收到几十封求职简历后,我们挑选了一些,要求他们过来面试。有时候并不是你的个人简历写得不好,而是每个人有自己的喜好,看你个人简历的那个人不喜欢你的风格和排版,一般你就没机会了。这也是没有办法的。招聘的邮件从人力资源部的招聘组,转到软件开发部经理,再转到软件开发部技术负责人那里,如果每一个环节一个人,至少经历了二次过滤。人力资源部看重的是人员的稳定性,一年跳一次的一般会被刷掉。经理看重的是有没有大型项目经验,做过的项目是否厉害,足够复杂。最后转到技术负责人,技术负责人看重的是公司的项目中应用到的主要技术,都会不会,是否熟练。
下面谈一下我的几项考核
1 技术技能考核
最基本的考察方式。先出个试卷让面试的人做一下,一般控制在40分钟左右。根据答题的情况,做一个基本的评分和了解。考试的题目就是网上找的,没有必要自己去刻意制造一些痛苦的问题,让面试的人失去信心。去面试一个职位,和大学里面考四六级一样,你总要应付一下才行,不能什么都不知道。我自己有体会,做项目做久了,一些基本的没有用到知识都忘记得一干二净。页面操作就那几种模式,每种页面都有可以拷贝的sample,界面的布局和风格都直接拷贝。代码也差不多,规定好项目的结构,用代码生成器把生成的代码放到指定的位置,然后根据界面控件布局的不同进行数据绑定,输入保存,输入数据验证。
一般100分的试卷,能做到50分就认为是可以过关了。毕竟有很多知识,可能求职的人并没有用过,也没有在项目中接触到,也有可能用了但没有理解深刻。这都没有关系,试卷的目的不是想把求职者考倒。想考倒考生的办法有很多,比如著名的注册会计师考试,通过率极低,低到你不可想像。考公务员也不用说,公务员考试背后有多少问题我不知道,我就知道我这辈子不指望能考上公务员。
所以,把网上常见的题目,拷贝下来,有空的时候看一下,会给你的面试带来好的第一印象。当然,你要是能考上80分以上,又不是毕业生,这一关就轻松过了。考50分可以过关,但是后面可能会不轻松。
对于考上80分左右的求职者,技术关他已经很不错了,接下来的目的是考查项目的开发能力。把一个项目交给他,怎么来做,怎么完成,出了问题是怎么处理的。这些都会触及到平时的工作内容,工作方法和态度,问得详细了,就大概知道对方平时的工作和能力。
对于考50分以上的求职者,这时候还要再用口头的方面考查一下。把他答错的问题,再用口头的方式问一下,看看问题出在哪里。对于明确说不会的知识,就直接跳过,没必要考得人家很难堪。有些知识他可能会,答错的原因是不能用书面的方式表达出来,这时再问下他怎么理解的。理解对了,我就算他这一题是答对的。如果他不适应这种方式,那接下来还要考下常用的知识。考核下委托,特性,反射,字符串之类的知识。我不会考他委托有几种写法,这个问题太经典,也容易出极端。平时工作中,用到了这些技术没有,如果有用到,举例说明。这样一谈,就转到了第三个重点:工作经验。这是考核的重点。
2 工作经验考核
工作三四年的程序员,一般做过的项目至少有三个。问一下最近的一个项目,有用到那些技术,在项目中担任什么角色,遇到什么问题,怎样解决的。
我一直都侧重于角色这个问题,因为我注意到,工作几年的程序员,有的担任的不是主程序员的角色,还有每天撞钟过日子的,工资涨不上去,走人又不划算,所以每天都在撞钟,过一天是一天。另外,工作三四年的程序员,让他去做项目经理或实施负责人,也不太合适。如果他告诉我他是做这个职位的,我就有点担忧。我不敢轻易怀疑他的能力,但是我知道,一个人的成长是要时间的。前三年,技术如果不能熟练,到第四年,一般转做实施,需求调研,客户问题反馈之类的职务。有时候这个求职者,说话言谈举止,稍微聊一下就知道他平时的工作是什么,大概是什么角色。
我不能说程序员都是笨嘴拙舌,但据我所接触的程序员,言谈能力都不强。有时候我有这种感觉,一个项目辛苦的做完了,居然找不到好的语言和词句来形容它。问我系统有什么强的功能,我也说不出来。把用户需要的功能都实现了,也没感觉什么技艺高超,与众不同。这令我想起一个有趣的事:刚毕业的求职者的个人简历最长,工作一年后的,个人简历有点长,工作几年后,个人简历才真的有“简”的含义在里面。工作几年了,该用过的技术都用过了,没觉得有什么厉害,反而是刚毕业那会,心里虚,所以写几页,外面还套个塑胶套,生怕别人没看见。
既然一般都不会说,我就要求看一下项目的介绍,给我看一下关于项目的演示文档(PPT)。这一看,又可以看出很多细节方面的知识。人的很多习惯都是相互影响的。PPT里面如果有DOC,我一般不会放过,打开DOC看一下,排版字体字号是否统一,文档是否层次分明。曾经有段时间,我把电脑里面的DOC全面整理了一下,因为太多太乱,字体大小不一,还有的是从网页中拷贝下来的,网页中的广告也在里面。自己都没有心情去看,更不能指望以后用在工作中。
我每做一个项目,项目结束后,我都会做PPT,弥补我的演说能力的不足。自己也常常观察同事的有价值的PPT,收藏起来。还有流程图,文档,这都是一样的内容。我手里有些XLS,DOC,PPT文件做得非常专业,我做不出来,我就学,学了就用。上个月我为公司现有的项目做了一个PPT,大家也认为还不错。
每个程序员在工作人都会碰到问题,问题是可以锻炼人的。与上司的沟通,与团队成员的协作,与其他部门的同事的关系,这些都会影响程序员,也是程序员工作环境的主体。有些程序员跳槽是没有办法的,我理解。但是真的要跳之前,要想好,这个问题也许在别的公司同样存在,可能别的公司的问题比现在的公司还要多。现在哪里都是人精,没有傻子。公司也要经常问一下员工,有什么需要和不满意的地方,有没有用到你的长处。有时候程序员并不是在乎跳出去多几百块钱,他在乎在这个组织里的成长和发展。与上司不和这种情况是没有办法的,只有走人。如果还想呆在公司,就别去触犯上司。做程序员的,不会拍马屁很正常,但也要把自己的脾气管好,别轻易发火。客户再怎么刁难你,多笑一下,有话好说。即使按照客户的要求做不出来,还有经理在上头顶,你急什么。
3 加分选项
下面是我认为可以加分的内容。这些内容不是必要的,但是会为你的职业生涯加分,也会超越一般人。
1)有没有经常性的做项目总结。如果方便的话,可以share一下总结的内容。
2)有没有经常性的思考效率,流程,做事的方法。有提出过那些改善效率的方法, 或编写一些提高效率的工具和方法,并且得到项目组成员的认可。
3)技术能力增强了,有没有编写一些实用的工具或软件,给项目组成员使用,方便提高效率。 或是发布到网上,供更多的人参与使用。
4)没有没参与开源项目,或是自己有空的时候折腾一些开源源目。典型的例子是把自己认为成熟的东东,放到codeplex上,让更多的人来关注和参与
5)有没有自己的网站,平时做的总结和心得。没有网站,开通博客也行,介绍下自己的研究了那些东东,有那些感悟和心得。平时到处拷贝的东东就不要放到网上,要原创才行。
6)有代表性的通用代码(权限,用户管理),有没有考虑过。有代表性的算法(不是指数据结构排序之类,而指行业特定的算法)有没有总结过,业务模型呢,还是在大脑里只有增删查改的概念。
7)有没有对从事的行业的软件,解决方案进行阶段性的总结思考。我做报价软件,我也研究别人的报价软件,对比一下就知道差距,可以改善和学习。我们公司有ERP,我也经常对比用友金蝶的ERP,还有开源的恩信科技的ERP,东莞的浩辉ERP也开源,都比较一下。看一下。同行不是冤家,同行也不是敌人。
8)有没有考虑过自己真正的兴趣:是适合编码,还是适合与客户打交道。 市场或技术,总要喜欢一行才有得干。
9)有没有把技术用于改善公司的产品,还是整天玩技术,玩开源, 玩很先进的WF 4.0,却没有用WF做过项目。
10)有没有经常逛论坛,解答一些有难度的问题。
11)经常去哪些网站浏览网页接触新知识。msdn blog,codeproject, codeplex,cnblogs,joycode. 这些网站的rss都subscribe了吗?不一定要仔细看,有空的时候多了解一下。
12)有没有市场意识。经常去猪八戒,威客之类的网站接单吗?即使接不到单,也可以评估一下自己的能务是否可以变成钱。有朋友找你做网站,能不能搞定。
各个地方充满了机会,也充满了挑战。有学不完的知识,做不完的工作,最重要的还是保重身体。
在园子里看到一个程序员的忠告,要珍惜身体,把这句话送给所有人。程序员,请爱惜身体。