找寻伟大开发者

原文:http://www.joelonsoftware.com/articles/FindingGreatDevelopers.html

作者:周思博(Joel Spolsky) 译:Klhsieh, Chchwy, Yanting Wednesday, September 06, 2006

那些伟大的开发者都在那儿?

当你第一次尝试想找个人来填补空缺的职位,也许你会像大多数人一样,放些广告在在征才网站上,或浏览那些大型线上讨论版,最后拿到一拖拉库的求职履历。

浏览过这些履历,你想『嗯,这家伙也许能干活』或是『不行!』或是『不知能不能说服这个人搬到水牛城来。』但有件事不可能发生,我保证,绝不会发生的是你说出『哇! 这个人真是太棒了,我们一定要他!』事实上你可以看过几千份求职信,假设你知道怎么读求职信,这可不容易,我会在周五时谈谈这件事。但是你可以扫过数以千计的求职信后坦率地说从来没见过任何一个伟大的开发者。一个也没有。

Ggth02.jpg

这儿告诉你为何如此。

伟大的开发者,事实上,每个领域最优秀的人才,根本从来不曾出现在人力市场上。

平均来说,伟大的开发者在他们整个职业生涯里,总共也许只会应征四份工作。

优秀的大学毕业生会被与业界关系良好的教授拉进暑期实习,他们很早就拿到合约,从不用烦恼找工作的事儿。如果他们离开原本那家公司,通常去跟朋友合作创业,或跟着顶头上司跳槽到另一家公司去,或者他们真的决定想要,例如,替Eclipse工作,只因为Eclipse很酷,所以他们去BEA或IBM找Eclipse相关的工作,因为他们非常优秀,当然就拿到工作了。

如果你够好运,真的真的很好运的话,他们会在公开的人力市场上露一次脸,他们的另一半决定要接受地点位于安克拉治(阿拉斯加的一个港口)的医学实习,他们才会真的送出求职信到少数他们认为在安克拉治可以工作的地方。

但大部分时候来说,这些伟大的开发者(这几乎成了赘词),嗯,很伟大(好吧,这真是个赘词),而且,未来的雇主通常很快的认识到这些人的伟大之处,意思是说,基本上他们想要就可以找到工作,所以他们实在不需要投一大堆履历或申请一大堆工作。

这听起来像你想要雇用的那种人吗? 铁定是的。

Ggth01.jpg

照这个规则– 杰出开发者绝不会在市场上– 的推论结果就是那些糟糕的人– 严格来说是不合格的开发者– 常常在市场上有一大堆。他们一天到晚被炒鱿鱼,因为他们没法做好工作。他们的公司失败– 有时候是因为雇用他们的公司通常也雇用一大堆不合格的程式设计师,所以一切都意味着失败– 但有时候是因为他们实在是太糟了所以毁了那间公司。是的,有这样的事发生.

这些糟透了的家伙很难找到工作,感谢上帝,但是他们一直在找工作,而且当他们找工作时,他们会去Monster.com 一次勾选300个或1000个职缺想要赢得乐透。

数量上来说,伟大的开发者非常少,且他们不几乎曾出现在人力市场,然而无能的人,即使他们也很少,终其职涯会申请数以千计的工作。所以,好家伙,现在回到你那从Craigslist来的堆成山般的履历去吧。你还会惊讶大部分履历都是你不想雇用的人吗?

我预期精明的读者,会指出我漏掉了最大的一群人,那些扎实、能干的人。在人力市场他们上比伟大的开发者多上许多,但还没有滥竽充数者多,而且最终他们总会出现在你那堆1000封履历的少数几封里。但是大部分,几乎每一位Palo Alto的人力资源主管的桌上的1000封履历里,有970封都是来自同一群滥竽充数,每个Palo Alto工作都想应征的无能者,而且也许终其一生都如此。里头只有30份履历值得考虑,当然也许,很低的机会,其中一个是伟大的开发者。

好吧,也许不只一个。但如同寻找海底里的一根针,我们知道,存在可能性但是不容易。

我能用任何方法雇用他们吗?

当然!

嗯嗯…也许!

或者…,视情况而定!

与其把招聘人才想为『收履历,再过滤履历』的过程,你应该把它视为『追踪赢家,并让他们跟你对话』的过程。

我有三个实现的基本方法:

  1. 走到山上去
  2. 提供实习机会
  3. 建立你的社群*

(建立你的社群后面加了一个小星号, 表示『困难』, 就像George Dantzig(link) 解决了著名的数学难题,只因为他上课迟到而没有听到那个问题被大家认为无解)

你也可以提出你的想法, 我只谈谈三个我试过有用的方法。

到山上去, Jeeves!

思考一下你想雇用的人会待在哪儿? 他们会参加哪些学术会议? 他们生活在那里? 属于那一个组织? 他们都看什么网站? 与其在Monster.com 上大撒渔网,不如上约耳谈软体 的(link)求职版,把你的搜寻限缩到阅读这个网站的聪明人身上。去真正有趣的学术科技会议。 伟大的Mac开发者会去苹果电脑的WWDC(全球研发者大会),伟大的Windows程式设计师会去微软的PDC(专业开发者大会)。还有其他一卡车的开放源码的学术会议。

找找看什么是当今最呛辣的新科技。去年是Python;今年是Ruby。去他们的学术会议,你会发现那些对新事物充满好奇的先驱者,而他们永不停止进步。

到走廊上溜达溜达,跟每个你遇见的人谈话,走进技术议程并请讲员喝杯啤酒,而当你发现某个聪明人时, 砰! 你进入谄媚模式. 『唔, 这真是有趣!』你说。『哇,我不敢相信你这么聪明,而且又潇洒,你刚才说你在那里工作来着? 真的吗? 那里啊? 嗯…..你不认为你可以做得更好吗? 我想我的公司正好需要…』

依照规则推论就是不要去一般的大型求职版登广告。某年夏天,我不慎用MonsterTRAK 登了我们的暑期实习广告,它提供一个选项,只要多付一些钱就可以让美国每一间学校的学生都看得到这个工作机会。结果是毫不夸张的数百封求职信,没有一封能通过我们的第一轮筛选。我们停止花费一吨的钱去换来一吨求职信,而且当中几乎不可能找到我们想雇用的人。几天之后,我对从MonsterTRAK来的求职履历唯一的想法是 – 这些求职者不是我想要的。 同样地,Craigslist网站刚起步时,拜访者还是真的网际网路工业的先驱者时,我们曾在Craigslist登广告找到很棒的人,但是现在,每一个中等电脑程度的人都会使用它,导致太多的求职信与太低的海底捞针机率。

实习机会

有个获取潜在的杰出人才的好方法– 在他们出现在人力市场上以前就先得到他们:从大学里。

Ggth04.jpg

一些人力资源主管不爱雇用实习生。他们认为实习生尚未成熟且技能不足,在某种程度上这个想法并没有错。实习生不比资深员工来的有经验。(真的吗?)你需要在他们身上多投资一些,而且要花点时间让他们上轨道。好消息是,在我们圈子里,真正伟大的程式设计师通常从10岁开始写程式。其他同年龄的小鬼们还在「踢足球」的同时(足球是许多不会写程式的小鬼玩的游戏,玩法涉及用脚踢一个叫做「足球」的球状物体 – 我知道这听起来很怪)他们却在老爸的工作室内试着编译Linux Kernel呢。与其在操场上追逐女孩,他们在Usenet上和网友论战着程式语言若没有 Haskell 风格的型别推断是全然的堕落;与其在车库里练团,他们修改了韧体让偷用未加密的无线网路频宽的邻居,看到的图片会是上下颠倒的。姆哈哈哈!

所以,不像法律或医学领域,软体开发领域里的学生们,在大二、大三时就已经是超「棒」的程式师了。

几乎每个人找工作:特别是他们的第一份工作时,多数学生会认为等到大学最后一年再来担心这档事就好。而且大部分的学生实际上并不机灵,往往只找校园征才活动里的工作机会。名校学生在校园征才就能找到足够的理想工作机会,所以他们几乎不会费力去向外接触那些没来校园征才的雇主。

你依然可以参加这种疯狂的求才活动(这仍是好活动,别误会我的意思),或者,逆势而行,在毕业的前一两年先抓住这些伟大的开发者。

在Fog Creek (Joel的软体公司),我已经多次成功使用此法。从每年九月开始,我用上我所有的资源去追踪这个国家最好的电脑科学学生。我写信给数百间学校的资讯系所。我握有一张清单列着所有两年后要毕业的主修电脑科学学生(通常要动用点学校内关系,像是教授或者学生,帮你得到消息)。接着我逐一写信给每位找到的电脑科学学生。不是电子邮件,而是用Fog Creek公司信纸寄给他们,再用墨水亲笔签名。显然很少人会这么做,所以吸引了许多人的注意。我告诉他们我们有实习机会并且私下邀请他们来申请。我也发电子邮件给资讯系的教授和校友,因为他们的通讯录里面通常有一些电脑科学背景的联络清单可以帮我递送消息。

Ggth05.jpg

最后,我们收到可观的实习申请,都是青年才俊。近几年,每个实习我们都收到近两百封申请。我们通常把成堆的申请淘汰到剩下10位(每个实习缺),接着对余下的申请者电话面试。最后,我们可能会飞到纽约对最后选出的两三个人进行面谈。

当动用到亲自面谈时,我们有很高的机会雇用这个人,该是启动正式招聘的时候了。我们在机场碰面,并由穿着制服的轿车司机连同行李将他们送往市中心闹区(可能是他们看过最豪华的)酒店。随时有时尚名媛进出、别致的卫浴装饰可能是博物馆的典藏展品,他们可能要花点时间在五星级酒店里学着刷牙。我们在客房内留给他们一个包裹:一件T恤、Fog Creek员工写的纽约必游景点地图、2005年实习生纪录片DVD。房间内的DVD播放机放着前届实习生的有趣画面。

经过一天的面试,我们邀请这些学生留在纽约几天免费游览(如果他们想看看这城市)然后再由豪华轿车接送机场飞回家乡。

虽然只有三分之一的面试者通过这些阶段到最后面对面的面试,但让这些面试者有好的体验是很重要的。

即使面试失败回到校园,他们仍然会认为我们是个好公司,并告诉他们的朋友在大苹果待的饭店有多豪华,增加他们同侪明年也申请实习的意愿(尽管他们可能只想来纽约享受这趟豪华旅行)

在夏季实习期间,学生一般都会想像:「嗯,这是个不错的暑期差事,不错的经验,也许之后还能转成正职呢!」其实我们也在这期间决定要不要提升他们成正职,它们在这期间决定要不要为我们工作。

所以我们给他真正的工作:困难的工作。实习生从第一天就开始为我们生产程式码。有时候他们会有机会写写最酷的新东西,这让老鸟们有些忌妒,但,这就是人生啊。有一个夏天,我们有个四个实习生组成的团队,花了几个月完成了一个从头到脚全新的专案。虽然他们不是推出新的产品,但他们做出了真正的货运程式:重要功能都是由他们完成的(当然有经验丰富的头儿指导着)。

Ggth06.jpg

然后我们要确保他们玩得愉快。我们举办派对和参访。我们在不错的地点盖了宿舍让他们免费住宿,他们可以从其他公司和学校交朋友。我们也在每周举办额外的活动或实地考察:百老汇音乐剧(今年他们超哈Q大街)、电影首映会、博物馆之旅、曼哈顿渡轮、洋基队球赛,以及信不信由你,今年最流连往返的景点是洛克之巅(译注:Top of the Rock,纽约奇异大楼顶的瞭望台),它只是在曼哈顿中央一栋大楼的屋顶,你一定想像不到这会是一个令人肃然起敬的经验。一些Fog Creek的员工也可以参加这些活动。

夏天结束时,总会有几个实习生让我们相信:他们就是我们梦寐以求的真正伟大的开发者。然而不是所有的人都是伟大的开发者– 有些人仅是不错的程式师,其他人可能是仍是其他领域伟大的工程师,只是不在Fog Creek。例如,我们是一间需要自主的公司,中层管理者不多,员工们必须自动自发。过去的经验里,总有一些暑期实习生在有人指导之下表现得非常优秀。但在Fog Creek,他们拿不到足够的指示以至于手足无措。

总之,对那些我们真正想雇用的人,别等了。我们会早早发出附带条款的聘书,只要他们一毕业就能走马上任。这是梦幻级的聘书,我们希望他们回到学校和同侪比较,然后发现这个工作薪水比其他工作都来的高。

这是不是表示我们花了冤枉钱呢?其实不尽然。你看,平均来说付给新人第一年的薪资都要冒一定的风险,因为不知道这人工作表现怎样。但我们已经试用过这些学生,毫无疑问他们是伟大的开发者。我们了解他们的能耐。所以当我们雇用他时,我们比其他仅仅进行面试的雇主掌握更多情报。也就是说,他们值我们付更多钱。我们比其他雇主更了解他们,所以我们愿意付更优渥的薪水。

如果我们搞定了(通常都是),实习生就放弃其他机会,完全接受我们的聘用。有时还要多说服他一下。有时候他们不想太快决定,但Fog Creek发出的优渥聘书,保证他们第一次早上八点起床,打算穿上西装去Oracle 面试时,闹钟响起时,他们告诉自己:「为什么我一定要早上八点起床去 Oracle 盛装面试呢? 我在Fog Creek已经有个好工作等着我了。」且我的希望他们想着想着就打消去面试的念头。

在我继续下一个议题以前,我需要澄清一些资讯科学和软体开发实习的观点。这这个时代,这个国家,实习生是给薪且薪水是有竞争力的。虽然在其他领域像是出版业或唱片业,无薪实习很常见,我们仍然支付实习生一周750美元的薪水,外加免费住宿、免费午餐、免费地铁票,更不用提搬迁费用及其他福利。薪水也许比平均低一点,但加上福利又比职场平均优渥一些。我想我该稍微提一下,因为每次我在网站上谈到实习时总有人觉得我把实习生当廉价劳工。自以为是的年轻人啊!(快给我一杯冰柳橙汁)

Ggth07.jpg

实习计画是一条迎接伟大员工的大道,一条很长很宽的大路,许多人在路上迷失。我们计算出,基本上我们要为每个正职员工雇用两名实习生(我们通常超过)。如果你让实习生回学校一年,那么到正式雇用以前仍然会有两年的空窗期。也就是说,我们每年夏天都聘请了与实际上日后职缺相符的实习生数量。前三个夏天,我们试着限制实习生必须只剩一年毕业,但这个夏天我们终于里搅到我们错失了许多低年级的优秀学生,所以我们开放资格给所有年级的大学生。信不信由你,我什至试着将手伸向高中生:设立电脑教室,只要和下一代的伟大程式师建立连结,尽管也许需要六年的路要走。这是我的远程计画。

*建立社群(很难实现)

这里的想法是创立一个大社群,有一群围绕着你的公司、志同道合的聪明开发者的社群,因此,每当你的公司空出职缺时,外头就自动有一群可以接触的观众。

坦白说,这就是我们Fog Creek如何找到这么多优秀人才的方法:从我的个人网站,你现在正在读的这个。网站上的重点文章拥有数以百万读者,大多数是有两把刷子的软体开发者。有这么一个巨大、自我筛选的观众群,无论何时在网站上提到我要找人,我通常都能拿到一大叠很棒的履历。

这个项目的星号意指「很难实现」,因为我觉得我给你的忠告就像『如何赢得选美冠军a)变漂亮b)去参加选美 』。因为我真的不知道为什么网站会这么夯,或是让网站变夯的方法,或为什么读者都是最优秀的软体开发者。

我真希望我能多帮助你一些。Derek Powazek 写了一本关于「社群设计」的好书。许多公司尝试各种blog策略,而很不幸地无法建立任何观众群,所以我只能说,对我有效的办法,对你也许有效、也许没效,我也不知道你能做什么。我在网站上开了一个求职版(jobs.joelonsoftware.com)其中,350美元,你就能列出一个工作,约耳谈软体(Joel on Software)的读者会看到。

员工推荐: 有点难以捉摸

有个寻找伟大的软体开发者的标准建议,是去问您现有的开发人员。依据的是,天阿,他们是聪明的开发者,他们理当认识其他聪明的开发者。

也许吧,但是他们可能也有一位非常要好的朋友,但不是好开发者。几百万个地雷埋藏其中,所以坦白说我把员工推荐视为最不牢靠的新雇员来源之一。

另一个巨大风险,当然,就是「非竞业协定」(non-compete agreements)。如果你觉得这没什么干系,就想想Crossgain 的例子吧,他们解雇了四分之一的员工,全都是前微软的员工,因为微软威吓要对他们提起法律诉讼。任何一个有正常心智的程式师都不该签下非竞业协定,大多数签下的人是因为他们不曾想到真的会强制执行,或者没有阅读合约的习惯,或者他们已经接受了雇用,把整个家庭都搬过来,第一天上工才发现试着提出协商已经有一点晚了。所以他们签了,但是这是对雇员最肮脏的作法之一,他们通常真的强制执行,而且被强迫执行。

The point being, non-compete agreements may mean that if you rely too heavily on referrals and end up hiring a block of people from the same ex-employer, which is where your employees know the other star programmers from in the first place, you're taking a pretty major risk. 这里是说,非竞业协定可能代表你太过于依赖于员工推荐,而最终雇用了一大堆从同一间前公司过来的人。

Another problem is that if you have any kind of selective hiring process at all, when you ask your employees to find referrals, they're not going to even consider telling you about their real friends. Nobody wants to persuade their friends to apply for a job at their company only to get rejected. It sort of puts a damper on the friendship. 另一个问题是,如果你有任何招募甄选的程序,那当你要求你的员工推荐人选时,他们不会真的推荐他们的好朋友。没有人会说服他的好朋友来申请一个你公司的职位然后最终被拒。这某方面会造成友情上的污点。

Since they won't tell you about their friends and you may not be able to hire the people they used to work with, what's left is not very many potential referrals.

But the real problem with employee referrals is what happens when recruiting managers with a rudimentary understanding of economics decide to offer cash bonuses for these referrals. This is quite common. The rationale goes like this: it can cost $30,000 to $50,000 to hire someone good through a headhunter or outside recruiter. If we can pay our employees, say, a $5000 bonus for every hire they bring in, or maybe an expensive sports car for every 10 referrals, or whatever, think how much money that will save? And $5000 sounds like a fortune to a salaried employee, because it is. So this sounds like a win-win all-around kind of situation.

The trouble is that suddenly you can see the little gears turning, and employees start dragging in everyone they can think of for interviews, and they have a real strong incentive to get these people hired, so they coach them for the interview, and Quiet Conversations are held in conference rooms with the interviewers, and suddenly your entire workforce is trying to get you to hire someone's useless college roommate.

And it doesn't work. ArsDigita got a lot of publicity for buying a Ferrari and putting it in the parking lot and announcing that anyone who got 10 referrals could have it. Nobody ever got close, the quality of new hires went down, and the company fell apart, but probably not because of the Ferrari, which, it turns out, was rented, and not much more than a publicity stunt.

When a Fog Creek employee suggests someone that might be perfect to work for us, we'll be willing to skip the initial phone screen, but that's it. We still want them going through all the same interviews and we maintain the same high standards.

开发人员完全指南

开发人员在工作中追寻什么? 是什么因素让一个工作机会看起来比其他工作更吸引人? 你如何成为员工的选择? [往下读吧!](/wiki/%E9%96%8B%E7%99%BC%E4%BA%BA%E5%93%A1%E5%AE%8C%E5%85%A8%E6% 8C%87%E5%8D%97 “开发人员完全指南”)