互联网公司的很多“建模体会”没有价值
潘加宇
喜马拉雅音频的文字版本,稍作润色并加了一些图作为装饰。喜马拉雅链接
Part1 为什么互联网公司的很多“建模体会”没有价值
在讲正式的内容之前,我先讲一个小故事。有一天,张三喝酒喝得半醉去买彩票,结果一开奖,中奖两个亿。大家请张三上台介绍中奖经验,张三介绍“我那天喝酒喝得半醉去买彩票就中奖了”,台下听讲的彩民纷纷去喝酒喝得半醉买彩票,以为这样就能中大奖。显而易见,这个结论是荒谬的。
这个故事背后反映的就是我们常见的一种逻辑错误,把并存当成因果,张三喝醉是事实,中大奖也是事实,但不能因此就推导出因为喝醉所以中奖。张三之所以能中大奖,背后肯定有原因,只不过这个原因很复杂,属于“上帝算法”,人类目前还算不清楚(否则借来算一下明天双色球多好),但应该不能简单归因为喝醉了酒。
这种把并存当成因果的逻辑错误是很常见的,只不过很多时候看起来没有张三中奖这个事情错得那么明显。像球赛里面就很多。两支球队激烈搏杀,比如说利物浦对曼城,最终利物浦一球小胜,为什么利物浦能赢球,原因就是球员、技术、战术的问题,克洛普或者瓜迪奥拉心里可能是清楚的,哪个环节做对了或者搞砸了,导致赢了或输了,但这些太复杂了,球迷未必弄得懂,他就会从一些自己弄得懂的地方找原因,比如球员球衣的颜色,教练穿什么内裤,球员在更衣室里是站着开会还是坐着开会,球员是不是结对洗澡等等地方找原因。
其他广为流传的,还有比尔盖茨退学所以成了世界首富,马云没考上清华北大所以成中国首富,王思聪喜欢玩游戏,所以年纪轻轻就有几十亿资产,新冠肺炎的患者喝了双黄连就好了,有了中医我们的老祖先才能活下来,等等等等。
软件开发里面也有的了,程序员穿女装,bug就少。
那么,上面这些和我们这次讲的题目有什么关系呢?
这么多年以来,很多朋友都向我反映过这样一种观点:建模对互联网公司没用。这些朋友很多就在互联网公司工作,他们确实体会到在他们所在的公司里面,根本就没有什么建模,都是拍脑袋直接编码,当然了,它号称敏捷试错。他不是说不用UML,如果说不用UML,用别的方式来建模那还好说,他说的就是根本不专门花时间去想我们讲的业务建模、需求、分析的事情,直接就上。而且,有的公司还成功地活下来并且发展壮大了。这是怎么一回事呢?
还有另外一个现象也加强了这种看法。这十几年来,互联网公司的开发人员霸占了各种技术大会的讲台。经常有这样过的场景,一个互联网公司的开发人员在台上讲他们怎么开发自己家的网站的,讲了一个多小时,当然,很多还是真实的了。台下的听众一听,这TM不就是瞎搞,不就是以前常说的作坊式开发嘛!当然了,演讲者自称叫敏捷开发了。但不服不行,人家公司在美国上市了,圈了好多钱,而且现在开始盈利了!台下有的听众是研发总监之类的,公司做电力软件、税务软件等等,就开始反思了,人家“瞎搞”,赚这么多,我们又讲什么规范,讲什么建模,一年辛辛苦苦就赚这么点,不行,要向他们学习,回去马上引进互联网和敏捷思维,把我们的研发流程互联网化、敏捷化!
有的公司真的这样搞了,结果搞出烂摊子来,后来又来找我,潘老师,我们还是得把建模这些东西重新捡起来。
这些体会背后的逻辑错误就是前面所说的:把并存当作因果。“瞎搞”是事实,“成功”也是事实,但不能得出结论“因为瞎搞,所以成功”、“只要瞎搞,就能成功”或者“只有瞎搞,才能成功”。很可能该互联网公司的背景、人脉以及烧的钱才是公司成功的原因,至于公司里的软件开发团队采用什么开发方法,是站着、坐着、躺着还是倒立着开发,都不是主要影响因素,但是我们的开发人员就巧妙地把并存转成了因果,我简单粗暴,我赚钱,所以,要想赚钱就简单粗暴。
有一个系统,我们用了快10年了,忠诚度特别高,比苹果那些果粉可能还高,就算他做的不好,我们还是边骂边用,忠诚度特别高,哪个?12306啊。到底用了什么开发方法和开发平台,能做出这么棒的网站?可惜,他们的研发负责人似乎比较低调,很少出来揽功,因为他们知道自己的贡献占多少比例。类似的还有中共中央纪委和国家监委的网站,访问量也很大,他们的研发负责人也很低调。
有些互联网公司的开发人员就没那么客气了,就按照上面说的那个把并存当因果的套路,往自己脸上贴金——类似于“我们网站很成功,我们网站用PHP开发,所以PHP是最好的语言。”
还有一些人总是拿微信说事,微信怎么开发的,微信开发团队是怎么干的,以为学了这个就成功了。微信的成功后面有腾讯的资源。功能和微信一模一样好几个竞争对手,小米的米聊比微信还早,阿里、网易难道没钱吗,搞的来往、易信也没人用。
这样的混淆,在软件开发行业并不是新鲜事,这一套很多年前传统企业人员早干过了。上个世纪,很多企业做信息化改进的时候就受到很大阻力,反对的声音说什么呢,说:我们企业成立那么多年一直这么干,不也一直在发展在赚钱嘛”。这就是把并存当因果。没有做信息化改进和赚钱是并存的,但之所以赚钱,是因为背后的某些背景,了解改革开放初期历史的同学可能知道“双轨制”、“官倒”这些词,以前某些官员的亲戚办公司赚钱实在太容易了。如果这个权力带来的好处能一直很爽地吃下去,一直“这么干”或者“站着干”“倒立着干”“敏捷着干”都可以的,信息化改进不改进无所谓的。之所以要改进,就是因为红利不能老吃下去了。
前面啰嗦了那么多,说的就是一些互联网开发人员介绍的所谓开发经验和体会并没有多少参考价值,那什么样的人介绍的经验和体会是有价值的呢,我们下一部分再说。
Part2 什么样的“建模体会”是可信的
上一个节目我说到了互联网很多建模的体会没有价值,没有多少参考价值,那什么样的人介绍的经验和体会是有价值的呢,如果这个人开发的软件是以核心域逻辑作为主要的竞争要素,那么他关于建模方面的经验和体会是可以考虑借鉴的。通俗一点说,就是靠功能和对手竞争的系统。
互联网兴起之前的很多系统,和现在的很多行业领袖就是这样的系统。
上个世纪末的时候,我们的软件的竞争主要就是靠功能。我就说一下我自己的经历吧,我1997年毕业,先到学校当了一年老师,然后才去软件公司做程序员。第一个做的系统是酒店管理系统,当然,上面有领导带着,我只是打下手。这样的系统用的人不多,服务器一台,每个部门放上一台客户端电脑就差不多了,但功能很多啊,办入住、收银、客房,餐饮、娱乐、财务、电话计费、各种报表等等。这样的系统,能不能用建模技能把逻辑理清楚就很关键,否则要做出来就很费劲了。
后来,互联网的兴起就带来了一种这样的系统,把一些逻辑简单的功能搬到互联网上,让很多人来使用,一般都是免费的。典型的例子是hotmail,一年多时间就有1200万的用户,然后被微软收购。hotmail是什么,就是个免费邮箱,很多人都会做,问题是会做没用,竞争的关键在于有没有钱买服务器,有没有钱推广。通俗一点说就是从重功能,到功能简单,互相比性能。
很多开发人员就进入了这样的公司,然后工作的重点不是思考系统背后的领域逻辑,而是如何在大用户量的时候保持性能。前些年在一些软件开发技术大会常可以看到这样的场景:一个电子商务网站的架构师上台讲了一通,接着一个视频网站的架构师上台也讲了一通,结果,两个人讲的内容都差不多,都是说访问量大的时候怎么办,也就是说,他们讲的都是自己系统中非核心域的知识,根本不涉及核心域的知识。为什么不讲呢,比如说电商网站的架构师讲电商领域的逻辑,视频网站的架构师讲视频领域的逻辑,原因要么是逻辑太简单,要么是对自己所开发系统的核心域研究太浅。
不过,随着互联网跑马圈地的结束,互联网公司逐渐变成了行业巨头,比如京东是大商场、大物流公司,新浪是媒体,携程是旅游公司等等。另外,各个行业巨头也纷纷称为所谓的互联网公司。当所有组织都是互联网组织的时候,“互联网公司”的称呼也就没有意义了。事实上,我们的很多客户都是互联网的领袖企业。
说了那么些,总结来说就是如果是靠拼内功、拼对领域的挖掘作为主要的竞争手段,那么这样的人介绍的建模体会和经验是有参考价值的。以现在2020年这个时间点来看,各个行业里面的隐形冠军公司符合这个特征,已经从“互联网公司”这样肤浅的称呼脱离出来,变成了行业领袖的公司,也符合这个特征。反过来说也是可以的,如果公司还是以“我是做互联网的”来包装自己,那就属于比较肤浅的阶段,就没什么参考价值。
当然,这个说话的人要占据比较重要的位置,不能说我在某某行业领袖公司里工作,我就不想建模的事情,结果是在公司里面做的是最末端的工作,这样的体会就没有价值了。
在说到这个问题的时候,可能有人会说“就算功能很简单,但要应付这么多用户,背后技术门槛也不低啊,要是没有很多技术大拿支撑,网站早就崩了”。我们再拿前面说过的醉汉张三中奖的故事来类比。醉汉张三喝醉酒去买彩票,中大奖两个亿,喝醉酒和中大奖很可能没有因果关系,这是前面我和大家说的。那我们再看另一个问题,张三中了两个亿大奖,必须纳4000万所得税,不纳的话大奖就没收而且还要坐牢。假设旁边有个李四看到张三中两亿大奖,然后纳税4000万这个过程,而且李四还比较有钱,李四干脆就预交了4000万给税务局,然后再去买彩票,那么,李四的中奖概率会大大提高吗?估计是不会的。
纳税是中奖带来的“快乐的痛苦”,不是中奖的原因。互联网公司的很多开发人员属于“纳税型”,是公司的成功带来了他,他却误以为自己带来了公司的成功。所以不要再拿“没有我们,就没法应付双11”来说事了,有几个网站因为用户太多然后网站撑不住然后倒闭的?倒是不少网站或软件准备好了应付上亿用户,偏偏大家就是不用你,像前面提过的阿里做的社交软件来往。