怎么应对复杂性挑战?

过去200年的现代化过程,复杂性是个常见的事情,人类社总是趋向于越来越复杂。就拿机器来说,从最早的几十个零件,到几百几千几万个零件,现在呢?一架波音747飞机上面,有600万个零件,275公里长的的各种管线。世界上没有任何一个人能彻底搞得清楚一架波音747飞机到底是怎么回事。

但是没关系啊,人类也演化出来了一个处理这种复杂系统的方法,吴军老师的课程中有提到过,简单说就是模块化加上分层协作。每个人只负责其中的一个模块,然后层层叠加,构成一个庞大的系统。出了问题也不怕,层层分解,也能找到问题所在。所以,即使像芯片那么复杂的东西,上面集成了数以亿计的晶体管,但是人类还是可以设计它,制造它和控制它。复杂性看起来没有这么可怕。

但是,今天我推荐给你的这本书,《为什么需要生物学思维》,这本书里讲的复杂性,就没有这么简单了。

我们先来看几个数字。2015年,谷歌公司统计了自家所有产品的代码,加起来20亿行。2018年,阿里巴巴公司的程序员,一年写下了12亿行代码。听起来也还好吧?这个数字和一个芯片上的晶体管数量,在量级上是差不多。所以一个芯片我们人类可以控制。那软件我们人类也可以控制。但是请注意,它们的复杂性完全不一样。为啥?因为代码和代码之间是要发生互相影响的。这叫“级联效应”,级别的级,关联的联。十几亿行的代码,一旦发生互相之间的关联互动,而且是一层一层的不同级别的互动,产生的情况有多少种呢?肯定比整个宇宙的粒子数量还要多无数倍。

《为什么需要生物学思维》这本书里说,一堆东西放在那里,即使很多,很乱,那叫“庞杂”。但是一堆东西,到了一定数量,之间还互相影响,发生“级联效应”,那叫“复杂”。一旦达到这样的复杂。那是一个无法控制的,甚至是无法理解的系统。

所以你看,过去机械时代的工程师形象是很严谨的。他们干的活儿是绘制蓝图、按图施工、精确控制、准确无误。当他们造出了一个机械系统,不管多复杂,他们就是这个系统的神。但是今天的软件工程师呢?不行了。虽然这个系统是他们一行行写的,也是他们造出来的,但他们远远不是这个系统的神。总有一些他们控制不住的东西,比如他们一辈子都要和bug打交道。永远不可能把它们彻底消除。不是软件工程师不优秀,而是bug实在太狡猾。这就像是那个故事讲的,渔夫从瓶子里放出了一个魔鬼,发现这个魔鬼既不听自己的,也收不回去了。

这是一个很深刻的变化。

举个例子,1986年1月,美国挑战者号航天飞机升空爆炸。不到一个月后,著名物理学家费曼就提交了一份报告,说出事的原因分析出来了,是因为一个密封圈出了问题。虽然也很难,需要费曼这样大神级的物理学家才能分析出来,但是毕竟最后罪魁祸首找到了。

但是10年后,1996年,欧洲阿丽亚娜火箭在发射升空后爆炸。为啥呢?只有一个模糊的原因,说火箭在新环境下使用了一些较为陈旧的软件代码。但是,没有任何一个承包商被追责。因为这次爆炸并不是某个决策失误导致的,找不到挑战者号密封圈的那样的东西。整个发射系统的极度复杂,带来了这样的灾难。

再过10年,2007年,丰田汽车在美国出了一个重大事故,车子在行驶中突然加速,刹车失灵,最后致人死亡。这件事当时闹得很大。事后,丰田请来专家调查原因。查来查去,发现是软件的原因。说到底,是因为丰田发动机软件系统过度庞大、极度复杂,没有办法把事故责任明确地归咎于某个设计或部件出了错。

你看,就在过去这几十年里,人类制造的系统的复杂性空前提高了,高到了既搞不清楚原因,也找不到罪魁祸首的程度。有句话说得好:雪崩时,没有一片雪花是无辜的。反过来说,雪崩时,因为没有一片雪花是无辜的,所以,也没有一片雪花是要负责的。

这就是我们这代人面对的复杂性。

那你说怎么办呢?难道就只能这样束手无策?

这就是《为什么需要生物学思维》这本书的价值了。它的建议,就写在书名上了:我们不能再用物理学的思维来看我们生活的环境,甚至人造的环境也不行,而要用生物学的思维来看待我们的生存。对啊,只要转念一想,你就会发现,没有什么可怕的。我们人类从来就是生活在无穷的复杂性里的。你想啊,宇宙是复杂的、海洋是复杂的、天气是复杂的、就是我们人类自己的身体也是复杂系统。这些系统,哪一个是能完全控制、制造和预测的?哪一个不是充满了不确定性和大量 bug 的?我们不都能和它们和平共处吗?也没有惶惶不可终日啊。有什么可怕的呢?

所谓用物理学思维理解世界,觉得一切可设计、可控制、可预测,那不过是过去200多年才开始流行的一种思维方式。放长远看,200年,那只是人类社会非常短暂的一个瞬间。今天讲用生物学思维理解世界,其实不过是回归人类生存状态的本来面目而已。和错误共存,和风险共存,只要有效,不求精确,甚至不求甚解,这是所有成功物种的常态。

那怎么做呢?

比如,应对风险。物理学的方法,是要通过精确,来规避风险。而生物学的方法,是通过冗余来规避风险。昆虫、鱼,通过大量产卵诞生大量的后代,最后活下来的没几个,但是物种基因的安全是有保证的。这就是通过冗余规避风险。人类造飞机不也是这样吗?一个发动机不安全,那就装四个呗?听起来好像很浪费。但是要知道飞机发动机作为一个复杂系统,你要让它做到万无一失,是不可能的,就算可能,那成本也会高到不像话。所以,装四个发动机,反而是一种低成本的办法。

再比如,修正错误。物理学的办法,是先搞清楚原理,再改正错误,正本清源。而生物学的方法呢?在各种环境突变中,只要你能生存下来,能穿越进化剪刀,就是好样的,就已经适者生存了,至于是不是已经完全没有错误,生物学不关心,这不重要。

比如,我们公司的测试工程师,就给我看过一个测试软件,叫“混沌猴”,就是一片混沌中的一只猴子。这个软件的名字起得真好。为啥?因为它工作的方式,就像是一只上蹿下跳的没谱的泼猴,专门负责给App制造混乱、挖坑。这软件每天晚上开工,工作八小时,随机地点击我们这个得到App所有按钮。我看了一下具体的演示,点击速度非常快,怎么点击毫无章法,眼花缭乱。混乱猴就一个任务,就是胡来,直到把软件搞崩溃了,然后记录所有能让软件崩溃的操作。在第二天,自动生成一份系统出错报告,提交给程序员跟进修改。

要是在阿里巴巴这样的大公司,他们还会专门养一支蓝军程序员,就像军事演习一样,专门想尽一切办法,攻击自己公司的系统,找到bug,然后修复。

你看,所有这些做法,其实都是在模仿自然界,模仿进化剪刀。创造各种极端的环境,就看谁能生存得下来。活下来,就是好样的。至于身上是不是已经彻底没有了bug,没有了缺陷,那既不可能,也不重要。这就是生物学思维。

你可能感兴趣的:(怎么应对复杂性挑战?)