《软件方法》全流程引领AI-第1章 ABCD工作流-01
对PlantUML们的评价-《软件方法》全流程引领AI-第1章 02
AI辅助的建模步骤-《软件方法》全流程引领AI-第1章 03
伪创新-《软件方法》全流程引领AI-第1章 04
山寨、染色和敏捷-《软件方法》全流程引领AI-第1章 05
圈子割裂历史和封闭引用-《软件方法》全流程引领AI-第1章 06
用口号代替方法-《软件方法》全流程引领AI-第1章 07
这是我经常被问到的一个问题。
一个有趣的现象是,当我被问到或说到这个话题时,相对于刚才讲“如何建模”的时间段,一部分听众的注意力肉眼可见地集中起来!并不是所有人都把思考当成乐趣,当听到“可以不思考”时,会像“零元购”一样不由自主地感到快乐。
前文已经说过,编码就是建模,所以什么样的系统都需要建模。不过,“什么样的系统不需要建模”这个问题真正要问的是“什么样的系统可以不用做业务建模、需求、分析,而直接设计(编码)”。
过去的软件工程书籍中常会说“自己搭个狗屋不需要建模,盖摩天大楼需要建模,因为后者更复杂” 。这样的说法缺少了经济学知识。
以获利为目的,每个战场都是残酷的。搭狗屋和盖摩天大楼的获利难度一样。如果搭狗屋很容易赚钱,大量资源会从盖摩天大楼转到搭狗屋,甚至本来造汽车、造飞机的也会转行来搭狗屋,获利的难度马上和其他战场拉平。
搭狗屋有搭狗屋的学问,盖摩天大楼有盖摩天大楼的学问。盖摩天大楼的公司要抢搭狗屋公司的市场,并不容易。甚至,造汽车的公司要抢造玩具汽车的公司的市场,造飞机的公司要抢造玩具飞机的公司的市场,也一样不容易。
不能先入为主地认为某个形态的系统就是简单系统,某个形态的系统就是复杂系统。更合理的回答是:如果决定竞争成败的因素中,系统本身的能力因素占比例很小,那么这样的系统不需要建模。
不少在互联网公司工作的开发人员向我反映过这样一个观点:UML在互联网公司用处不大。当然,如果说只是不用UML建模,用别的表示法建模,那还好说,但这些开发人员说的“不用UML”其实指的是不会有意识地去思考ABC工作流,而是直扑D工作流,美其名曰“敏捷试错”。
我看到的另外一个现象是:互联网公司的开发人员霸占了各个技术大会的讲台,他们四处布道“互联网开发思维”、“敏捷开发思维”。经常有这样的场景:一个互联网公司的开发人员在台上讲他们怎么开发自家系统的,台下的听众一听,这TM不就是瞎搞,不就是以前常说的作坊式开发嘛!当然了,演讲者自称“敏捷试错”、“敏捷开发”。
可是,不服不行,人家公司上市了,而且现在开始盈利了!台下有做电力、税务之类软件的同学就开始反思了,人家“瞎搞(敏捷试错)”,这么成功,我们又什么规范,什么建模,一年辛辛苦苦就赚个辛苦钱,不行,要向他们学习,回去马上引进互联网思维和敏捷开发思维,把我们的研发流程互联网化、敏捷化!
有的公司真的这样搞了,结果搞出烂摊子来,后来又来找我,潘老师,我们还是得把建模这些东西重新捡起来。
★目前大多数的信息系统所使用的技术栈、部署方式以及访问方式都是“互联网”式的,“互联网公司”更严谨说法是:运营面向大众的信息系统的公司。
★根据我的记忆,2008-2018年之间,上述现象发生频率较高。
首先,可以用“幸存者偏差”来解释。很多“瞎搞(敏捷试错)”的公司死掉了,没有“正在其中工作”的开发人员,更不用说在技术大会的讲台上布道了。
其次,即使对幸存者而言,它们在竞争中能够打败其他对手存活下来,并不是自家系统本身的能力比竞争对手系统的能力高出一截,而是其他因素导致的。布道者有意无意把自己所在公司的成功和“瞎搞(敏捷试错)”联系起来,引导听众掉入“错误归因”的逻辑陷阱。
“瞎搞”是事实,“成功”也是事实,但不能把并存当作因果,得出结论“因为瞎搞,所以成功”、“只要瞎搞,就能成功”甚至“只有瞎搞,才能成功”。很可能该公司的背景、人脉以及烧的钱才是成功的原因,至于公司里的开发团队采用什么开发方法,是站着、坐着、躺着还是倒立着开发,无关紧要,但是布道者巧妙地把并存转成了因果。
★有一天,张三喝酒喝得半醉去买彩票,结果一开奖,中奖两个亿。大家请张三上台介绍经验,张三如实描述“我那天喝酒喝得半醉去买彩票,就中大奖了”,于是台下听讲的彩民纷纷去喝个半醉然后买彩票,以为这样就能中大奖。可惜,没中奖的李四王五等人没资格上台布道(幸存者偏差),喝醉是事实,中大奖也是事实,但不能因此推导出因为喝醉所以中大奖(错误归因)。
===待续===