通才和专家:如何选择

原文:Generalists and specialists: thoughts on hiring
做者:Nicholas C. Zakas前端

个人职业生涯经历过各类规模的公司,从很是小的五人创业团队到 13000 人的大公司雅虎,再到约 1000 人规模的 Box(我目前所在),这些公司有着迥异的组织文化和招聘哲学,我也面试和聘请过众多的应聘者,在挑选优秀同事方面有着出色的成绩。面试

在这些经历里,我发现招聘策略的最大差别最终归结为一点:公司更青睐专家仍是通才。我并不认为搭建工程师团队有惟一正确的方法,但我相信公司的规模和和它所处的阶段是招聘策略中重要的影响因素。算法

通才和年轻公司

通才是这样的人,从定义上来讲,是指没有特定专长的人。他们大多毕业于计算机专业,擅长各类服务器端的工做,如数据库、基础设施、构建、部署、数据操做和处理等等。通才的人员在工做中并不介意从 C++ 转向 Python 再到 Java,众多编程语言对他们而言差异不大,转换起来也没有什么负担。他们是真正的战马,可以承担交给他们的任何任务。数据库

对大多数任务来讲,通才倾向于完成到良好,但可能不会到优秀的水平,并且在须要彻底不一样思惟模式的事情上不会太顺利。好比大多数通才都会在前端或移动端的任务上比较纠结,这两个领域的模式和后端的开发哲学有着很大差别,这部分产品在通才的手上也时不时会碰到点小问题。编程

一家公司的早期阶段老是起步于异常紧张的资源,即使你成功融资,也很难迅速招募到知足需求的所有人力资源。所以这个阶段任何加入公司的人都应该尽量戴更多头衔,完成各类事情。我之前端的身份加入 WellFurnished 而最终搭建起了整个基础架构、源码控制、构建和部署系统,当碰到问题我一般会向公司里的通才寻求帮助,只要他们能抽出时间在任何地方给到一点帮助。后端

年轻公司没有奢侈的资金能够雇人来只作一件事情或者一小部分事情,事情太多而人员太少。通才可以让业务起步运转起来,全部人的全部时间都要投入在推动计划上,不然你就是在浪费你很是有限的资源:钱。服务器

在这个阶段,还有个至关实用的技术策略。由于整个系统规模很小,每一个工程师均可以(也应该)理解系统的每一个部分。脑中有整个系统的图景很重要,由于每一个人均可能须要作任何事情。数据结构

引入专家

相对而言,专家是那些在部分领域有突出专长的人。他们对这些领域有深刻的理解,为此,有必要忘记(有意或者无心)一些通才会格外注意的东西。专家提供的是在特定领域里的高级能力,他们把职业生涯聚焦在有限的领域里,以此达到通才所不能达到的高度。架构

在公司的早期阶段,通才创造了大量“足够好”的方案。这不是什么坏事,只是公司成长的正常步调。“足够好”的方案正如它的名字所示,足够支持公司发展到它的下一阶段,有时候甚至好到能支撑公司接下来两三个阶段的成长。但最终,“足够好”的方案终会变得再也不够好,这就是你须要聘请专家的时候了。编程语言

再也不够好会有多种表现,最显著的就是前端部分:我工做过的每家专一于聘请通才的公司都有一段时间受困于糟糕的前端质量。设计师很苦恼,由于工程师没法实现他们的设计方案,产品经理也很不满由于前端是面向最终用户的关键环节。这个时候,终于有人开始考虑是否是该招个“真正懂这坨东西”的人。

在小公司成长为大公司的过程当中,总会碰到这个富有争议的问题。对于聘请专家的主要争论会是:

  • 咱们不知道如何招聘这样的人。

面试流程是为招聘通才而设计的,因此面试问题大部分都围绕通用的计算机科学知识,以便考察候选人是否足够“聪明”。面试会有不少算法问题、数据结构问题以及关于复杂度的讨论——全部这些都不是为了考察特定领域的能力,而是为了考察那些适用于任何编程语言的通用概念。这些对于通才是应该的,毕竟他们要熟练操做任何工具面对各类问题。一旦公司适应了以此来衡量候选人是否足够“聪明”,就很难作出改变。事实上,“聪明”是个很是灵活的词,并不能拿来整齐划一地衡量每一个人。然而若是公司里没有专家的话,又该如何评估专家的能力水平?

  • 这会致使资源分配问题。

通才招聘策略背后的的一个理论是,你会有一个小而全能的资源能够随时酌情分配到任何项目中。若是全部人都能作全部事情,你就有了无限灵活分配的项目资源。不须要等 Jim 空下来或者 Mary 完成她的项目,只要有工程师空下来你就能安排他开展下一步骤。而专家,照称谓来讲,你应该安排给他们特定领域的事情。这从根本上改变了工程师团队分配资源的方式:忽然有一我的只能作一些特定的任务,由于这个差别,整个组织都会所以被推到一个不稳定的状态。

若是正在看此文的你是一位专家,你确定会想:“这些理由都是狗屁”;若是你是一位通才,你确定会想,“对啊,显然的”。接下来我会分别解释,这些想法都是真实而且合理的,不过毫不是没法解决的。许多公司都踩过这个坑并成功地跳出来,解决问题的关键老是招进来第一个专家,而且证实团队依然能够顺畅工做。

咱们真的须要专家么?

是否真的须要一个专家加入的问题老是归结于公司的情况有多紧迫,一般会使这两种状况:

  • 有东西真的坏了。

不幸的是,这种状况最为常见。通过数月数年的修改和补丁,曾经是“足够好”的东西如今变成了“一团糟”,你须要真正懂这块的人来解决问题。

  • 进入新的领域。

不少公司在进入新的业务领域又想快速推动的时候,就会想要招聘专家。例如推出一个 Web Application 的移动版,或者反之,这是专家加入的好机会,由于有机会从零开始充分展现他们所能。惋惜的是,这种机会并不常见。

第一种状况,事情已经至关糟糕,在个人职业生涯里不管是做为员工仍是做为顾问,都见过无数。第二种状况则主要是移动开发者们会碰到的,近年来全部公司都火烧眉毛地推出移动应用。

是否真的须要专家的问题,也能够根据当前的资源分配情况来判断。若是你发现系统的某一部分老是须要投入大量关注,极可能就是通才已经快要搞不定了。

聘请专家

最终,每一个成功的公司都会开始聘请它们的第一个专家——这是必然的。第一步天然是搞清楚如何聘请专家。你须要认识到现行的面试流程极可能并不适用;此外,专家对于跟他擅长的领域毫无关联的问题也没有好感。那么,当你的公司没有此领域专家的时候如何面试这位专家呢?

当你的公司没有这类专家的时候,大家总有人是在作这个领域里的工做内容的,这些人就是你应该安排面试评估的人。最简单的方法就是直接讨论当前碰到的问题,询问候选人会如何解决。这并不是随便拉我的来作免费工做,短暂的面试过程也不大会真正解决问题,询问的要义在于向候选人请教问题的情况以及理解他们的思路。好的专家可以和你厘清问题的范畴,阐述他们会审查哪些细节以及可能的解决方案。

和非专业人士可以明白流畅地沟通,对他们来讲是很是重要的技能,他们会须要作大量这类的工做,由于没有其余人能彻底了解他在作的事情,你须要确保这个专家能以你们都听得懂的方式和你们沟通。最后,理解候选人如何定位问题以及承认他的解决方式,是作出聘请决定的最佳途径。

问题的第二部分是资源分配,这个问题一般也会自愈。不少有通才意识的工程副总裁会担忧没有足够多的工做安排给专家,致使资源浪费。实际上,在初期阶段老是会有足够多的事情须要处理因此不是什么问题,不管解决问题仍是创造全新产品都够专家忙一阵子的。在这以后,一般是工程师团队已经开发完成了一个阶段性产品,总会有更多特性需求接踵而来。一般在一到两年以内,你就会发现一个专家已经不够用了。

专家拐点

公司发展到必定阶段,没有专家是很难继续下去的,甚至你的通才都要开始专一于产品的部分领域中。产品和基础架构都变得更大,产生了一个有趣的问题。

你最初一直是聘请能作任何事情的通才的,得益于基础架构很小,把整个系统都捻熟于心并不困难,因此这是行得通的。到了某个时刻,基础架构必然会成长到足够大,大到不可能要求每一个人都熟悉整个产品架构,人们将会不可避免地开始专业化。

在这个阶段的专业化意味着对系统关注的更少,释放精力会提升工程师的效率,而最终他们将只须要掌握系统的特定部分及其边界。若是他们须要知道其余部分的内容,就去找负责那个方向的工程师便可。

当工程师开始主动要求在某个方向投入更多精力的时候,你就知道公司到了这个阶段了。这时候聘请专家会更加容易,由于你已经拥有专家了;而继续聘请通才则再也不合时宜。在公司高速成长的时候去培训每一个工程师或者但愿他们自学一个新领域的技能,就是拖慢公司的脚步。在我曾经待过的一个公司,工程师平均要入职六个月以后才达到正常的生产力水平,缘由就是坚持聘请通才,而且招聘评估也主要着眼于潜力而非现有能力。这意味着咱们没法聘请成熟专家,而老是寄但愿于培养候选人。这样形成拖延彻底没有必要。

固然也偶尔会有工程师对本身的领域感到乏味,想要跳到另外一个全新领域。这种事情是不免的,可是应该不会太多。在这个阶段公司能够支持少数人转换领域,但不能是全部人都不停地切换到新领域,而后从零开始学习如何高效地产出。

只聘请最强员工如何?

另外一个反对聘请专家的观点是公司只想要雇用最聪明最强大的员工。我称之为“Google 理念”,由于 Google 曾经就是这么作的。大约是 2006 年,我曾经前往 Google 作过一次面试,当时它是最火热的公司,全部人都渴望加入,只是一次面试机会也足够使人激动。有趣的是,他们彷佛并不特别在乎你的专长有多突出,你也不能申请特定的职位。全部人获得聘请以后会进入一个资源池,你第一天的任务就是找到想要参与的项目。Google 的整个思路就是聘请最优秀的人,而后找事情给他们作,简单来讲,这就是终极的通才招聘策略。

不知道 Google 如今是否仍采用这种招聘策略,不过我认为这有点像是职业体育运动中专一于招募最顶级运动员。若是你不是个体育爱好者的话我简单介绍一下,美国的职业运动队每一年度都会例行选拔业余或者职业运动员加入。拿篮球运动来举例,在一场比赛中场上老是有五名运动员,两个后卫,两个前锋,一个中锋,他们有不一样的职责和战术。在选拔的时候,不少球队会寻找填补他们短板的专长球员(也就是专家),然而也有少数球队倾向于寻找“天才球员”,也就是说他们并非为特定角色寻找队员,或者他们也不肯定招募的球员未来会打什么位置,总的来讲他们但愿是一个最天才的球员(也就是通才)。

不管球队选了谁,他们在场上只能摆五我的,所以要想胜利就要派出最好的中锋,加两个最好的前锋,还有两个最好的后卫,无视各个职责之间的能力需求差别会让整个球队都吃苦头。大多数篮球队都懂这个道理,因此他们有时甚至会放弃不错的球员,若是球队在这个角色上已经有了出色球员的话。

以我的见解,我坚信在公司规模容许的状况下应该尽可能招聘专家。坚持聘请通才再按业务需求来培养,会显著拖累公司的发展,而你的团队最终将会失衡,没法承担涌现的各类新工做内容。

总结

我相信这本质上是人类的专业化趋势。咱们整我的生的教育流程就是这样安排的,一开始都是通用知识(数学、语文、科学、历史),逐步到了大学就须要选择方向和专一的领域。天然而然的你会在这个过程当中发现你有兴趣作的事情,你想在这方面作的更多,而其余事情则不那么有趣和享受。

早期的公司毫无疑问须要通才,并且极可能会持续至关一段时间,直到它有能力聘请更多员工。通才很是适合这种情景,或者任何须要随时切换任务的场景。代价是你可以获得大量“足够好”的解决方案,而非少许最好的方案。

当“足够好”的方案再也不够好的时候,你会引入专家。有时候是由于遇到了没法解决的困难,有时候是由于产品线的天然扩张。在这些状况下,你须要有对相关领域有成熟经验的人加入,聘请专家不是为了他们有潜力应付各类问题,而是为了他们解决当前的需求,立刻交付产品。

随着公司和员工的发展,通才逐步转变为专家也很常见,系统和架构规模的增加天然会致使这一现象。支持员工专业化能提升全部人的效率,每一个人都能释放一部分精力而更加专一本身负责的问题。

知晓在什么时候以及如何从通才团队转向专家团队更可能是一门艺术,而非科学。我但愿本文能对此有所帮助。

相关文章
相关标签/搜索