2018云栖大会南京峰会,阿里巴巴资深解决方案架构师赵喜鸿带来以云效助力企业走向敏捷之路,让价值顺畅流动为题的演讲。首先由西南太平洋小岛上货物崇拜的故事引申出敏捷之路之转变思维范式,其次以微信迭代为例讲述了减小批量、缩短周期,再次以醉汉警察的漫画对促进价值顺畅流动进行了分析,最后用湖水岩石效应提出了怎样让数据驱动得到改进。
数十款阿里云产品限时折扣中,
赶快点击这里 ,领券开始云上实践吧! 直播视频请点击 以下是精彩视频内容整理:敏捷之路之转变思维范式
先从一个小故事谈起,在西南太平洋的一个小岛上,当地人崇拜的不是神也不是上帝,他们崇拜地是用草与木头搭起来的轮船与枪。他们为什么崇拜这些呢?原因是二战时期美军在此地驻扎过,美军每当用轮船、飞机将物资运输过来时,都会将一部分物资分给当地人。二战结束后,他们依旧期待着有物资由空而降,慢慢地就成为了一种宗教,得到当地人的信仰。
与上述小故事类似地,当大家走敏捷之路时,也会有类似的现象。但为什么还不敏捷呢?因为大家没有看到产品敏捷的本质。一个产品要想做的成功,那么它必须能解决一些高价值的问题,通过解决这些问题使大家收益。
解决高价值问题的步骤如下:
1)找到问题
2)靠谱的方案
3)更快速的交付
4)用户愿意买单
但是这些步骤并不是容易实现,都是一些假设,依旧面临着许多问题。例如:所找到的问题是高价值的问题吗?解决方案是真的靠谱吗?能够按期望的方式交付出来吗?用户说的问题是他最想解决的问题吗?核心资源会不会被对手挖走呢?存不存在bug呢?这些问题都是不可控、不确定的。
例如在医学上应对“不确定性”时, 选择用小白鼠做实验,但为什么不选择其它的小动物呢?原因不仅仅是小白鼠的基因与人类的基因相似度高,还有选择小白鼠的成本低,繁殖速度快。
产品开发具有医学一样的性质,要做到比竞争对手更快的速度、更低的成本来验证假设、交付价值、响应变化。
现实去医院看病的流程为开始→等待→挂号→等待→看医生→等待→交费→等待→拍片→等待→看医生→确诊,这个过程需要耗费大量的时间,使得资源效率最大化。
而期待中去医院看病的流程为开始→挂号→看医生→交费→拍片→看医生→确诊,这个过程不需要耗费大量的时间,使得流动效率最大化。
将现实中与期待中看医生相比较,可以得到局部的效率不能带来全部的敏捷,必须要分工进行。在产品开发中也一样,我们的问题几乎从来都不是停滞的资源(工程师),而是停滞的产品需求(用户价值)。但资源效率与流动效率相比较,流动效率更重要,因为需要做到快速的验证假设、交付价值、响应变化。
快捷之路之减小批量、缩短周期
排队论里的利特尔法则是:平均交付周期 =在制品数量∕吞吐率。
要想缩短周期有两种方法:一是将在制品数量减少,二是将吞吐率增大。两种方法相比控制在制品数量减少,是最简单的缩短交付周期的方法。
迭代开发要想做到缩短周期需做到更少的需求、更短的周期和更频繁的学习调整。
云效的分支功能,让交付更可控应做到以下四点:
- 第一,企业走向敏捷之路并不是一开始就做到很大,而是一步步来。首先要小批量保证产品正常的发布出去,然后分支到位,在分支上进行功能开发。
- 第二,使用集成分支进行发布。将分支集合起来进行调试,如果某个分支不到位,则将这个分支踢出去,剩下分支重新集成。
- 第三,自动化拉分支、合并、拉集成分支、含并主干、回滚代码等操作。
- 第四,功能分支随时可以退出。
敏捷之路之促进价值顺畅流动
上面的漫画讲述了这样的一个故事,一个醉汉在拼命的找东西,警察问醉汉你在找什么?醉汉说“我在找我的钥匙。”警察说:“这里没有钥匙呀!你为什么在这找呀!”醉汉说:“因为这里有灯呀,我只能在这里找呀!”
与漫画同理,在做优化的过程中不应该只在开发看得见的地方优化,而是要将光照到有问题的地方。让光照亮关键所在应做到下面三条:
- 云效需求看板:可视化端到端价值交付过程。
- 需求卡片:可视化需求的端到端交付过程。
- 任务卡片:关注共同的目标,对齐不同人的工作。
让光照亮出现的五个关键性的问题如下:
- 瓶颈:出现了拥塞现象,所有的任务拥挤在一起不能按序完成。
- 中断:中断导致没有需求。
- 障碍:开发的质量太差,存在bug。
- 即将到期或已经到期的需求:有些需求存在截至时间。
- 长时间无进展需求:应当解决没有进展的需求。
敏捷之路之让数据驱动改进
从一个简单的例子开始说起,即湖水岩石效应,当湖水水位高的时候看不见岩石,当水位下降时看见岩石。
所谓的开发就是指的是水位周期,水位周期也并不是越短越好,因为短到一定极限时,并不是开发的所有分支都能在周期内完成任务。周期可以划分为以下三个阶段:
- 响应周期:客户提出需求后,多长时间能够满足客户提出的需求。
- 交付周期:开发的产品多久能够上线。
-
开发周期:问题被解决需要的时间。
对此提出了水位(改进目标)示例:
- 客户周期(2周): 从选择一个机会到上线的时间
- 开发周期(1周): 从需求就绪到可上线的时间
-
发布前置时间(1小时): 代码就绪到上线所需要花费的时间
本文由云栖志愿小组毛鹤整理编辑