全球之上没完全相同的两片树枝,亦没全然那样的两个匹,于科技行业,即便两个匹研习同样的经验亦会有绝不那样的解读,因而这大自然便造成了差异。不过当作小组的领袖,于面临程序员间所适用的技巧差别时,并且绝不能盲目地忽视,因而越来越应当精确地监管它,。至于怎么监管,本文也许能予你一定的协助。

我们均明白,有些开发人员高于其他开发人员越来越善于他们的实习。正在如有些足球运动支高于其他足球运动支踢得糟糕,有些医师高于其他医师武艺越来越高超,因此为什么开发人员绝不应当是这样呢?事实上,一些分析结论拥护这一观点。所以这种技巧之上的差别于各行各业之中均是众所周知的。Googleg施工和分析高阶副总经理艾伦·尤斯塔斯于一次专访之中说,一位顶尖技师的意义“是一般技师的300倍或是越来越余”。他也说,他宁可丧失一整个班的施工专科的学生,亦绝不愿丧失一位优秀的科技学者。根据他倾诉,许多Google业务,如Google与Google媒体,均是改由某一个科技牛人设立的。
我们或许可自下面提及的分析结论或是尤斯塔斯女士的说明其中挑出很多缺陷。一个显而易见的难题是,便软件开发而言,没合适的方式来量度劳动力。于过往的几年里面,许多有所不同的基准遭提出,不过所有这些基准均适用轻微的缺失。不管怎样,我均相信反驳“有所不同开发人员的技巧的确适用非常小差别”这一点是非常荒谬的。无论你喜爱与否,技巧差别均的确适用,所以我们必需监管它。这便是本文想要阐释的看法。
那么,该如何监管一群技巧等级差别非常小的开发人员呢?我相信,最先亦是最为关键的是接纳这个结论。许多总经理依然相信全职员工(FTE)的技巧差异无关紧要,这种公式化地观点予他们于小组与计划间随便分配开发人员获取了原因,但是事实上这是全然正确的。五个低效能的开发人员并且绝不凌驾在五个拙劣的开发人员,越来越绝不凌驾在五个好的开发人员,即便他们均是全职员工。所以,技能的强弱大约部分局限在一定的题材︰假如开发人员采用他所熟知的科技、方式与代码库,那麽他会更为高效。一样,一个杰出的JavaScript开发人员也许仅是个效能通常的D开发人员。假如总经理们绝不考量小组团员的技巧水准,剧烈因而直观地重整小组,那便会非常难伤害整个小组的劳动力。
接纳技巧差别这一结论之后的下一步是对于小组之中技巧等级的原产有一个准确的感知。我想出了一个直观的方式来对于小组团员展开分类法(见之下右图):

如你所见,我于这里把小组团员分成四组,相似在芝加哥矢量(BCG矩阵)中商品的分类法方法。X轴指出开发人员的输入(源代码行数、bug修缮数目、克服的顾客难题数目等等),因而Y轴亦指出该输入的体积。或许,这是一个非常简单的API,不过这个难题的“清晰”特性让我们非常容易找到越来越准确的API。
于右上角,我们有高输入而且高体积的开发人员。我将他们称为真菌(Plants),由于他们于秘书处的适用感可忽略不计(相似在花卉真菌的适用)。植物型开发人员的产量甚高,因此他们的高体积绝不会导致什么冲击。他们亦绝不会将你的代码库搞得一团糟糕。尽管如此,他们仍然会于小组之中引发很多绝不完。不过因为融资收益率甚高,将甚余的监管“心力”放到他们身上也许绝不是一个糟糕想法。
于右下角,我们看见了冰架(Glaciers)。这些开发人员实习体积低,但是产量高。便像冰架一样,它们始终于行进,不过行进得甚快,裸眼基本上看到。通常而言,冰川型开发人员是可接纳的同事,由于他们考量难题非常彻底,绝不会导致甚余的难题。有些冰川型开发人员而且有也许随著时间段的流逝增长为杰出的开发人员,假如他们的速率快是由于欠缺经验或是知识的台词。不过,的确适用一些具有几十年知识的开发人员依然速率非常快。对于这类开发人员,我的提议是接纳他们的适用。关键的是你们给冰川型开发人员分派任何时间段应急的使命,由于这会造成各方均十分失望。忘记一点,冰川型开发人员对于小组的展现绝不是一个危害。
让我们转入低输出区。于左下方的是新人(Star)。明星型开发人员是一个小组的脊梁,他们完工了大部分的研发实习,所以体积非常低。依据帕累托定律(即二八德亦),一般一个小组之中的大多数研发实习均是改由一大部份开发人员完工的。你小组之中的明星型开发人员有非常小的风险均属这一大部份匹。因此,维持这些明星型开发人员的糟糕心境与低产量是十分关键的。一般,这使得要尽可能减少他们的管理负担,以期他们将焦点放到关键性与艰难的使命之上。对于他们展开宏观监管是一个奇怪的观点,由于这不但耗费了他们的时间段,所以非常也许会导致很多绝不完。应该绝不要干预他们的实习,但是要留意与否有任何对于他们的举报。因为开发人员的工资非常常与他们的劳动力脱钩,因此明星型开发人员的性价高于一般十分低。这对子公司来说非常糟糕,但是亦有点危险性,由于这会让他们相信他们对于子公司的意义遭高估了。

最终一个是火山口(Volcanoes):火山型开发人员低产量,但是高体积。这是十分危险性的,必需对于他们严加监管以此避免对于代码库导致永久的毁坏。假如对于他们放任不管,随著时间段的流逝,源代码体积把会遭风化,并且从而损害整个小组的研发效能。有两种类别的火山型开发人员:
•第一类我将他们称作“经验不足的好手(inexperienced hot-spots)”,一般他们欠缺的是体积感受与充足的知识。假如得到他们额外的领导与训练来塑造他们,这类火山型开发人员有一定的机遇转化为明星型开发人员。
•第二类我将他们叫作“源代码守护者(serial code-manglers)。源代码守护者是无可救药的,由于他们坚信他们做的每件事情均是准确的,因而忽视了所有无关的事实。他们相信他们的源代码是理想无缺的,因此绝不相信任何(自动)试验有含义。他们感受绝不到自己的难题,因此所有企图改良他们的试著均绝不会有活性。对抗他们只两种方式︰那么约束他们的输入,那么把它们踢出小组。后者越来越精确但是常常难以实现,因此本文我把试点放到前者。你可透过强化源代码质量检查来避免你的代码库遭火山式的引爆所炸毁。引荐你实行的第一步是采取措施保证只如果他们的源代码编译器透过,所以所有的自动测试均透过了时,便容许他们履行“并入到源代码主轴”的手动。接着,您可透过诸如Sonar之类的方法添加更进一步的检验,并且采用诸如Checkstyle之类的方法做源代码式样检验。强制性的源代码审核亦可增加伤害。所有这些额外的举措减少了源代码守护者的轻率研发的困难度,这会拖慢源代码守护者输入坏代码的速率,除此之外确保了糟糕的开发人员尽可能少地受冲击。我强烈推荐实行超过举措。另外一个提议是:尽量把火山型开发人员用作体积绝不甚关键的研发实习,比如蓝本研发。
糟糕了,开发人员的四种类别我们已谈过了。回应一下,我绝不相信好的开发人员是恶人,反之亦然。一个明星型开发人员也许是个家伙,因而一个火山型开发人员也许是个殉道者。这四种类别绝不是建构小组时你需考量的唯一基准。不过,我们必需忘记这一点:开发人员的技巧是有极大差别的,忽略它也许是危险的。也就是说,你必需明确如何确认你的小组之中的所有开发人员的技巧水准。这里我得重申一下,我绝不是研发总经理,因此对于我的提议你小可以大幅保存。在我看来,假如你想主导一个研发小组,你需懂有关科技。完美的情况是,你能于紧要时刻更换小组之中的任何团员。大约,你应当明白小组目前必需处置什么难题,及谁于做什么。我提议你尽你所能,协助开发人员做你能做的一切。例如,您可试著克服一些拥护要求。即便你绝不能特地写源代码来修复bug,不过认识bug根源所在地亦可协助你认识源代码编辑器以至整个商品。

假如你会写源代码,你应当时常地察看代码库。最近的源代码变更应当能让你非常糟糕地认识当前将要爆发的事及源代码体积如何。Twitter获取了对于代码库的成就明细,这也许有利于你确认谁成就了多少。或许,这是个绝不完备的估计,绝不应把其当作KPI采用。除此之外,你的正确追踪方法也许会予一些其它的基准。失望的是,没理想的方式用以取得你需的所有资料。你需余做些试著,找出对于你有用的。不过,这并且绝不是一个全新的考验,由于大多数子公司均已有某种效益检验举措。假如您已作为每个开发人员设立了“级别”,那麽对于这些级别与技巧矢量平行参照也许会导出有意思的结论。
只要你对于小组团员的技巧原产有了充足的认识,你便应当确认你的小组之中与否有火山型开发人员。假如有的话,你必需制订方案并且采取行动。总经理的职能是处置有难题的小组团员,绝不这样做会引来其他小组团员的强烈不满。阿蒙森与拉法斯托于1989年写了一本有关小组展现的本书。这里我提及他们说的一段话:
和小组卓越的任何其他单一方面相对,对于小组团员煎熬越来越小的是小组主导绝不愿间接精确地处置贪婪自利的或是对于小组无任何成就的小组团员。
如果你的小组之中有人绝不履行职责,而且作出损害小组的事时,你的小组团员均会明白。当作一名总经理,你必需面临这个难题,即便它具备吸引力与让你绝不愉快。你的绝不当作会对于你的小组与你自己导致损害。一切顺利时,没匹需一个总经理。只于经济危机一刻,便能反映出你对于小组的意义。我期望这里的技巧矢量会对于你大幅协助。