我国最大的IT项目管理门户网站,国内IT项目管理培训与咨询服务提供商

当前位置:首页 > DevOps > 正文

当生存本能遇到VUCA,谈谈我们为什么需要DevOps流水线

2018-11-14 来源:AgileRunner 姚冬
       三脑合一理论,爬虫脑,哺乳脑与理性脑
       美国National Institute of Mental Health 大脑研究和行为实验室主任Paul MacLean 提出“三合一脑”(Triune brain)理论。将人类大脑分为三个功能各异的部分:大脑核区(掌管生理功能的“生理脑”)、大脑边缘系统(控制情绪的“情感脑”)和大脑皮质(用来思考的“理性脑”)。
       原始脑——爬虫脑——生理脑
       我们的大脑是逐渐发展起来的,大脑核区是我们第一个大脑,也是古老的生理脑。这部分大脑大约在距今二亿到三亿年前已演化形成,其演化程度相似于史前时代进化了数百万年爬虫类的脑,在较低的生命形态例如蜥蜴、鳄鱼和鸟类中同样发现它,经常被称为“爬虫脑”,属于由本能所趋动的脑。
       爬虫脑演化是为了基本生存,因此其控制生命基本功能,如心跳、呼吸、打架、逃命、占有欲,喂食和繁殖等功能。人体的爬虫脑,和所有爬虫类的大脑,在本质上并无二致,是不受意志控制、冲动,并带有强迫性。爬虫脑执着于自我防卫,在防备敌人,或是在现代社会过马路时闪躲车辆,都可发挥保护自己的功能。例如当人处于愤怒时候是不受控制的,这种冲动是本能受制于爬虫脑,是不经过理智过程的。
       旧脑(大脑旧皮层)——哺乳动物脑——情感脑/感性脑
       大脑发育的第二个阶段,当生物进化到高级动物,除了顾及自己之外,还要顾及和同伴的关系,所以从原始的脑干上又进化出“情感脑”,发展出情绪中枢,以适应合作和群居生活。
       旧脑(大脑旧皮层)包围覆盖着原始爬虫脑,被称为边缘系统(Limbic system),在老鼠、兔子和马等与人类相近的物种都有,又名哺乳动物脑,与约一亿五千万年前原始哺乳类的演化有关。与嗅觉、内脏活动、情绪反应和性活动有关,使哺乳动物与外界之间具有细腻而复杂的情感互动,沟通外在世界和内在环境。
       “感性脑”是情绪和自主神经系统的掌控中枢,主要掌管情绪(高兴、愤怒、喜悦、痛苦、情绪等)、感性记忆(以情感主导的记忆)与注意力,控制人们的正向(回馈性)和负向(惩罚性)行为。
       通常把前两个脑(最古老的爬虫脑和哺乳脑)合在一起,并称其为潜意识。
       新脑(大脑新皮层)——灵长动物脑——理性脑/认知脑
       第三阶段演化的脑,称为皮质脑,这就是我们的显意识。皮质脑从4万年前便存在,目前依旧持续演化。人区别于动物最重要的部分,就是最后形成的大脑皮质。大脑皮层掌管人的思维、分析和逻辑,当大脑皮层越多,智力水平越高,思维能力越发达。
新大脑是掌管人类一切心智行为的思考中枢,被称为理性脑,主管语言说话、文字写作、计划推理、学习适应、抽象思考等功能,也是整个大脑内最后做分析、规划、整合、协调、决策判断与发号施令最重要的指挥所。
       正因为新大脑皮质的完整成熟性神经功能,大脑复杂结构与良好功能,完美协调统合谐振的意识涌现机制,才使得人类具有高等心灵智慧、聪明心智反应、丰富创造力,使得人类比其它动物更聪明。
       关于大脑的一些数据
       新大脑,分为对称的两部分,即常说的左右脑,几乎占据了目前人类全脑重量的八成左右,是神经细胞集中的大本营。
       潜意识占据大脑92%的大小。显意识仅占剩下的8%。所以,和潜意识相比,显意识迷你得多。
       大脑是人体消耗能量最大的器官。(大脑主要由水(78%)、脂肪(10%)和蛋白质(8%)组成,约占体重的2.1%,成年人大脑消耗人体能量的20%。)
       静止状态时,身体的主要器官——大脑、肝、肾和心脏,消耗占总能量的一半;另一半则是由脂肪组织、消化系统,特别是肌肉所消耗。
       当人思考的时候,大脑内的数百万个神经元会相互传递信息,并把大脑的指令传递到身体的各个部位。这些神经元在工作的时候也需要“燃料”。据测算,它们每天会消耗掉肝脏存储血糖的75%,而耗氧量占全身耗氧量的20%。大脑思考得越多,其神经元需要的葡萄糖就会越多。
       除此之外,大脑为了生存,每分钟需要0.1卡的热量。当人集中精力玩填字游戏的时候,人的大脑每分钟消耗的能量则是1.5卡的热量。相比之下,人在行走的时候每分钟大约消耗4卡热量,而像跆拳道那样的激烈运动则每分钟消耗10卡热量。
       思考快与慢,系统一与系统二
       从上面的数据能看出,人脑占的比重不多,但极其消耗能量,同时新大脑又占了大脑的绝大部分,尤其是思考时,消耗的能量巨大。
       所以人脑天生不喜欢思考:第一,思考太消耗能量,远古时期能量的摄入有限,所以需要省着点儿用。第二,真遇到紧急情况,去想为什么草会动,为什么会有沙沙的声音,喜欢问为什么的野人,已经被老虎吃了。所以物竞天择,留存下来的,都是警觉的,一听到风吹草动,想也不想先跑了再说的。
       长期演化下来的爬虫脑和认知脑,是有分工的。
       爬虫脑,负责生存,专注当下的概率,无意识思维系统为主导,响应速度快,但有思维惯性。
       认知脑,负责思考,专注未来的概率,有意识思维系统为主导,响应速度慢,但是可以通过学习来增加自己的认知带宽和选择几率。
       三脑合一,丹尼尔?卡尼曼在《思考,快与慢》中,替之以系统1(快思考)和系统2(慢思考),并非严格匹配,大体上爬虫脑+情感脑,对应系统1,而认知脑对应系统2。
       (关于丹尼尔?卡尼曼与《思考,快与慢》,这是一本“将完全改变你对思考的看法”的一本书,如果你还没读过,请尽快买一本。)
       系统1的运行是无意识且快速的,不怎么费脑力,没有感觉,完全处于自主控制状态。
       系统2将注意力转移到需要费脑力的大脑活动上来,例如复杂的运算。系统2的运行通常与行为、选择和专注等主观体验相关联。
       系统1和系统2分别产生快思考和慢思考。这种配合模式使它们的协作非常高效,能花最少力气解决问题的绝不多费一分脑力。
       当爬虫脑与认知脑,遭遇到VUCA和Cynefin
       我们目前生活在一个高度不确定性的时代,称之为VUCA时代。易变性,不可预期,不稳定;不确定性,原因与结果与影响均不可知;复杂性,相互交织,信息量巨大;模糊性,不清晰的关系。
       类似原因与结果与影响均不可知这样的不确定性,让原始的爬虫脑,完全无所适从。也难怪现代人会焦虑,源于我们92%的潜意识无法适应快速变幻的时代。
       类似于VUCA的,还有Cynefin模型。我们周边的系统,大多属于复杂系统,起因与结果,只有关联关系,却没有直接的因果对应。换而言之,同样的事情做两次,结果未必相同。
       系统1与系统2,在DevOps过程中的映射
       我们喜欢简单系统,有因果关系,输入与输出有确定关系;不喜欢复杂系统与繁杂系统,因为可能没有直接的因果关系,太费脑子,甚至费了脑子也想不出因果。
       软件研发就是一个复杂系统,研发的对象是,交付的过程是,交付的主体,人(们)更是。所以软件研发是一个很难复制成功的领域,同样的项目做两次,结果未必相同,或者说一定不同。
       所以我们需要努力寻求变化中不变的因素,找到能够“无意识且快速的,不怎么费脑力,完全处于自主控制状态”的部分,而流水线所承载的部分,恰好就是。
       以代码提交代码仓库为分水线,前面一部分是变数较多的部分,包括业务、需求、分析、设计、架构与编码;后面一部分,应该是变数最少的部分,包括编译、构建、测试、部署、发布等。后面这部分,我们将它编排到自动化流水线上,包括持续集成,持续测试,持续部署,以及持续发布。
       流水线,就是系统1:同样的代码,同样的环境,同样的编译构建,同样的版本,同样的测试用例与数据,同样的部署脚本,执行两次,我们预期结果会相同。
       前面创造性、可变性较大的部分,就是系统2,同样的业务,会产生不一样的需求,不一样的架构,不一样的编码;同样的事情做两次,结果会有不同。是需要“将注意力转移到需要费脑力的大脑活动上来”。
       以SAFe的持续交付模型为例,中间持续集成(包含了测试)与持续部署,属于系统1。而前后两端属于系统2。
 
       此前的文章“持续交付,持续部署,傻傻分不清楚”和“以终为始,再谈持续交付流水线”也说过,部署是技术行为,而发布是业务决策。我们就是要做部署与发布解耦,技术与业务解耦。做到到高效、可靠、稳定的持续部署,同时又是结果可预期、可重复、不消耗脑力的。
       系统1和系统2的分工是非常高效的
       代价最小,效果最好。通常情况下,这种分工很有效,因为系统1很善于完成自己的本职工作:它在熟悉情境中采取的模式是精确的,所作出的短期预测是准确的,遇到挑战时做出的第一反应也是迅速且基本恰当的。
       系统1是自主运行,而系统2则通常处于不费力的放松状态,运行时只有部分能力参与。系统1不断为系统2提供印象、直觉、意向和感觉等信息。如果系统2接收了这些信息,则会将印象、直觉等转化为信念,将冲动转化为自主行为、通常情况下,一切都会顺利进行,系统2会稍微调整或是毫无保留的接受系统1的建议。
       DevOps中的系统1,即流水线,也应该起到同样的作用:自主运行,不断的提供各种信息和反馈,让系统2处理这些信息和反馈时,能够不费力放松的,且“通常情况下,一切都会顺利进行”,系统2可以“稍微调整或是毫无保留的接受系统1的建议”。
       系统1遇到麻烦,系统2会出面解决
       当系统1的运行遇到阻碍时,便会向系统2寻求支持,请求系统2给出更为详细和明确的处理方式来解决当前问题。
       系统2在代替系统1进行日常抉择时总是很长且非常低效。最好的解决方法就是妥协:学会区别常会出现重大错误的情境,在风险很高的时候,尽力避免这些错误。(换而言之,在风险不高的时候,系统2可以依赖于系统1做出决策)
       DevOps中的系统1,当检测出问题时,就会向系统2提出告警,无论是构建失败、测试失败还是部署失败,都需要拉动安灯绳,以便于系统2介入进行解决。
       而遇到复杂的、后果严重的业务或架构决策时,谨慎对待,将问题拆小,将风险定位在可控范围,再将其通过系统1的流水线快速交付,以期获得反馈,以指导系统2进行有效决策。
       懒惰是人类的本性
       当你执行一个任务越来越熟练时,需要付出的努力成都就会降低,对大脑的各项研究证明,与想动相关的的活动模式会随着熟练程度的加强而变化,一些大脑区域将不再参与其中。普遍的“最省力法则”不仅适用于体力活,还适用于我们的认知行为。因为懒惰是人类的本性,因为用脑太过消耗能量。人们往往容易在不确定性面前感到非常不安高度焦虑,因为需要大量调用认知脑,而能不思考就不思考,这是人的本性。
       DevOps中的系统2,即创造性、可变性较大的部分,同样也是最消耗脑力的活动,不确定性最大的部分(所以我们叫知识工作者,事实上是脑力工作者)。我们没有办法减少或者不思考,能做的是,让系统1的部分,流水线上挂载的活动,尽可能自动化,稳定可靠运行,不去和系统2争夺脑力活动。在流水线上唯一值得消耗能量的,就应该只有创建流水线的过程,以及反馈环节检测出问题以后的排查过程,其他的无论是脑力还是体力,都不应该消耗。
       流水线是懒人创造出来的
       流水线绝对是懒人创造出来的,这是褒奖不是贬义,生产制造过程的流水线也是一样。不负责任的说,懒惰是第一生产力,因为这是人类的天性所致,这是几百万年演化出来的动物本能所致。
       生产制造与研发过程的对应
       传统制造业中大放异彩的规模效应,为什么没有在软件开发中产生明显的效果?生产制造过程,对应到软件过程,到底应该对应到哪一段?这是我们一直在纠结的问题,软件一直在向生产制造学习,无论是精益也好,质量控制也好,甚至软件工程这个词就是从制造对应过来的。那么,生产制造的批量复制,规模效应,到底应该对应软件过程的哪一段?
       事实上,生产制造中,同样也有无法批量复制的过程。生产制造里面的车辆的设计和开发,以及原型车的打造过程,并无法体现在生产流水线中,这部分同样也是创造性的工作,无法批量复制。与软件开发过程中的需求分析、设计、架构、开发过程一样。
       生产流水线将零部件组装成新车的过程,对应的是软件从版本库拿出来,编译、构建、打包、测试、部署、以及上线的过程,即自动化流水线挂载的活动。以提高生产效率为目的的工具,和基础设施上的投入,可以产生规模效应。
       所以,生产线就是系统1,所有精益的优化,都是针对生产线,什么时候听说过对设计,车的原型部分进行流程优化的?车辆原型设计、流线设计等,就是系统2,同样无法做到规模效应。想象一下,规模化设计出来的的车辆,只能是千篇一律没有个性的,而设计突出的就是个性化。
       象与骑象人
       没有系统1怎么办?人将寸步难行,系统1是决定了人类生存的基本要素。系统1是《象与骑象人》中的大象,是汽车中的驾驶辅助系统;系统2则是引领大象的骑象人,决定大象的奔跑方向。
       同样的,DevOps中的流水线就是那头大象,没有大象,骑象人只能自己行走;没有流水线作为系统1保障的软件价值交付过程,系统2则只能手动执行编译、构建、测试、部署、上线等操作,步履艰辛,这就是DevOps出现以前的状态,也是狭义DevOps试图解决的问题。DevOps Handbook强调部署前置时间的原因也正是要培养一头健康可靠的大象。部署前置时间所涉及的部分,就是系统1,就是那头大象。有了系统1的安全、稳定的保障,系统2才能正常、高效的运转。
       骑象人要引领方向,DevOps从业务到设计到开发的过程,就是为了指明方向,同样也是流水线搭建的目的所在,流水线需要根据不同的业务需要,不同阶段验证与反馈的诉求,进行适配和调整。
       小结
       达尔文说过:“生存下来的物种并不是最强壮的,也不是最聪明的,而是最能适应变化的。”
       爬虫脑与认知脑,系统1与系统2,是千百万年来人类适者生存的结果,以期达到最佳的分工合作效果。
       如今的VUCA时代,不确定性、易变性、复杂性、模糊性,需要我们自身的系统1和系统2要能够更快的适应时代的变化。同样的,DevOps过程中的前后衔接,多变部分与不变部分的引导与合作,创造性活动与机械性劳动,业务决策与技术活动,脑力活动与自动化运行,更加需要合理调配,以达到更快的交付价值,更快的响应变化。
       参考资料:
       《思考,快与慢》——丹尼尔?卡尼曼
       《你的生存本能正在杀死你》 ——马克?舍恩/克里斯汀?洛贝格
http://blog.sina.com.cn/s/blog_5375b1db0102vj78.html
分享到:

免责声明:
  1、IT项目管理界发布的所有资讯与文章是出于为业界传递更多信息之目的,并不意味着赞同其观点或证实其描述。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请浏览者仅作参考,并请自行核实相关内容。
  2、本站部分内容转载于其他网站和媒体,版权归原作者或原发布媒体所有。如文章涉及版权等问题,请联系本站,我们将在两个工作日内进行删除或修改处理。敬请谅解!

延伸阅读:

more

会议活动

more

公开课

more

PMO

Copyright © 2021 IT项目管理界 版权所有 京ICP备17062359号-4 如转载本站文章,请注明原作者和原发布媒体

本着互联网分享精神,本站部分内容转载于其他网站和媒体,如稿件涉及版权等问题,请联系本站进行删除或修改处理

客服电话:010-89506650 89504891 非工作时间可联系:18701278071(微信) QQ在线:511524637

新闻与原创文章投稿:tougao#cpmta.com 客服邮箱:info#cpmta.com(请将#换成@)

IT项目管理界——我国最大的IT项目管理门户网站,隶属卓橡公司

IT项目管理界官方微信

IT项目管理界官方微信

PMO大会官方微信

PMO大会官方微信