Table of Contents:

什么是二八原理

二八原理(也称为“80/20原理”或“帕雷托原理”)最早是由意大利的经济学家帕雷托提出来的,关于这个原理的详细介绍请看“这里”。通俗地说,就是【因果的不对称】。20% 的原因导致了 80% 的结果;而其它 80% 的原因只产生 20% 的结果。当然,这里提到的“二八开”的比例不是绝对的,从“三七开”到“一九开”都有可能。

为了给不了解它的人一点感性认识,俺举几个例子:
* 少数有钱人掌握了社会的大部分财富(帕雷托就是从财富分布中发现该原理的)
* 公司里大部分的销售业绩由小部分的销售人员创造
* 地毯的大部分磨损集中在少数几个地方
* 大部分开发人员只使用少数的编程语言,而大量的编程语言几乎没人用
* 软件的大部分 bug 是由少数开发人员产生的

如何运用

这个原理的关键处就在于它挑战了传统的理念。比如:小时候老师经常教导说:“一分付出一分回报”。用数学的术语讲,就是付出和回报是呈线性相关的。很多人受此影响(可能是潜意识的影响),都习惯于平均分配时间、精力来处理问题。结果就导致我前面所说的投入很多,回报很少。因此,要运用二八原理之前,你先得改变自己头脑中的思维定势,要以【不平等】的观点来看周围的问题

其次,你得学会如何区分重要与次要。这个就属于方法论的问题。

在软件开发中的应用(以“开发文本编辑器”为例)

需求分析

  需求分析在整个开发过程中占的工作量不大,但是产生的影响巨大(这又是一个二八原理的例子)。既然需求分析如此重要,照理说应该安排最强的人来搞。但实际情况往往不是如此:很多公司负责需求分析的人并不胜任这项工作。俺经历过几个不太成功的项目,其问题的根源都和需求分析有关。

  需求分析最要紧的是:搞清楚用户【到底】想要什么?如果这个问题搞错了、搞偏了,后面的步骤做得再好也是白搭(比如客户想要一个文本编辑器,结果你搞了个图形编辑器给他)

  在搞清楚“用户想要什么”之后,接着要整理出功能列表(洋文叫“Feature List”),并筛选出大约20%的重点功能。这个步骤是俺今天想重点聊的,因为这个步骤和后续的各项开发密切相关。一般来说,功能筛选的依据有如下几个:

1、用户经常用的功能(比如:save、copy、cut、paste)
2、宣传的卖点(要能够超出同类软件,吸引眼球)
3、和用户利益密切相关的功能(这种功能不允许出错,比如存盘功能)
  这个筛选的过程要尽早完成,而且最好是产品人员、开发人员、测试人员三方的头头一起讨论,以保证立场客观、观点全面。筛选出重要功能点后,其他人员的工作安排要"以重点功能为纲",有所侧重。

项目管理

如果你是个项目经理,在排项目计划时,就得尽量优先安排【重点功能】的开发/测试,而且要安排能力强的人员来完成。照俺以前的做法,重点功能排计划至少得留出1/3的时间余量,以防万一(事实证明,几乎每个稍大点的项目都会出现【万一】)。至于【非】重点功能,尽量排到后面,安排能力一般的人开发/测试。
  然后,在项目进行过程中,肯定要有定期的例会。作为项目经理,你应该主要关注重点功能的进度情况和风险情况。
  一旦项目有延期的风险,就从非重点功能开始裁减(俗称砍功能)。由于是裁减非重点功能,不至于产生致命的影响。

设计界面

  设计界面时,你得保证【所有的】常用功能都放在显著的位置(比如工具条);还得保证它们用起来方便(比如提供快捷键和右键菜单支持)。
  对于卖点,它不一定是常用功能,它的目的是激起用户的购买欲望和使用欲望。因此你要把它们设计得比较酷,有噱头。
  对于利益相关的功能,大部分情况下都是侧重于业务逻辑实现。如果它既不是常用功能、也不是卖点,那么界面设计方面倒不一定要额外花大力气。
  其它的【非】重点功能,只要按照常规方法设计,不用花太大精力。

编写代码

俺发现很多开发人员有几个通病:先做有趣或容易的功能,然后再做无聊或者繁琐的功能;对自己有兴趣的功能投入精力多,对自己没兴趣的简单应付。
  以上这些都是开发的大忌。作为一个职业的开发人员,不应该以自己的兴趣和喜好来决定开发的轻重缓急。正确做法应该如下:
  你首先得用主要精力完成上述所说的【重点功能】,而且要保证它们的代码质量尽可能好,尽可能方便维护(重点功能往往是经常有需求变更,经常被修改的)。
对于重点功能中的【常用功能】,要保证“时间性能够好”(通俗地说,就是快速响应)。
对于【用户利益相关的功能】,要保证 bug 尽可能少(尤其是安全性、稳定性、健壮性的 bug)。
至于其它的【非】重点功能,只要不出明显 bug,有点小缺陷无伤大雅。

测试

  如果你是个测试人员,你同样要把主要精力用于测试那些重点功能。对于"用户利益相关的功能",多进行一些健壮性测试、稳定性、安全性等测试(比如测试保存大文件是否会出错)。对于常用功能,主要进行易用性和性能测试(比如拷贝、粘贴是否易用)。
  至于其它功能,只要进行普通的测试,保证它不出现明显和严重 bug 即可。要知道当年微软发布 Windows 2000 的时候,尚遗留上千个未修复的 bug(当然都是低优先级的),人家不也照样发布嘛。

产品演示

  有些软件开发完之后,会搞一些 Demo 进行宣传。如果你是负责进行 Demo 的人,一定要把主要的 Demo 时间用来秀软件的卖点,这样给客户的印象最深刻,效果最好;至于【非】卖点的功能,甚至都不用提及。

在管理方面的应用

1.员工分类

按照二八原理,优秀的员工在整个行业中大约占5%-20%;同理,糟糕的员工也大约占类似的比例。剩下那60%-90%的员工,我们称之为平庸的员工(说好听点叫普通的员工)。

讲管理怎么扯到“三种人的划分”上去捏?其实“三种人的划分”是非常重要的。由于管理工作的本质属于和人打交道的范畴。当你搞明白三种人的划分并且知道你周围哪些人属于哪种类型,你就可以在管理的各个方面充分发挥优秀员工的积极因素、充分消除糟糕员工的消极因素。

2.关于人员招聘(如何找到优秀的开发人才)

招聘工作是其它各项管理工作的源头(先得有人可管才能谈管理嘛)。并且招聘工作有其特殊性:招聘方面的失误传递到了后续的环节,其影响会成倍放大。这个现象非常类似于软件开发流程:如果需求阶段出了问题,该问题到设计阶段会放大十倍(设计人员会骂娘),到编码阶段会放大百倍(程序员会抓狂),到测试阶段......

1.先确定比例

咱们已经介绍了优秀员工的稀缺性(只占 5%~20%)。所以你不要指望团队里所有人都是优秀员工,这不现实(尤其在咱们天朝)。如果你有这种企图,那你就会陷入完美主义的焦油坑。
  另一方面,如果整个团队中优秀员工的比例太低(甚至趋向于0),那也非常棘手。这样的团队效率会很差,基本上干不了太多实事。而且要改良这样的团队,难度也是大大滴。
  所以,根据俺个人的经验,让团队中优秀人员的比例略高于业界平均水平是比较合适的(大概在1/5到1/3)。只要保证大约这个比例的人是优秀的就差不多了。

2.再确定顺序

  比例确定好了,后面就是招聘顺序的问题。一定要先把优秀的人搞到手,再去招平庸的人。【这个顺序很重要】。因为先进入团队的优秀人员会在团队中形成一个良好的氛围(包括思考模式、沟通效率、学习气氛、编码风格等)。这样就有利于影响后进入的普通开发人员并使其融入其中。久而久之,就可能形成良性循环。

3.如何找到优秀人才(不太合适的途径)

既然顺序也确定了,接下来就是动手找人了。由于优秀开发人员比较稀缺,所以【不能】纯粹依赖传统的招聘方式(到招聘网站登广告)。当然,不排除传统方式也能找到优秀人才,但是效率挺低的(个人感觉,简历中不到 1% 能算是优秀)。所以俺一般用传统方式来招【平庸】程序员。

不足:对应聘人缺乏了解。一般只能通过简历、面试、笔试这几招来探探底细。但是,大凡准备简历和面试的人,无不把自己包装得很光鲜,个个看上去都很完美的样子。至于笔试,俺觉得笔试考察人的角度难以做到全面。因此笔试结果【或许】可以判定某人【不】合适,但【肯定】无法用来确保某人合适。“不了解应聘人”导致的最大风险在于:可能让糟糕员工混入团队中

4.如何找到优秀人才(比较高效率的方式)

3.关于激励(如何发挥员工积极性)

激励的目的

企业要通过激励手段,让员工觉得工作很爽、很 high,然后干活就会很主动、很自觉。有效的激励措施是双赢的,不但对企业有好处(提高了产出和效率),而且对员工也有好处(得到了所需要的东西,后面会说到)。

激励的对象(应该激励哪些人)

在搞清楚目的之后,接下来就要聊一下激励的对象了。了解激励的对象很重要。这就好比市场营销中的广告战,你必须让广告投放到有效的受众,才能产生效果。所以打广告前,先得进行广告受众细分,搞明白哪些是有效受众。同样的道理,进行激励工作之前,也要对员工进行细分。只有搞清楚谁是【有效的】激励对象,才不会瞎忙。
  关于激励对象的分类,其实在前面的帖子里面已经介绍过了(也就是“三种人”的划分)。在这三种人当中,咱们应该把大部分(80% 左右)的激励放在优秀人员身上,小部分(20% 左右)用于平庸员工,效果才会最好(至于糟糕员工,就省省吧,别费神搞啥激励了)。因为优秀员工的平均产出比糟糕员工高很多,如果同样提升10%的士气,显然优秀员工增加的绝对值也会大很多。而且,要让糟糕员工提升士气,那可不是一件容易的事。
  不过俺观察下来,发现很多管理岗位的同学却是反其道而行之,总是花很多力气妄图改变糟糕员工的状态,到头来效果往往不甚理想。俺猜测这有可能是受了学校老师的影响。记得以前在中小学的时候,老师们总是花很多精力在“差等生”身上。但是大伙儿要明白,公司和学校有一个本质的区别:公司是商业机构,以盈利为目的;而学校则不是。所以,有些学校的做事方式,在公司中是不宜使用的。

激励的方法(应该选哪种激励方式)

激励的方法有很多种,在具体运用上,一定要【因人而异,投其所好】。这就好比不同的广告投放方式。你得先摸清楚广告受众经常接触什么媒体(比如电视、报纸、网络),然后在相应的媒体投放广告,才会有效果嘛。
  话说回来,常用的激励方式,大致有:经济利益、名誉、成就感、尊重、权力、个人能力。这几种激励方式本身没有好坏之分,只有适用与否的区别。下面咱们就来具体介绍一下这几种方式。
* 经济利益
  这个最好理解,说白了就是钱的问题。这个方式对大部分人都有一定效果,但是效果的好坏差别很大。有些人很看重钱,而另一些人却不太看重。
  要了解某员工是否看重钱,相对比较容易。俺一般在面试新人时就可以看出来了。那些在面试中对薪水、福利、待遇打听特详细的家伙,多半比较看重经济利益。
  使用这种激励方式的难点在于搞好平衡。假设有两个同样优秀的人,一个看重钱,另一个不看重。这时候,你不能让两人的经济利益相差太大。否则就会丧失公信力。
* 名誉
  名誉的方式,具体操作就是授予员工某些荣誉头衔和称号,或者进行公开表扬。这个方式适用于虚荣心比较强的人。这种激励方式的关键在于公开,知道的人越多,被激励者越爽。
  咋样才晓得某员工是否虚荣心较强捏?这就需要通过平时的观察才能发现。举个例子:虚荣心强的人,表现欲一般也比较强(但不绝对)。你就可以留意一下集体活动时,谁比较喜欢抛头露面、表现自己,基本就心里有数了。
* 尊重
  这种方式也好理解,就是对某员工给予足够的尊重、器重、重视。这种方式对于自尊心很强的人,效果好。
  自尊心强的人,其实也容易判断。平时沟通中,一不小心被人戳到自尊了,反应特强烈的,就属于此类。
* 成就感
  成就感的方式,一般来说就是安排某人干有挑战性或者意义重大的工作。一旦能做成,他/她就能得到很大的满足感。
  一般注重成就感的人,也会有一定的虚荣心,可以参见前面的方法来判断;当然也有少数注重成就感但不在意虚荣的人,这类人就比较难发现了(得靠观察其它细节来判断)。
* 权力
  权力的方式,就是给予某人权力(一般是决策权)。这种方式对于权力欲望强的人,效果很好。
  不过权力欲望强的人,一般不容易看出来。中国的传统文化讲究含蓄,想要权力的人,一般不会直接开口要(再说了,直接开口要,也未必能要到啊)。因此,权力欲望强的人,就经常会在暗地里使各种法子来达到目的。如果团队里面这种人多了,免不了就要勾心斗角一番。有点跑题了,打住。要看出这种人,你需要有较强的察言观色之本领,方可一窥究竟。这种本领属于“只可意会,不可言传”,大伙儿自个儿去“意会”吧 :)
* 个人能力
这种方式,就是给予某员工学习/锻炼的机会(比如培训),使其个人能力获得提升。这个方式对于爱学习、注重个人发展的家伙,效果较好。
比较爱学习的人是很容易看出来的。俺一般会在面试中,通过旁敲侧击,试探出面试的人是否属于此类型(具体如何试探,将来谈面试技巧的时候再聊)。

对于上面提到的名誉、尊重、成就感(其实还有认同感、归属感......限于篇幅没提及)这几种方式,属于心理学层面的激励,相对来说激励成本较低。而且,大伙儿要记住:80% 左右的员工是偏感性的,心理学层面的激励对感性的人挺有效果
  另外,俺要提醒一下,用权力的方式来激励是有一定危险性的。一定要确保被授予权力的人确实有相应的【能力】,否则产生的后患就如滔滔江水,绵绵不绝。