游戏邦在:
杂志专栏:
gamerboom.com订阅到鲜果订阅到抓虾google reader订阅到有道订阅到QQ邮箱订阅到帮看

阐述找到“潜力股”程序员的招聘策略

发布时间:2012-08-20 17:14:16 Tags:,,,

作者:Ted Spence

雇佣到优秀的程序员的秘密是什么?你是不是一定需要谷歌式、微软式、Scrum式或敏捷式的面试?这些都有一定作用,但记住,即使是这样的面试,也有可能让某些优秀人才变成漏网之鱼。

Moneyball策略

你们当中可能有些人不太熟悉《Moneyball》,这是Michael Lewis写的一本书,内容讲的是一家高明的棒球俱乐部如何雇佣到受低估的棒球运动员,然后挖掘他们的潜在价值。

Moneyball-Michael-Lewis(from audiobooksonline.com)

Moneyball-Michael-Lewis(from audiobooksonline.com)

以下是具体做法。

这家名为Oakland As的俱乐部使用了非常高明的策略,发现某类不太吸引市场的运动员。他们想出了一套评估这些运动员的价值的方法,然后专门定位这类“潜力股”。因为其他俱乐部不需要这些运动员,Oakland As可以低价雇佣他们,让他们有机会为俱乐部效力。

这对程序员也管用吗?最近有报道说,《IEEE Spectrum》杂志对话作家Stephen Cherry讨论了这一话题。Cherry写了一本关于显然任胜的求职者和声称没有找到胜任求职者的公司之间的关联。他称公司写的工作描述是“排他性的”,这样就可以过滤掉不少求职者,然而也错失了合适的候选人。

这看起来显然就是“潜力股”们的机会。

我要与读者分享另一个我发现的秘密:90年代时,我曾短暂供职于一家编写简历处理软件的公司。在那时,公司在报纸上登载了诱人的工作后,会收到成千上万的纸质或传真简历,公司必须想办法过滤掉大量不符合的简历,只保留小部分适合的简历。我写的软件根据出现在简历上的关键词过滤候选人。我们写了许多可以帮助人们找到复杂而非凡技能的研究工具。

但你知道公司是怎么做的吗?基本上,每家公司都会筛选出“学士或硕士学位”和“有工作经验”的简历。这两个条件很容易、很快就能找到,从而帮助他们大大地缩减了候选列表。通过排除一些不具有这些关键词的简历,忙碌的HR经理可以将注意力放在10-20%的简历上。

直到现在,公司人事也是这么做的。看看互联网上的招聘信息,你肯定会发现:

1、“持有计算机科学或相关领域的学士学位证书”——这在今天是非常普遍的;十年以前大部分招聘信息写的是“或相关经验”。

2、“3-5年从事[当下的热门技术]的经验”

3、“3-5年从事[开发方法]的经验”

4、在游戏行业,“必须参与开发至少3款已发行AAA游戏。”

如果你不知道这些,也情有可原。但是,C. Northcote Parkinson在1958年出版的书《Parkinson’s Law》中已经写了这个策略。他说的内容是,如何列出一份相当详尽又极具挑战的工作描述,结果只收到一份申请,不必再浪费时间评估普通大众了,直接雇佣这个人就行了。

当我浏览了一份长达两页、对候选人提出许多特殊要求的工作描述,我可以清楚地感觉到,HR专员为了减少他们要看的简历,真是尽心尽力了。

现在我们已经了解了招聘的那些事,我们可以回到软件行业,想想如何制定一套招聘程序员的理论。

谁的价值被低估了?

既然你已经读了这么多,我就告诉你,软件行业往往会高估容易衡量的东西。第一,如果你想要价值,你就不能太重视有高学历的人,因为行业对这类人的需求量很大,他们早就像俏货一样被立即抢购了。

所以,你应该寻找有天赋但因为某些原因没有上大学的程序员;寻找开源代码的程序员或黑客,或在自己在家修改脚本而专业却是英语文学的人。

第二,我们往往会太注重候选人应该具有从事某项热门技术的经验。技术行业的变化发展是很快的,所以你要寻找的程度员是从事过五年前的热门但现在是冷门技术的人。

记住,好的程序员能够理解严格的算法,不太费力就能在不同语言之间转换。所以,根据开发语言排行榜,C++和Perl的流行度正在走下坡路,也许这就暗示你:要雇佣那些从事过C++和Perl的程序员,即使他们的技能已经“过时”了。

programmer(from jobsbywork.blogspot.com)

programmer(from jobsbywork.blogspot.com)

第三,我们高估了那些在特定领域有X年工作经验的人。可能HR经理希望雇佣有5年或10年经验的人,但相反地,我们可以寻找有可能创造惊喜的人。

举个例子,有一个年轻人正想着找机会证明自己,而另一个年长的人正在寻找明确的工作机会。这两个人对那份空缺职位的积极程度或渴望可以驱使他们更加卖力地工作,创造出比拥有某个工作经验年限的人更多的价值。

所有这些标准都有一个共同点:在简历上可以衡量的东西都被高估了。被低估的是没有出显示出可衡量的“证书”、“学历”和“X年的工作经验”的东西。

如何利用这一点?

不太可能按这个Moneyball策略雇佣到所有程序员,但有趣的是,由这些人组建起来的团队有一个人数上限。当团队成员超过6-8人时,新的动态就开始成形了,这时团队往往会分裂成多个独立的小团队,即使他们在名义上还是一个团队。

这意味着你可以安全地建立起新的团队,让值得信任的、有能力的、资历深的成员指导资历浅的成员,然后使用Moneyball策略激发团队的生产力。

显然,我们必须吸引不同的候选人,然后有区别地面试他们。首先,你的职位描述应该非常开放自由,不要罗列一大堆要求;相反地,要描述你是做什么的,让工作看起来充满激情(你的工作当然令人兴奋!)。描述你的工作室文化和要做的工作,但要省略所有特定工具的细节:

寻找有才能的程序员,会给手机和网络客户编写多人游戏的UI脚本模块。将在2-3名前端团队成员的小团队中工作,一般是为新创意制作原型和为A/B测试执行新图像特征。

这份职位描述的目的是获得大量简历——可能比你以传统方式得到的还多。然后,不要根据经验过滤简历;相反,要读每一封求职信!联系那些求职信的内容中肯,且又充满激情的人。确保他们知道如何进行口头表达并描述他们对那份工作的渴望。

先做电话约谈。搞清楚这些人对工作机会的渴望程度,然后衡量他们对工作的胜任程度。测试他们是否有足够积极性自己做研究。

programmer freshman(from auraiip.com)

programmer freshman(from auraiip.com)

管用吗?

当然管用!招聘工作中的肮脏秘密是,招聘专员每天都栽在这个策略上。他们拿到一大叠简历和职位描述,然后联系有希望的候选人,问他们是否可以对简历的语句“做一些改变”,以便突出某些特点或强调某些让他们看起来更胜任的东西。

以下是一段常见的情境:

招聘专员:你好。我看了你的简历,认为你非常适合我们空缺的这个职位。第一个问题是,你有没有从事Java的经验?

候选人:呃,去年我用Java写了一个程序,用来组织我的家庭媒体文件服务器。

招聘专员:太好了!将那个程序列出来,然后发给我更新后的简历,可以吗?

这段对话说明了落选的简历和得到offer的人之间的差别有多么微妙。太注重简历细节的公司会错失非常有才能但恰好简历上没有关键词的候选人。

在EEDAR(游戏邦注:即电子娱乐设计与研究中心),我决定采用新的雇佣方法,即定期地将资历浅的成员纳入我们的团队当实习生,然后给他们机会展示自己的才能,最后成长为全职的程序员。我寻找对编程特别有兴趣、但缺乏经验候选人——他们当中许多人都工作得非常出色。

所以,这个策略显然行得通。但是对你的情况适用吗?你必须:

1、有耐心,有应便力,能不断地尝试实验,以发现市场遗漏的优秀程序员。

2、花时间和精力考察他们,看他们是否确实合适。人们经常忽略这一点:在《Moneyball》一书中,并非所有候选人的才能都能立刻显现出来!有些人需要指导,有些人需要时间,有些人确实不合适。

3、当你犯错时,你要能够承认。如果程序员看起有前途,但在你的公司中不能施展才华,你必须诚实直率地承认,然后放他们去适合他们的地方。

4、最重要的是,愿意接触那些可能很难找到对口公司的人。

如果你能发挥你的作用,就有可能发现有才干,但被市场忽略掉的人才。

后记

我还想提一个可能有关的想法。最近,“非主流面试”似乎成为行业的惯例,如微软面试、Guerilla 面试和谷歌面试。

这些面试策略都极其有难度,往往会淘汰一些脑子转得不够快的人,或对某类人际交往感到有压力的人。这些面试系统地排除了某一类人,这是完全有可能的,但我对此尚没有任何确切的改良建议。希望读者们能思考一下吧。 (本文为游戏邦/gamerboom.com编译,拒绝任何不保留版权的转载,如需转载请联系:游戏邦

Opinion: Programmer Moneyball

by Ted Spence

What’s the secret to hiring great programmers? Do you have to have a Google-style cafeteria, or Microsoft-style interviews, or Scrum or Agile? All of those things help, but keep in mind that it’s also possible to find great talent the major companies let slip through their fingers.
The Moneyball strategy

For those of you who might not be familiar with Moneyball, it’s a book Michael Lewis wrote about a clever baseball club that hired undervalued baseball players and got great value out of them.

Here’s how it worked for them.

The club, the Oakland As, used clever statistics to discover certain kinds of players who were not being efficiently targeted by the market. They worked out an estimate of how much these players should be valued, and ruthlessly targeted them. Because these players weren’t in demand by the other clubs, the Oakland As could hire them inexpensively and give them a chance to play great baseball.

Think this would work with engineers? It’s gotten some press recently. In fact, IEEE Spectrum recently interviewed author Stephen Cherry about this topic. Cherry wrote a book about the disconnect between job applicants who are clearly qualified, and companies who claim there are no qualified applicants. TL:DR; he claims that companies write their job descriptions to be “exclusionary,” thus filtering down their list of applicants but yet failing to find a candidate they like.

This certainly seems like an opportunity for Moneyball.

I’ll share with you another secret I discovered: in the 1990s, I briefly worked for a company that wrote resume processing software. During that era, companies would receive thousands of paper and fax resumes for an attractive job listing in a newspaper, and they had to somehow filter a huge pile down to a smaller, meaningful list. The software I wrote helped them filter candidates based on keywords that appeared in the resume. We wrote lots of search tools that helped people find complex and unusual skills…

But do you know what happened? Basically, every company filtered on “bachelor’s/master’s degree” and “years of experience”. Those two filters proved to be quick, simple, easy to find, and helped them narrow down their lists considerably. By excluding anyone without these magic items, the busy HR manager could focus on only the key 10-20 percent of the available resumes.

This clearly happens to this day. Take a look on any job listing website and you’re virtually guaranteed to find:

“Bachelor’s degree in computer science or a related field required” – this is exceedingly common today; ten years ago most job listings said “… or equivalent experience.”

“3-5 years of experience with [current fad technology]”

“3-5 years of experience with [development methodology]”

And, in the gaming field, “Must have shipped at least 3 AAA games.”

You might be forgiven for not knowing this, but C. Northcote Parkinson wrote about this strategy in his 1958 book, “Parkinson’s Law”. He described how you want to create a job listing so fiendishly specific and devilishly challenging that you only receive one applicant, whom you can hire right away without wasting your time evaluating the rabble.

When I read through a two-page long job listing that specifies dozens of “requirements” for a candidate, I can clearly see that the HR person is really trying to cut down the number of resumes they have to read.

So now that we’ve covered a bit of the field, let’s get down to business and create a theory about programmers.
Who is being undervalued?

Given what you’ve read so far, I would argue that the software engineering industry tends to overvalue things that are easy to measure. First of all, if you want value, you can’t focus on people who have advanced degrees, those are already in high enough demand that they’ll be snapped up right away.

Find programmers who have innate talent but for some reason didn’t want to go through a university; find open source programmers or hackers or people who write mod scripts in their basement while getting a degree in English Literature.

Second, we tend to overvalue experience with a specific current hot-button technology. The technology industry changes frequently, so look for programmers with experience in something that was hot five years ago but isn’t now.

Remember, good programmers understand serious algorithms and can often switch languages without breaking a sweat. So if we see, according to TIOBE, that C++ and Perl are declining in popularity, maybe that’s a good indication to hire experienced C++ and Perl programmers while their skills are “out of fashion”.

Third, we overvalue people who have exactly the right number of years working in a specific field. Maybe the hiring manager has an idea that they want someone with 5 years or 10; but instead, we could look for people who have an opportunity to surprise.

One example is a junior person who is chomping at the bit to get a chance to prove themselves; another is a senior person who has been seeking a specific opportunity. In either case, the degree of motivation or hunger this person has for your job opening can drive them to deliver much more value than if you narrowed it down to a limited time range.

All these criteria have one thing in common: measurable text on a resume is being overvalued. What’s being undervalued is the stuff that doesn’t show up in measurable “certificates”, “degrees”, or “years of experience.”
How can we take advantage of this?

It may not be possible to hire every programmer the “Moneyball” way, but an interesting feature of the way teams work is that they have a maximum size. When a team grows beyond 6-8 team members, new dynamics start to form, and the group tends to split up into lots of separate subgroups even if they are nominally all together.

This means that you can safely build teams with a few senior members who are well trusted and capable of mentoring and guiding junior members, and use moneyball strategies to attempt to fill out the teams to full productivity. So let’s give this a try.

Clearly, we’re going to have to attract different candidates, and review them differently. First, write your job listings to be very open-ended. Don’t write a gigantic list of requirements;
instead, describe what you are doing, and make the job description drip with excitement (of course your work is exciting!). Describe your office culture and the kind of work you do, but leave out all the details of the specific tools:

Searching for talented programmer who wants to write user interface script modules for a multiplayer app for phone and web customers. The programmer will work in a small group of 2-3 front end team members, frequently prototyping new ideas and implementing new graphical features for A/B testing.

The goal of your job listing is to get lots of resumes – probably more than you would get the traditional way. Then, don’t filter the resumes by experience; instead, read the cover letters! Call the people whose cover letters sound most exciting and relevant. Make sure they know how to communicate verbally and describe their desire to work in your field.

Do a phone screening first. Get an idea how much these people want this opportunity, and then gauge how suitable they seem for the work. Quiz them on whether they’re motivated enough to have done some research themselves.

Does it work?

Of course it works! The dirty secret of the recruiting industry is that recruiters live and die by exactly this strategy every day. They take piles of resumes and piles of job listings, then contact promising candidates and ask if they can make “just a few changes” to the wording of their resume to emphasize a particular feature or highlight something that makes them just right for an opportunity.

Here’s a common scenario:

Recruiter: Hi there, I read your resume and think it’s great for a job opening I have. First question, though, do you have any experience with Java?

Candidate: Well, I wrote a program in Java last year to organize my home media file server.

Recruiter: Great! Can I ask you to send me an updated resume with that project listed?

This kind of thing exposes how trivial the difference can be between a resume that gets dropped and one that wins the job. Companies that focus too much on resume details are missing out on candidates who happen to be very talented but lack a magic keyword.

At EEDAR, I decided to use a hiring process that brought junior team members into our group regularly as interns, and gave them each a chance to demonstrate their skills and grow into a full-time programming position. I search for candidates who specifically had an interest in programming but had no experience – and many of them came through with flying colors.

So clearly it can work, but will it, in your case? You’ll need:

Persistence and resilience to keep trying experiments to find programmers the market may have missed.

Time and attention to pay to them to see if they really are worth their time. People overlook this frequently: in the book Moneyball, not every candidate was an instant success! Some of them needed mentoring, some needed time, and some failed and had to be traded away.

The ability to acknowledge when you make a mistake. If a programmer seems promising but doesn’t excel within your company, you have to be honest and forthright about it, and give them a chance to move on somewhere that’s right for them.

Above all, a desire to reach out to people who may have a hard time getting their foot in the door elsewhere.

If you do your part, we can all find new ways to hunt down talent the market may have overlooked.

Postscript

I’d also like to mention one idea that may be relevant. Recently, “quirky interviews” have become the norm in the industry, such as the Microsoft Interview or Guerilla Interviews or Google Interview.

These interview strategies are extremely challenging, and tend to weed out people who can’t think on their feet or who get overwhelmed with certain types of interpersonal pressure. It’s entirely possible that these interviews systematically exclude a certain class of person, but I don’t yet have a specific suggestion about how to leverage that idea. I’d welcome your thoughts and feedback.(source:gamasutra)


上一篇:

下一篇: