zoukankan      html  css  js  c++  java
  • 软件中的八二原则

    软件中的八二原则

    软件中的八二原则(一)

    Joel on Software 的博客中,提到在行进中开火”,oK,我认为他是对的;提到所谓的膨胀软件问题,OK,我认为他的观点是对的。Joel也提到八二原则在软件中的一些问题,观点包括:

    很多搞软件开发的人,被"80/20"的老规律引诱了。这个规律好像很有道理:80%的人只用20%的功能。所以你以为,只要实现20%的功能,就能得到80%的销售量。

    不幸的是,那从不是同样的20%。每个人都用到不同的功能。再过去十年中,我大概听说过几十家公司,下定决心不互相吸取教训,企图出版轻形版本,只有20%的功能的文字处理软件。

    当你去推销你的轻形软件时,你跟人家说:嗨,这个软件很小巧,只有一兆。人家听了一般都很高兴,然后就会问你有没有对于他们来说很重要的功能,要是没有,就不会买你的软件。

    基本概要是:如果你的战略是“80/20”,你就很难卖出你的软件。事实就是这样。这个战略自从软件工业开始时就有,从来没有胜利过。令人吃惊的是,很多倒闭了的公司的高级主管还觉得它是个好的主意。

     

    Joel是对的吗?Joel是在说我们应该写功能尽可能全的软件才能卖掉吗?

    -----------------------------------------------------------------------------------

    Joel曾是微软的工程师和经理,这很符合微软的调子。比如:微软的office系列等。Joel是透漏了微软的制胜之道吗?这与比尔盖茨始终倡导的PCsoftware进入每个人的桌面并尽可能傻瓜是否相悖呢?在译言网上有个帖子提到刚刚好才是真的好,世道变了(意思是那种大而全功能强劲的东西未必符合潮流了),他们谁是正确的?不少国内的成功的商务软件公司,比如任我行公司(管家婆系列软件)基本上就是明确提出八二软件是他们倡导的,他们错了?……还有很多类似的例子。

    我很想怀着批判性思维的方式,豪迈的得出这样的结论:Joel错了!那不符合国情,不符合时代。 但我知道那家伙不是省油的灯,结论不应该那么轻易的得出。

    因此我需要琢磨琢磨。另外,这个观念对一个公司整体运营思路很重要,它的导向会影响到产品的整体布局和开发思路,并最终导致一个公司是被fucked,还是活着。因此,也值得琢磨

    ------------------------------------------------------------------------------------

    我认为结论是这样的:

    1Joel是对的! 如果你的战略是“80/20”,那么你很难卖出你的软件。

    2、但,这不等同于必须开发出大而全的,100%的软件才能卖掉你的软件。

         这似乎是自相矛盾的。其实不矛盾,只是侧重点不同、维度不同、不同。

    3、在“战术”层面上,在某些具体应用时,在局部的实现方面,应用八二原则是明智的。

     

    软件中的八二原则(二)

    1. 八二原则(80/20)本身

        1.1. 八二原则错吗? 没错。

        1.2. 八二原则在软件领域不适用了吗?适用。很多理论,比如八二原则、长尾理论、摩尔定律等,它们是大道,而非仅适狭窄局部的小规律。(当然,它们也有其范围和范畴没有老子的道可道的道那么大。老子到底有多大,我也不知道。

        1.3. 那么,为什么那些八二的公司会被fucked 因为他们一刀切的,武断的在运用这个规律。没用对地方。

    2. 支持Joel的个案

        Joel简单的说到了他的观点,很多话我想他没有讲。(多半并非他不知,而是没说到那里去,省略了很多。)

        如果简单的枚举几个例子,试图通过此来证明Joel是错的话,那么我也能举出一些反面的例子,是否能证明Joel是对的呢?其实都不能,因为都是以偏概全。但提到这些例子还是有必要,比如其中两个:

        2.1. 我的经历——LIMSLISERP等领域的情况

         我在LIMS(实验室)HIS(医疗)领域有很多实践,有大量这样的案例。当一个具有20%功能(它能满足80%需求)的软件卖到客户手中,客户会提出一些个性化的需求,绝对在20%非常规需求之列,那些往往是很个性的,有时甚至很无厘头。你能够拿着仅有20%的东西向客户收钱吗?你也可以很个性,坚持自己的原则。但是结果是剩余的尾款20万你就甭要了。你是要保持个性还是那10万、20万?事情还不仅如此,当这样的客户出现几个,你就会出现一些烂尾楼工程,接下来你的口碑就坏了,那么在这个市场上你就甭做了。那么,为何不与客户讲道理呢?也许客户无知?他们不知道八二原则?你去给那些高学历并老江湖的所长院长们讲讲看,教教他们什么是八二原则,然后争取让他们在某些功能得不到满足的情况下付出那20万的尾款。如果你能做到,那么恭喜你,你可以比肩乔布斯,他能创造需求进而获取财富,你能在不满足需求的情况创造财富。

         结论是:那是不现实的。我碰到过很多很多次,憋着开发商为了某个个性化需求做定制开发。(虽然通过一些工作,比如客户洗脑(ERP的惯例),勾兑(返点、波推打炮之类的手段,中国商业的惯例)可以在局部的点上好办些,但那不是道。)在LIMSERPOAHISLIS等领域,指望我只提供20%,然后卖拷贝争取占有80%的市场是真的在做梦。

        2.2. 小众软件和仇富型愤青

              “善用佳软小众软件两个网站都不错,我常看。其中很多小众产品精致小巧,介绍的文章都会说这儿不错那儿不错。但有个问题,既然都不错,那为什么它们没有获得市场的成功?为什么没有把这种不错变成纳斯达克坚挺的股票指数?因为还不够。要么只是在某些局部的点上不错,要么本身客户对象就是小众的,要么就是只20%了。

            相反,国内和国际有个反微软阵营,包括我所在的公司也有个这方面的积极分子。典型特征是凡微软必骂,只要微软的产品能不用尽量不用。但微软是最赚钱的公司之一,产品是他赚钱的来源。那么,为何不借鉴一下微软的思路呢?我称那些反对者为仇富型愤青,情绪让他们偏执了。举个例子:wpsoffice。很多人在替wps唱赞歌,如何如何好之类的。抛开爱国情结不说,wps真的比office好? 对只需要一个办公软件的个体来说可以选择wps,但对于开发商就不能这么想了。这是角度的不同。wps可能只是20%,其实也不止20%了,而office则是典型的超20%。(除了wps,国内还有永中office,以及国际上还有很多类似的,包括sun公司有款不错的,我一时忘记名字了)。他们为什么失败?在对office一片骂声中,为什么它鹤立鸡群?我们看到的office和常用的office功能一般就够了,但那只是冰山一角。我们曾在1999年时试图解决客户千变万化的报告问题,怎么处理那些报告呢?最终采用了集成office的方式。我们可以对office再编程,并使之与我们的程序无缝集成,进而满足客户该需求。如果没有用它会怎样呢?会导致开发量、开发难度、开发周期大为增加。wps能做到吗?做不到。其实那个时候,wps还是完全有机会的。一个开发商集成了office,卖出几百上千套产品,那么无形中office就被部署到了客户中,每个客户再有几十个终端,那么几千上万套office就被实际用户在用。逐渐它成势了。 我知道office的成功,当然不只是这么简单。但这里想强调的是,面对同样的客户群体和80%的共性需求以及20%千奇百怪的个性需求,office的做法是值得借鉴的。office也不能满足100%,但它的20%wps等的20%大的多,并且它的20%是随着时间和版本的升级在不断的放大。

     

    3. 20%80%指的是什么?

         就像经纬度一样,我认为80/20应该从两个方面来看: 经度的功能(为了满足某项需求),维度的功能(满足该项需求的程度)。 对于此,有个不错的诠释是正航ERP中的T357系列。在ERP领域,客户的共性是有的,但个性化更多,怎么应对这么局面呢? 有个原型版本做定制开发是可以,但那样的结果是当你的客户多了时,产品(版本)管理以及部署实施会有一连串的麻烦。对此,SAP有其办法,但SAP的高度不是随便哪个公司都能效仿的到的。简单点,正航T357系列的做法值得借鉴。

         简单的说明:订单、客户、库存、财务、计划,这算几个功能,那么还有其它的吗?当然有,比如某客户需要其ERP系统与设备进行数据采集,或需要与另外的系统进行数据交互(比如lims)。后两者可以被看做个性化的需求,一般的ERP标配中未必含有这功能。这只是一个层面,功能的经度。再来看常规的功能中,订单、客户、库存等功能,,它们有什么不同吗?当然有,而且区别很大。同样是实现客户管理的功能,可以简单到只有一个客户列表,能支撑系统其它模块跑起来就行,也可以复杂到时一个价值几百万的全面的CRM系统。这像是从一个极端走向另外一个极端,在这两头就会有很多,,这些决定了你这个部分实现的怎么样。我把这叫做维度的功能。再进一步,在同样的维度上,还涉及UCD(客户体验如何)。这里把安全性等性能问题先放到一边。 当这种经度+维度+UCD”的功能综合起来,决定了一个产品的品质,它是参与市场竞争的手中的牌。

          这就是经纬度的问题。很多时候,把某项维度的功能往前提升一步,会比多增加两个经度的功能要难很多。

           Joel在他的帖子中,主要指的是经度方面的功能,,但这里其实也会包括维度方面的功能问题。

     

    软件中的八二原则(三)

     

    4. 关于管家婆和译言的说法

    4.1. 管家婆

          任我行在进销存领域是不错的公司,其管家婆系列在小型商户中很畅销,我与其创始人曾在一个楼上办公。因此,我知道管家婆的来龙去脉,他们到目前为止是成功的。那么,当翻阅其宣传单时会发现,其明确提出80/20的理念。大概意思是在告诉客户:存在着这么个规律,我们的产品是能满足80%客户经度的功能需要的。画外音是:你那20%的另类功能要求先放一放,我不给你这种期望和承诺,当没了这种预期,以希望最终的客户满意度会高一些。或者,也名正言顺的不给客户提供定制开发。

          管家婆是这么说的,但实际情况是怎样呢? 管家婆是靠此来获得成功的吗? 我看不是,剖析一下看:

           首先是价格。 一套中小型进销存软件,是卖包装盒的形式,并以几百上千的价格在出售。在这种格局下,客户自然不会提出你要给我定制开发某个功能的要求。这不同于ERPLIMSHIS等动则几万几十万甚至上千万的软件。此时,客户可以放弃他的20%另类需求被满足,是因为价格低。而不是因为他领悟到了并理解了八二原则。

           其次是竞争态势。当初经销存软件刚起步时,自然每一家的功能都更少更20%,同时也希望能满足80%的要求。然后开始诸侯混战了,此时某一家坚守20%的话,他早就出局了。因为,它的20%比别人的20%缩水。当客户发现有更多的更好的选择时,就会放弃你。此20%已经不是彼20%了。 它的范围越来越广,标准是某一个时段业界普遍能提供的功能界限。我称之为门槛。你说的20%只有至少达到这个门槛是才有意义,否则,单方强调八二原则的理论就跟书呆子上战场一样,必死无疑。同样的情况在OA中也是一样,看看10年前的OA是啥样,再看看现在OA是啥样,看看那些标配的功能。难道这期间客户最基本的功能需求发生了本质的变化了吗?没有,还是那些。 只是开始的时候,大家对这些需求领悟的不深,或者还没有来得及去实现好它。  回到管家婆的例子,管家婆是经历了将近8年的时间、在进销存的领域、在大量客户应用和反馈的基础上,不断的完善和改进其产品。此时他们强调的20%,已经是不简单的“20%”了。

           因此,正确的解读他们的宣传口号的话,不是我只提供20%,然后就能卖80%”,而是:

           1)通过此说法,一方面强调自己抓住了重点(宣传自己的理念),另一方面先打消客户稀奇古怪的想法(满意度=得到的/预期的)。

           2)其20%其实已经超过很多人在很多领域碰到的80%功能了。那是个文字游戏,语言陷阱。

           3)其功能是由少到多,在经纬度两个方面都在不断发展完善的。但在这个发展的过程中,其指导思想是抓主要矛盾,先满足最能够体现八二原则的,然后再进一步再这么往前推进。逐渐的产品就丰满了。他们不是,我就停留在那里当方面的、静态的强调八二原则。

     

    4.2.译言的说法

           刚刚好才是真的好中,有电话、影视、图书等例子,特别是包括googleSketchup软件和Autocad的一个例子。他们是因为只20%就能卖80%吗?我想不是,而是因为抓住了便利性、灵活性、低价格。这在很多时候,与强调功能大而全的同类产品的客户群体是不同的,或者满足同样客户群体的需求类型是不同的。因此他们有市场。

            其中,googleSketchup软件和Autocad的例子。googleSketchup真的能取代Autocad在实际工作中的王者地位吗? 那价格的差异是50美元和4000美元,即使如此也不能。一个工程师你说我会googleSketchup但不会Autocad,你去找工作试试看。 至今,或以后不断的时间内,在领域Autocad的王者地位是无可替代的,googleSketchup还撼不动它。 googleSketchup也会有其市场,因为它的侧重点不同,强调的是轻量级。 未来会怎样呢? 要么,googleSketchup坚守在它的轻量级领域保持其特有的客户群,两者分别在高端和低端占有一席之地。要么,googleSketchup要想撼动AutoCAD,就必须实现AutoCAD那些花哨的功能,并且还要做的更好更强大更易用才有机会。此时,google强调20%功能有意义吗? 没有意义。 再做另外一个假设,如果另外一家也推出了此类轻量级应用呢?功能堪比google的,并且客户体验更好,价格类似或者更低。那么,会逼着google在此产品上往前推进和完善。到了最后,大家会逐渐接近此领域的真理值(它也是随着时间变动的)。大家也会不仅拼经度的功能,还会拼维度的功能,拼客户体验。这些都决定了其自身的品质,这是他们手中的牌,再配合价格,市场运作等打牌的策略和牌技。最终,胜者王侯败者寇。胜了,怎么说怎么有道理,可以随便宣传随便说。但那个时候说的往往不是真相而是宣传和作秀。

           这种情况,同样适用于目前正在起步的物联网M2M领域。

    以上是一些想法。

    那么,软件中的八二原则到底是怎样在运转的呢? 我们应该怎样合理的运用它呢?

     

    软件中的八二原则(四)

    1.  Joel语录是对的:如果你的战略是“80/20”原则,那么你就很难卖出软件(甭想成为王者,很有可能成为fucked者)。

         不要天真的认为“80%的人只用20%的功能。所以,只要实现20%的功能,就能得到80%的销售量。

         开发商的视野与某个客户的视野是不同的。开发商可以认为某功能是小众需求不在其关键的20%之列,但客户不这么认为。因为每个20%可能是不同的,你面临的是全部客户群。

    2.  经纬度: 面对需求,软件的功能是分经纬度的。

       “经度的功能+维度的功能+更好的客户体验+性能=产品本身的品质,它决定了对需求满足度。这是开发商手中的牌。

    3.  牌和打牌:良好的经纬度功能(手中的牌)配合不同牌技和打法才能决定胜负,仅好牌未必赢,坏牌也未必肯定输。这其中,价格杠杆非常重要。其它重要的是营销和运营手法。从开发商的角度,这两者是需要协同作战的,单强调一个方面不行。单独给开发团队施压,以为产品做到最好了就能卖的最好是一厢情愿,事情往往未必如此。

    4.  起点:在刚进入某个领域时,需要八二原则来处理提供的功能和预期满足的需求。想办法把握80%的共性需求,然后用最精炼的20%功能去满足它们。此阶段期望一步到位的做到100%是不明智的,敏捷开发的开发模式和运营思路是解决此问题的良药。此时,如果已经存在某市场和竞争者,那么20%的功能至少应达到业界的门槛值,达不到门槛要求来强调八二原则如秀才纸上谈兵。

    5. 时间性:客户的需求是因地域时间等不同的,20%80%的界限是在变化的。同样,为了满足需求的功能也是随着地域时间等而不同的。不断让自己的20%的经度功能的范围越来越宽、同时维度功能越来越深,并且在不失性能的情况下提供越来越好的客户体验的公司,才有可能成为其领域的王者。这个过程,是迭代似发展的,迭代的速度重要。三年过后,自己回头看时对20%80%的看法往往会不同,原地停滞不前而指望客户理解八二原则只有被fucked

    6.在具体到某个功能点实现时(我称之为战术层面),应用八二原则是明智的。在那个点上,调研和思考八成的用户会怎样,最常见的操作习惯会怎样,实现并满足它。而此时,开发人员偏偏又会忘掉八二原则,为了少数人或难得一见的操作,让大多数人大多数操作不方便,这不明智。

  • 相关阅读:
    剑指Offer(Java版)第三十七题:输入一个正整数数组,把数组里所有数字拼接起来排成一个数, 打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321}, 则打印出这三个数字能排成的最小数字为321323。
    剑指Offer(Java版)第三十六题:从1到非负整数n中1出现的次数 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数? 为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次, 但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化, 可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
    剑指Offer(Java版)第三十五题:给一个数组,返回它的最大连续子序列的和
    剑指Offer(Java版)第三十四题:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
    剑指Offer(Java版)第三十三题:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。 由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
    剑指Offer(Java版)第三十二题:输入一个字符串,按字典序打印出该字符串中字符的所有排列。 例如输入字符串abc, 则打印出由字符a,b,c所能排列出来的 所有字符串abc,acb,bac,bca,cab和cba。
    剑指Offer(Java版)第三十一题:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 要求不能创建任何新的结点,只能调整树中结点指针的指向。
    剑指Offer(Java版)第三十题(有难度):输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点, 另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。
    剑指Offer(Java版)第二十九题:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
    剑指Offer(Java版)第二十八题:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
  • 原文地址:https://www.cnblogs.com/meta/p/2014829.html
Copyright © 2011-2022 走看看