如何雇佣杰出的外包程序员


发布者 renyuzhuo  发布时间 1393921991000
关键字 心得体会  招聘 
我最近写了一篇文章是关于怎样雇佣全职程序员的,这部分是帮助你了解如何雇佣杰出的外包开发人员的。因为承包商不会加入你的团队,他们参加的少一点外,你会发现这两种方法有很多相似之处。

背景:我已经雇佣了差不多10个海外的承包商,下面会介绍我使用的方法。我感觉尽管没有充足的证据,但我认为这是我曾经用过的最好的方法,并且我感觉其可以再最短的时间限度内拥有最高的投资回报率。多年来,为了我的业务,我与被雇佣者签订合同,并且在此过程中我可以创造出产品。有时进展的很顺利,而有时不能甚至产生灾难。在多次提炼我的实践经验后,我总结出下面这些可以招聘到一流的外包商的方法。希望这些方法也适用于你。

方法

仅仅是简单的四步,事实上,如果你减短招聘时的步骤,你仅仅要做的只有三步。这个步骤的目的是用最少的时间和金钱而最大限度地选择你可找到的最好的候选人。请注意,在这个过程中你可能会需要花50 - 250美元,这取决于你如何评审这个承包商,后面有更详细的描述。你打算做一份工作,考察候选者,选择其中的前X名(通常至少前十)。以这为基础,你讲雇佣他们做一个简单的程序类测试。一旦他们完成(如果他们完成),你能够阅读他们的代码并且决定谁有着最好的执行效果,通常然后就将雇佣这个人。下面是具体步骤的清单。

四步确定一个好的外包开发人员。
1、公布一个工作,描述工作场所
2、准备阶段:最少雇佣10个候选者,花费一小时
3、程序测试
4、留下最好的候选者

第一步:公布一个工作,描述工作场所

目标:创建一个有趣的职位来吸引有质量的候选人
注意:我倾向于使用oDesk.com作为一个平台,在这里我与程序员签合同,这里的程序员大多是具有学士学位。

登陆oDesk.com发布工作信息。确保这个题目准确描述了你想招聘什么样的人,不要把题目设成“JavaScript Ninja”或“Rails Badass”,像“Senior Rails Developer”或“Wordpress Developer” 这样的题目看起来比抽象的题目要好。这份工作的描述应该尽可能详细。不要仅仅就是简单的一行例如“能写好代码并且按时交付”。告知他们你需要他们做什么。如果是要维护现在的代码告知他们让他们进入。如果你是一个商人或者是不了解代码,解释你想要产品做什么或你的产品现在能做什么、为什么需要他们的帮助。不要在这其中花费大量的时间,最多15分钟。

当在oDesk上招聘人时,关于这个工作,你可以提供多种选择。为每个这些部分我倾向于使用以下设置:

技能要求:

  • 可以使用自解释。如果你有一个框架职位(Rail),写“Ruby on Rails”、“HTML”和“JavaScript”等。
  • 如果是其他技能,写下这些技能。

  • 你将怎样付费
当做不确定结束日期的工作例如新功能开发工作可以按小时付费
当能确切具体工作时可以付给其固定的费用,例如如:安装WordPress和配置主题来看起来像X。

  • 估计工作量
每个人都不同,但我通常让他们在一起一段时间。

  • 经验要求
总是选择有一定经验的或者是专家级人物。选择新手将使你做出很差的工作并且最终你后来会换人,这将花费2X的费用。
  • 市场知名度
任何人能找到这份工作(除非我将雇佣一个特别的人)

  • 资格要求
自由职业者类型:无要求
最低的资料背景:无要求
有这个要求的原因是因为有大量的人在oDesk上以前从没有完成一份工作。并且有时某些人在唯一的一份工作中得到一份很低的分数,不是因为他工作的不好而是因为这个人在管理这个产品时做的不好。不要将他们记录在外。
位置:
这个问题可能是微妙的。像我这样的人不关心他们在哪里,但这取决于你。我通常不关心这一点。然而,如果你正测试世界不同的地区为你工作的最好那么选择他们。
英语水平:百分之百
这一点很必要。很多承包商在ODesk会说他们会说英语的的五分之四,但是当你与他们交谈通过电子邮件,IM或Skype或谷歌聚会你会意识到他们实际上更像是一个五分之二或三。能够有效沟通是成功的关键。没有它,你在打一场艰苦的战斗。
  • 可考虑的问题
我个人不增加这部分,因为无论你是否会编程,但程序工作是技术性太强的。

现在发布工作吧。

等48小时然后进入第二步,这部分时间内会有人申请这部分工作。


步骤二:准备阶段:最少雇佣10个候选者,花费一小时

目的:找到最好的人,雇佣他们以便进行下面的步骤。

你总共最多可能收到来自世界各地的25-60封申请。你需要做的第一件事就是从按照下面的列表剔除不适合的人选。下面就是怎么做。

  • 去掉那些在英语方面有困难的人。这是一个必要的条件。如果你现在就不能和他们交流,以后还怎样能交流呢?

  • 去掉任何没有能力做这项工作的人。例如如果你想要找一个Rails开发人员而这个应聘者没有这个能力,在列表中去掉他们。你的目的是找到最有能力人。

  • 去掉任何看起来和不适应这项工作的人。例如你想要找一个为你开发游戏的人,那么那些专注一web开发的人员就不适合你。

  • 去掉那些要价超出你预算的人。也许那些要价每小时155美元的人真的很好,但如果你的预算可能是每小时25美元。与那些每小时要价155美元的人交流是没有意义的,即浪费他们的时间也浪费你自己的时间。

在48到72小时后,你也许就把你的名单列表最少减少到了只剩10人了。

这一部分你就可能真的要花钱了。如果平均的每个人每小时要付费5-25美元,而你大约每小时可以花费50-250美元的话,你可以雇佣10个人。没错,我是认真的。然而,当你雇佣他们的时候你一定要告诉他们你打算完成这项工作不超过一个小时。你要带他们进入到第三步以便确保他们能完成这项工作。当他们要做这项工作时,支付给承包商一小时的费用。这给承包商一个诚信的印象以防止他们有给你免费工作的印象。如果你要是给外包商、自由人、承包商免费给你工作的印象,你将立刻失去这些好的或者是一流的开发人员。如果你付给他们费用,他们将对待工作更严肃认真。

在这个过程中有时会发生一些有趣的事,平均来说50%的申请者都没有参加这一部分的考察,没有准确的原因,但我估计这仅仅是因为他们不知道怎样在测试中该怎样去表现。第三步就是确切地找出那些能做别人不能做的工作的人。

第三步:程序测试

目标:确定这些候选人是否有解决问题的代码能力。看这些候选人代码质量。

你将注意到这一部分是与How to Hire A Programmer 的步骤三是十分相像的,仅仅一点变化而已。但尽管这两部分是很相像的,但即使你阅读过How to Hire A Programmer ,还是请继续阅读下去因为还是有一些关键地方是不同的。

在代码考察中,这些候选者将被测试用指定的代码完成实际的问题。这些代码考察最多花费这些有经验的程序员一小时来完成。对外包商最多仅仅支付一小时的费用。他们想用多少时间完成测试都无所谓,但是我将仅仅支付一小时的费用。目的很简单:确定候选者是否能写出需要的代码。

编程是最公平的评判标准,不要求这个问题是太困难的,(要是简单的问题),而是因为你可以看出这些人写出的代码的质量。并且可以看出来一系列的问题:
  • 候选人的沟通能力好吗?
  • 候选人知道怎样理解为题的描述吗?
  • 候选人知道怎样使用库函数吗?
  • 候选人对代码有足够的的耐性吗?
  • 候选人知道怎样写代码吗?
  • 候选人懂得坚持并最终成功吗?
我通常通知候选人,将在24小时内解决问题。编程的挑战是发布在GitHub / BitBucket上的,都共享一个存储库中所有库函数。每个人的机会都是均等的,是的,这意味着通过求可以查看别人的代码,这很有趣因为如果有人想要作弊是很容易的。如果有三份很接近的答案,则第一个人就很可能是第一个完成的人,没有什么人可以在相同的时间内写出一样的代码。

复查这个考察是很有必要的。候选者被要求在完成时给我发邮件。这里有几个我创建的比赛:
NodeJS Example
Android Example
Rails Example

你自己随意进入哪一个。如果你进入任何上面的一个网址,你将看到每一个都有申请者的执行过程的每一个步骤。如果申请者不确定怎么做,他们可能问我要求说明或者是google一下来寻求答案。当申请者完成时将提交答案并且我将查看他们的答案。

这个挑战比赛真是太棒了,他体现出了申请者的太多方面了。也就是说,他们能按时编写出代码并且完成任务,这也给我机会去看出他们是不是真正的hack或者是真的代码写的很好。我发现平均超过60%没有完成任务——他们根本就是不知道如何做。在完成任务的40%中有20%真正正确地完成了任务,这么看来仅仅有一两个申请者完成的算是很好的。如果你还有很多候选者可供选择,那就再找跟多的问题。

同样重要的,注意到ODesk要求候选人安装监控软件,定期截图他们的工作的屏幕,这样您就可以检查工作。这也允许我监控他们的进展情况和评估他们的解决问题情况。

当他们做这个测试时普遍关注的是:如果他们作弊怎么办?如果他们找他们的朋友或其他人做怎么办?这是一个可能性,但我把这看成一个真实世界的问题。如果有些时候程序员会遇到问题不知道该如何解决因此他们向他人寻求帮助。他们找朋友,在网上找一些开源的代码并且修改他们,这是程序员的世界。如果在家或者是在办公室谁关心这些呢。如果你是真正的黑客我很快就会知道。如果你被录用了,我将很快发现问题,你要是否要保持自我这取决于你自己。如果你是一个不能发现这一点的商人,你也会在其他方面看出这一点,例如时间预算等。任何危险都存在,很可能出现问题,认真评估。

如果申请者未能完成程序挑战,这是立刻就显示出来的危险信号。这个测试对于有经验的程序员一个小时完成时很轻松的,如果这个程序员不能按时完成或者是完成这项工作对于他来说是泰坤难,那么这个程序员就不适合这个职位。如果你能用好我提供的工具包这些工作就不应该是问题。基于这一点,我建议终止面试那些不能完成工作的候选人进入下一个候选者的面试。

对于那些能正确解决问题的候选者,我将看他们的代码,如果一切都ok,我会将它们化为可能的雇员。

如果你不能写代码而又十分想参加这个过程,我建议你找一个能编写程序的朋友,亲友或同事来帮助你。支付给他们时间两倍的费用以便你能得到他们的关于候选者的建议。向他们解释这个过程以便让他们理解他们要做的,一个代码评论者。如果你应用这个方法,你将得到别人关于每个代码的评判“好/一般/坏”,不好意味着这个程序员不行,不要雇佣他。一般意味着还可以工作,但不是很杰出,好意味着这个候选者能胜任这项工作,雇佣这个人吧。如果是一般,也是可以雇佣的,因为有时你需要的是赶紧完工而不是要产品完美,仅仅是一些要赶快完成工作。一般的人适合于测试一片市场等,仅仅要求产品快点发布。然而,如果可能的话,还是要找那些好的程序员。

如果你没有找到任何人来胜任工作,从新发布招聘启事,必须要找到可以胜任这项工作的人。是的,也许这花费了更多地金钱,但是提前完成工作可能还会比拖延着不能完成工作要花费更少的钱。

第四步:留下最适合的候选者

目的:雇佣最合适的人来完成这项工作

在先前的步骤中,你已经通过代码考察和沟通考察已经选出这个适合工作的人,这时就应该准备好要雇佣这些人了,你要有两三个人去抓紧办这件事。

如果你为一个职位招人,找到这个最好的候选人,然后让其他两个人了解到你想和他们继续联系,和他们简短的接触因为他们可能对你印象很深而你以后还可能扩大你的团队。这让你未来和这些候选者的联系的大门可以打开。如果要雇佣两个人,雇佣最好的两个。你知道这的要点了。

如果还是没有招到足够的人,继续发布招聘公告。

总结

雇佣承包商可能是很有挑战的事情,但如果你按照上面的步骤进行,你会发现你可能找到了很好的外包商并和他们紧密联系,以后就可以减少这些中间步骤了。

我真想说上面的方法是我自己想出来的的,但我不能。这用编程挑战来考察候选者的灵感是来自于Integrum公司的名字。