如何招聘到高质量的程序员?

原文链接:How to Hire a Programmer,翻译:CSDN

如何招聘到优秀程序员,这是一个老生常谈的问题。近日著名博客Coding Horror博主、Stack Overflow创始人Jeff Atwood发了一篇文章《How to Hire a Programmer》,让我们看看Jeff Atwood对该问题有什么高效的解决方法。文章内容如下:

招聘程序员,永远没有万能的方法。在这里,我只希望分享一些多年来的我个人的招聘经验。

首先, 进行一系列简单的“Hello World” 类型的在线测试

对此,你是不是很惊讶呀?但确实有一些自称为程序员的人几乎不会编程。直到今天,仍会有一些招聘者告诉我,他们总会遇到一些应聘者无法通过最基本编程测试。

所以,任何合理的招聘过程应把极简单的程序开发测试放在第一步。并且这个测试需要在线上进行,目的不是为了证明应聘者有多牛,而是看看他到底是怎样的开发者。这一过程很有必要,如果不进行这一部的筛选,你将来可能会后悔。

现在有一些服务可以帮助你解决在线测试应聘者的问题,比如Interview Zencodility

看开发者在互联网上的个人资料

任何名副其实的开发者应该有一份关于他们工作经历的简历。它不必十全十美,我只关注应聘者在互联网上因帮助他人而留下来的点点痕迹。向我展示你在 Stack Overflow上的相关资料,凭此我可以了解你专注于哪些方面的技术信息,同时解决了哪些技术问题;给我一个你曾参与的开源代码库的链接;给我你的专业 博客地址?Tumblr?Twitter?或其他一些我不曾听过的名字?不错,我可以好好看看。向我展示你曾设计的应用,你曾工作过的网站,及你在其中担 任怎样的角色。

了解应聘者曾做过哪方面的工作及在线创造了哪种类型的贡献,对于招聘者了解应聘者适合做什么、不适合做什么有很大的帮助。

雇佣适合企业文化的人

正如GitHub,我发现很好地融入企业文化比整天埋头苦工更容易获得成功。

我们会在面试过程中和应聘者谈论哲学,我们十分重视这个过程。我们希望来GitHub工作的员工了解他们将要进入的这个企业,确认他们能很好地适应公司的环境。这个过程包括一块吃饭,一起谈论企业文化、哲学、我们曾经犯过的错误、未来的规划等话题。

早些时候,我们招聘只注重应聘者的技能,而对于他是否适应企业文化,是否懂哲学并不太关注。很自然,这些招聘并没收到很好的效果。所以现在我们不仅注重应聘者的技能,是否能融入我们也是我们考察的重要部分。

据我所知,不是所有的业务领域都有相应技术圈子,但如果有,招聘者一定要尽可能地从技术圈子中招人。因为该圈子中的技术人员会自然而然地对你企业所 做的事感兴趣,也会很容易融入到与他们意愿一致的企业中。这些应聘者较好适应企业文化的可能性是异常高的。这也正是招聘者乐于见到的。

与应聘者电话沟通 内容需结构清晰

上面提到的事你都完成了,现在是时候给应聘者打个电话了。记住这个电话不是用来聊天的,而是为了筛选应聘者。所以通话的内容是关于技术话题的,而且结构层次要清晰。如果内容不太合适,你和应聘者都会被带离此次通话的目的。内容应该覆盖技术基础,总结下来有下面几点:

● 快速编程。如:编程实现从Int数组中找出最大的Int型数据;

● 一些基本的设计。

● 脚本语言和正则表达式。

● 数据结构,如,你什么时候会采用哈希表 ,而不是数组?

● 比特和字节,如:程序员为什么问说出“oct(31) == dec(25)”类似这样的笑话。

该举措的目的,是为了到下一流程后,可以节约应聘者和招聘者更多的时间。你一定要坚持自己的立场,如果发现该应聘者多点不符后,尽早放弃该面试过程。

请应聘者参与实际项目

应聘者顺利通过了上文提到的四关,是时候进行面对面的面试了吗?现在还不是时候。

我曾见过一些应聘者,他们也顺利通过了上文提到的层层考验,但最终在实际工作中,并不能很好地完成实际任务。

如果你想确定无疑地判断他是否是一个优秀的应聘者,那就给他一个实际的项目做。我说的不是一般的、抽象的编程任务,而是你们公司现在正在进行的某产品的一个实际开发模块——你本计划交给公司实际员工做的任务。

选择一个测试项目,在理想的情况下可以在几天,也可能最多在一个星期或两个星期内完成。应聘者可以在公司里完成,也可以远程工作。我知道不是每个企 业都能把他们的项目切分成一些这样的小项目,分给应聘者在公司外完成——但可以尽力尝试让应聘者在公司内完成。我个人认为,如果你无法为优秀的应聘者分配 这样一个微项目,很可能说明你为现在员工分配的任务存在不合理性。

如果应聘者出色地完成了所分配的测试项目。恭喜你,你找到了一个高素质的应聘者,他已被证明可以出色完成各项工作。到现在为止,我所见过的通过该项 考验的所有应聘者都能在实际工作中很好的完成任务。准确地说,也不是百分之百保证,但我把该项测试看得很重要,因为在应聘者还未被雇佣前,你可以近距离地 观看他在实际项目中的表现。如果测试项目没成功,就把在该项目上所付出的代价看作一笔“退出费”,这相比请公司的4或5个人来进行一场昂贵的面试过程便宜 多了。最坏的情况是,把该项目用于下一个优秀的应聘者。

是时候与应聘者见面了

最后,你应该选一个时间与面试者见上一面了。这是必然的,但通过之前所进行的一系列测试,你应该95%地确认这个应聘者就是很好的雇佣对象后再与他见面。

我并非面试专家,但我不喜欢问一些很难的问题,适度就好。

关于如何面试开发者,我有自己的一套理论:给面试者15分钟的时间,请他陈述所擅长的领域。相比与传统的面试方式,我认为这可以取得更好的效果,困为你可以很快地探明下面问题:

● 这个人喜欢做什么样的工作?

● 他是否擅长在小组中交流?

● 他能否很好地解决他所擅长领域中的问题?

● 你的团队是否愿意和他一块工作?

每个开发者都应该知道一件事,即如何推销自己、代码以及项目。

任何事都无法绝对保证

请正确看待上文所列举的招聘流程。它们有时很成功,有时也会失败。根据你自己的特殊情况,调整这些建议,贴合你的想法,忽略某些步骤(虽然我强烈建 议你最好不要省,即便是跳过第一步)。即便在最理想的环境下,招聘人才也是一件很难的事情。一个工作机会的获得会受很多因素的影响,往往不受人的控制。正 如人们说的,人本来就很复杂。

如果把工作看作一种关系,每周需花40多个小时相处的关系,那么公司和招聘者都应该有一种信念,努力找到适合自己的对方。我们的目的不只是找到一个工作,或雇佣一个人,而是为了生活乐趣,为了创造一种友爱的关系。(编译:CSDN陈秋歌)

收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部