讲点故事

十分钟深入了解持续交付 ~

2019-05-10  本文已影响0人  StoryRecorder

想要把握这个时代,就必须理解计算机。理解计算机的关键,则是要理解计算机背后的人。

背景介绍

互联网时代,头部的基本需求已经被全部满足,未来的方向或许是现有模式的颠覆,或许是长尾个性化需求的充分满足,又或许是小众人群的挖掘。在这样的大背景下,如何通过极致的研发运营效率,快速发现新的机会,降低创新成本就变得尤为重要。

实际上,国外的互联网公司已经做了先行者,进行了很多不同的实践,其中之一就是持续交付。有人问:“为什么持续交付的概念在09年就已经在国外盛行,而中国近几年才开始流行?”

面对这样的问题,有三个这样的答案。

腾讯的答案给人印象深刻,跟我们现在的实际场景也很像。或者说,这是企业发展到一个阶段的必然现象。

开始之前

文章的内容多摘抄于《持续交付2.0》(侵权即删),也希望大家能够购买并阅读乔老师的新作,我也算为精益思想的布道做了力所能及的贡献。
在签售会上,乔梁老师用了一个小时来介绍写书的用意,以帮助读者更好的认识持续交付2.0。
这里,笔者不自大于能带领大家领略持续交付方法论的思想,但希望文章能够给大家埋下一个意识,在面对组织上的迷茫时,能够想起有持续交付这个方法,然后翻开书本,揣摩其深意。
如此这般,就是有价值的。

历史缩影

Part I

在1968年,出现了第一次软件危机,落后的软件生产方式无法满足迅速增长的计算机软件需求,导致软件开发和维护过程中出现一系列严重的问题。

在全新的计算机领域中,人们借鉴了工程领域的工程方法,以实现“按预算准时交付所需功能的软件项目”的愿望!

1970年,Dr. Winston 首次提出了瀑布式软件开发方法,它将软件开发过程定义为多个阶段每个阶段有严格的输入和输出标准管理者希望通过这种重计划、重流程、重文档的方式来解决危机,具备这三个特征的开发方法统称为“重型软件开发方法”。

瀑布图

软件开发像瀑布一样,从一个阶段流向另一个阶段。实际开发过程中,每个阶段都需要花费过长的时间(数月),需求也在不断变更,然后按预算准时交付的问题仍然没有得到很好的解决。

Part II

1994年,Chaos Report 显示,软件交付项目的失败或交付困难的比率仍旧很高(成功率16.2%,受到挑战的52.7%,失败的31.7%)。

很多优秀的软件工作者也不满意于瀑布式开发的交付成果,并在工作实践中总结了新的开发方法。在2001年,17位软件大师齐聚加拿大的小镇“雪鸟”,总结了“轻量级软件开发方法”的特点,发表了“敏捷宣言”。

敏捷开发方法,从一开始就不特指某一种开发方法,而是一簇软件开发方法的代名词。

敏捷的核心原则是:强调人的主观能动性,提倡面对面沟通、拥抱变化、通过迭代和增量开发尽早交付有价值的软件。

很多团队认识到,软件开发其实是一件不断迭代学习的过程,软件工程师需要不断和业务领域专家交流讨论来学习,将其转化为数字世界的表达方式,并不断持续这个过程。简单的说,把业务和软件工程师整合在一起

在敏捷早起,迭代的周期仍然非常的长,业务人员和研发人员之间关于需求的变更仍然是主要矛盾。

这两个时期,无论是瀑布式开发还是敏捷开发,最重要的关注点都是可交付的软件包本身,即如何快速的把软件需求变成可交付的软件包。

敏捷实践

软件需求的反复变更,俨然成为了IT领域最为突出的问题。

从“敏捷宣言”中,我们已经看出了解决的方向:拥抱变化、尽早交付、增量开发、反复迭代。

接下来一系列的实践,都在体现这样的精神。

持续集成

“持续集成”作为敏捷开发方法的一个工程实践,率先被广泛的IT组织接受。

持续集成,就是把完成的代码不断转变成可交付的代码。简单的说,把开发和测试的职责整合在一起

DevOps

在2008年的多伦多敏捷大会上,一个“敏捷基础设施”的临时话题中,独立IT咨询师 Patrick 分享了一个“将敏捷实践应用于运维领域”的讨论,并成功催化出一种运动,迅速传播,这个运动就是DevOps。

DevOps的原始定义是“DevOps是运维工程师和开发工程师参与整个服务生命周期的一组实践”,并提出,倡导运维人员更多地使用和开发人员使用的相同的技术来进行系统运维工作。简单的说,把开发工程师和运维工程师整合在一起。事实上,截止到今天,业界对于DevOps都没有统一的标准定义,如同敏捷,每一位从业者都有他自己的看法。但是值得明确的是,它们的目标和原则都非常明确,DevOps的目标是缩短开发周期,提高部署频率和更可靠的发布,与业务目标保持一致

和敏捷开发方法相似,DevOps并非一个标准、一个模式 or 一个固定方法,它在提出之时的实操指导性略显不足。同一时间,IT领域出现了的另一个概念“持续交付”。

DevOps 教研-开发

持续交付 1.0

敏捷之势,愈演愈烈,绝知此事须躬行。

秉承能够实践的原则,10年正式出版了一本书《持续交付》,持续交付被定义为一种能力,以一种可持续的方式,安全快速的把代码部署到生产环境上,让用户使用。简单的说,把业务人员、开发人员、测试人员和运维人员都整合在一起。业务人员提出软件需求,开发人员完成编码,测试人员检测功能,运维人员部署并监控服务,业务人员通过监控数据提出新的软件需求,这就是持续交付1.0的闭环模型。

持续交付1.0

持续交付这本书,提供了一系列工作原则和优秀的实践方法,真正在实践中提升了软件开发活动的效率,是一个经过检验的范式。

精益思想

技术必须创造价值,如果没有或者不够,那一定是我错了。

在实际场景中发现,有一些软件功能并没有产生什么影响,根本没有用户使用。但是这些功能确实花费了团队的很多精力才设计实现,这是一种巨大的浪费。这种“无效”的功能越多,浪费就越大,我们能否找到一些方法,让我们付出的努力对业务改善更加有效,或者只用很少的成本就验证对业务无效呢?

最小可行性产品(Minimum Viable Product, MVP)。这个原型并不是一下子设计得到一个完美的产品,而是为了验证自己心中的商业假设,得到用户的真实反馈后,从每次的结果中学习,再快速迭代,持续修正,在资源耗尽前从迷雾中找到通往成功的道路,最终适应市场的需求。

精益思想。根据用户需求,定义企业生产价值,按照价值流来组织全部生产活动,使价值在生产活动之间流动起来,由需求拉动产品的生产,从而识别整个生产过程中不经意间产生的浪费,并消除之。在业务生产中的所有活动,可以被归结为两种,增加价值的活动和不增加的,不增加价值的活动就被称之为“浪费”,浪费也可以被归结为两种,必要的浪费(工作项的交接、寻找信息、测试、管理),和不必要的浪费(无人使用的功能,库存,软件缺陷)。

尽管“消除所有浪费”几乎是不可能的,但是,我们仍旧要全面贯彻“识别和消除一切浪费”的理念,持续不断的优化流程和工作方式,达到高质量、低成本、无风险地快速交付客户价值的目的。

持续交付 2.0

回到开始,我们正处于一个补课的阶段。

2009年左右,LinkedIn 从过去每年发布12次,到现在实行3x3,每周部署3次(Mon, Wen, Fri),每天发布3次(11am, 1pm, 4pm),Amazon的成功是每年、每周、每月、每天多次实验的结果,FaceBook在任何时候都不只一个版本在运行,而是一万个。

“持续交付2.0”是一种产品研发管理思维框架。简单的说,精益思想和持续交付1.0整合起来,强调业务和技术之间的快速闭环,以一种可持续方式,高质量、低成本、无风险地快速交付客户价值。对企业来说,开发软件产品的目标是创造客户价值。因此,我们不应该仅仅关注快速开发软件功能,同时还应该关注我们所交付的软件的业务正确性,以及如何以有效的资源快速验证和解决业务问题。也就是说,不断探索发现真正要解决的业务问题,提出科学的目标,设计最小可行解决方案,通过快速实现解决方案并从真实反馈中收集数据,以验证该问题是否得以解决。这是一个从业务问题出发,到业务问题解决的完整业务闭环,也是一个整合精益思想和持续交付的双环模型。

持续交付2.0的四个核心原则

2.0 双环模型

价值探索环

这是一个外在的环,价值只能被外部定义。

很多企业在开发新产品时,会采用“概念验证”或“产品原型法”,然后用较长的开发过程去实现产品。由于市场变化太快,花大量时间完成开发后,可能因为对潜在用户的理解存在偏差or用户需求发生变化,导致当初的设计不被市场接受。在这个过程中有三个假设,用户假设(潜在用户),问题假设(臆想需求),解决方案假设(我们很牛)。这三类假设中,任何一个不成立,都会导致事倍功半,甚至前功尽弃。

价值探索环的目的就是要我们从业务问题出发,和团队一起,共同找出这三类假设,制定MVP,借助环的高速运转,获得反馈,不断验证和迭代。

举办一个知识分享会,有一个客户希望下午能喝一杯咖啡。于是我们就问“需要什么口味”“热的还是冰的”“大杯还是中杯”“什么时候拿到”,这样就会去准备冰箱、冰块、水杯等等。反而忽略了客户为什么想要咖啡。如果客户是因为害怕而错过精彩分享,我们是不是可以采取录制视频,增加互动环节,允许会场走动等活动。

我们相信,通过实现(xxxx最小功能组合),我们的指标可以达到(xxxx程度)的话,说明我们关于(xxxx)的假设是成立的。

工作原则

快速验证环

这是一个内在的环,有了需求,如何快速上线并获得真实可靠的反馈。

质量和速度是验证环的关键,也就是说,发布质量好而且频率要高!(一些来自于1.0的方法:质量内建、小批量交付、自动化一切重复工作)

工作原则

补遗

团队的文化建设

It is our choices, Harry, that show what we truly are, far more than our abilities.

链接中是腾讯的人才发展观,干货很多,值得一读。

写书原因

曾:你写本书吧,把你的精益思想写出来
乔:为什么要写啊,你给我一个事情,我能保证把它解决
曾:你能解决一个问题,一个团队,可是我有这么多团队,这么多问题,怎么办?
(语言记录不尽详实)

在团队中也一样吧,程序员能写一个模块,一个系统,那企业有那么多模块,那么多系统,怎么办?

A Small Tip

持续交付2.0是非常好的思维框架,但也并不是可以完全照搬照抄的,框架中重要的是方法论,读书的过程更应该吸收这种思想。就比如软件领域的大型游戏开发,就不可能做一个MVP然后得到用户真实数据后迭代。

SCRUM中令人愉悦的经验

** 转载请注明出处 ~

上一篇下一篇

猜你喜欢

热点阅读