【云驻共创】云享读书会《猎豹行动:敏捷转型之旅》

举报
小Bob来啦 发表于 2022/06/27 20:07:15 2022/06/27
【摘要】 想要有更好的团队开发效率,敏捷转型是个不错的选择!

接下来,我们将要讲述一个行动。

那么,为何行动?为何转型?又何为敏捷?

本篇主要内容将围绕以上三个点进行描述,那么接下来就让我们进入敏捷开发之旅吧!

目录:

1、 会议—宣布敏捷行动的开始

2、 实践—每场转型都不是那么容易

3、 总结—我们都在不断地努力



一、会议—宣布敏捷行动的开始

可能对于敏捷小白来说,不知道敏捷开发是怎样的,敏捷开发涵盖了敏捷、精益、DevOps大部分的知识点;对于老司机来说,我们可以看到这次转型也分享了转型过程中的一个心路历程。

当一场常务管理层会议开始,就注定会有一段不平凡的日子。会议主要内容是盛远金融公司CIO思文宣布酝酿已久的敏捷转型猎豹行动启动,相关部门的敏捷转型也将由她开启。

那么我们首先介绍本文中将会出现的人物:

1. 思文是盛远金融公司的CIO,是IT部门的一把手,也是IT部门敏捷转型的推动者

2. 王章是思文外聘的敏捷教练,负责猎豹行动的具体核实

3. 张丽是本书中会经常出现的一个大型项目叫热带雨林的项目总监

4. 李俊则是项目经理,负责团队的具体交付


李俊是新来的,他和张丽都是资深的项目经理,对于瀑布模型非常精炼,但是对于敏捷认识不足,且有一定的抵触心理。且李俊一直使用他坚定不移的瀑布的那套规则。对于敏捷不熟悉。

To: 猎豹行动就是这场敏捷转型运动的代号。


至于为什么要开启这场转型呢?思文在会议中也提到她对当前业务的交付速度和交付不满,需要及时做出改变。这时王章也已到达会议,并作为本次行动的负责人。未来两年,盛远公司的重头戏热带雨林项目也将进入实施阶段,思文希望能将敏捷开发运用到热带雨林上。

那么为什么敏捷开发能受到管理层的高度重视呢?因为敏捷开发更受基层开发师的欢迎,它倡导信任、自治以及通过技术手段如自动化测试来取代繁文缛节的文档。而管理层则更喜欢管控和流程,因此很多人认为敏捷转型应该是一个自底向上的过程,但是每个团队的实际情况不一样,通过多年的经验,王章认为管理层的推动和支持也非常重要,而且确实是管理层对敏捷行动的推动力更加重要。



二、实践—每场转型都不是那么容易

在后来的实施过程中,我们用一个词总结:前进。有关项目的部门如业务部门和IT部门都在全面推开敏捷开发,并开展了敏捷扫盲班。

这里我们会提到敏捷开发和瀑布模型的最大区别,以及Scrum和敏捷以及DevOps之间的关系,最后我们也会提到DevOps的工具集以及相关概念。

对王章来说,这种敏捷基础培训,他是驾轻就熟的,因为他本身就有完整的培训大纲,大纲 分为四个部分,第一个是剖析传统模式的问题以及瀑布模式的适用极限以及它给业务和IT部门带来的痛点。第二个是转向敏捷,什么是敏捷开发以及它和瀑布模式的最大区别在哪里?具体方法和价值观是怎样的。第三,实施敏捷的好处,包括业务部门和IT部门的好处。第四,如何开展,具体的行动是怎样的。


首先,在培训的时候他则会跟学员一起分析,比如传统的瀑布模型对业务部门和IT部门的痛点有哪些。

业务部门的痛点会有逾期交付,超支,收到成品时项目已接近尾声,整个过程缺乏透明度,很难变更需求,导致最终开发出来的产品不是他们想要的,也会导致丢失市场机会。

IT部门:会有过度承诺、难以一次性消化所有的需求、惧怕需求变更、不断重做、后期压力大以及经常加班。

痛点的原因,项目开始的时候,业务部门会给IT部门需求和期望的交付日期;IT部门则需要去估算和计划,在项目开始的时候,其实只有预算和交付日期是确定的,有非常多的不确定因素:

1. 项目的范围和具体需求

2. 项目期间可能会发生很多的需求变更

3. 人员的变动,比如离职

4. 估算的准确性也是一个难题

5. 需求对现有系统的影响;

6. 服务器环境的搭建以及需要什么样的配置,什么时候能够到位


瀑布模型的大致步骤有需求分析、设计、编程、测试和发布这几个阶段,瀑布模型的问题在于这几个步骤都是一环扣一环的,像设计、编程、测试都依赖于完整和稳定的需求,就会导致需求分析非常重要,也会花费比较多的时间, 但是在交付日期确定的情况下,在需求分析上花的时间越多,后面的开发时间就会被压缩。而需求变化会打乱整个IT部门计划,所以IT部门会非常惧怕需求变更。当产品临近交付日期,如果用户发现产品不是他们想要的,则会浪费非常大的成本,这并不是大家都希望看到的。

我们知道软件开发最重要的就是搞清楚用户想要什么,然后交付用户真正想要的东西。

而敏捷开发最大的不同的地方在于它是一种迭代开发或者说是增量开发的过程,敏捷开发有很多不同的具体方法,比较流行的就是Scrum、极限编程和看板方法。

在书中培训中,王章重点介绍了最流行的Scrum方法:

Product Owner(PO)(用户和客户、业务的代言人,业务决策 需求和优先级)

Scrumm Master

Sprint

User Story(用户故事)

Product Backlog(项目的代办列表,用户故事构成)

Sprint Backlog


详细的交付流程如上,我们可以看到如此循环的一个流程图主要是为了一件事情:快速反馈。这种流程图也可以看作是一种短迭代开发。这种短迭代开发带来的好处:

业务部门不再需要一次性解释所有的需求,随时可以提出需求变更,而且过程透明,能够确保用户得到他们想要的产品。

对于IT部门来说,不再需要承诺一个未必能实现的计划,可以更早的开工和交付,为当前迭代进行更精确的计划,适应需求变化,响应不确定性,开发出正确并且是用户想要的产品。


最后,王章给出敏捷行动启动的建议:

1.围绕已知的范围和需求定义用户故事和建立Product Backlog。

2.为用户故事排优先级。

3.商定Sprint的长度。

4.商定Sprint计划会议和评审会议的日程。

5.商定发布计划。

6.准备相应的辅助工具。


那么敏捷开发和我们前面提到的DevOps有什么关系呢?

DevOps的目的就是想要打破最后一堵墙:实现开发运维一体化和端到端的持续交付,它融合了敏捷与精益的精神,涉及到自动化、精益思想、量度和分享。


想要有好的开发效率,必然离不开拥有好的工具。比如这里给大家介绍DevOps的开发工具集,工具对于敏捷转型非常重要,可以说是基础式的支撑。之前盛远使用的工具既昂贵又非主流,大家用得不顺手。盛远作为一家金融公司,经常会使用管理金融部门的思维来管理IT,对开源也是比较抵触的,导致大家无法用到最流行的开源技术、框架和工具。还好思文是来自互联网背景的,并且在IT部门内成立了工具团队,使用了主流的工具和框架,并以公共服务的形式开放给所有IT部门使用。


据上图,JIRA是一个事务跟踪工具,被用于缺陷跟踪、客户服务、需求收集、流程审批等;Confluence用于企业知识管理与协同,以及构建企业Wiki。以上是敏捷开发的两大工具,他们彻底贯彻了敏捷开发所倡导的去中心化、协作和讨论。还有其他的如Github、Nexus等等都是大家经常能够见到的,这里也不过多描述。


三、总结—我们都在不断地努力

当然,我们在经历转型时,并不可能是一帆顺风的,盛远也是。

在第一次尝试敏捷开发后得到的效果并不理想,并且王俊和王章复盘后也得到了总结,用户故事对于敏捷转型是非常重要的,为什么这么说呢?我们所理解的用户故事是具有一定业务价值的,是可以单独上线、 最小的需求。实际上敏捷并不是说看你是否运用了Scrum,就比如说你的需求还是之前的需求,那你只是用Scrum把开发切割成一个个Sprint,这个过程其实从实际上来说,跟瀑布并没有太大的不同,因为在这个过程里面,你没有任何东西可以单独上线到生产环境来实现价值,而且也没有办法在这个过程里面获得用户真正的反馈。



基于以上这张图,我们可以对每个业务点的业务价值进行排序,找出最小可用产品Mvp,并指定发布计划。

从图中可以看到有发布版本1,它虽然不完美,但是会有我们这个产品最核心的功能,从而可以让用户使用并反馈,为什么我们需要定义MVP,主要有下面几个原因:

1.开发一个功能所需要的时间和成本总是超出预算的。

2.需求是需要验证的,假设通过MVP可以快速实验,通过最小成本验证需求假设是否成立, 也就是说,MVP是一个收集反馈并不断完善的一个过程。

3.最后MVP是从业务角度来找出一个既能实现相同业务目标,IT成本又最低的方法来快速启动新业务。


除了上面的用户地图外,王章还介绍了另外一种方法——用户故事拆分。

比如大家平时会用到的支付,可以拆分成现金支付、微信支付、支付宝支付、银行卡支付等等。通过用户拆分,我们可以把一个相对较大而且复杂的用户故事拆分成更小的故事,从而缩短交付时间,能够更早的交付部分有业务价值的用户故事。但是也要注意切分的方向,比如一个用户故事涉及到前端和后端开发,不能按照平常的习惯来分离前后端开发,因为这是开发任务不是用户故事,是不可以单独交付实现业务价值的。


我们之前提到过热带雨林,能涉及到与它相关的知识点有实例化需求,行为驱动开发,微服务架构和契约测试。热带雨林这个项目可以说是盛远在这一两年最重要的项目。

实例化需求:是指用户在提出需求的时候就能把具体的验收条件,也就是说它对这个需求所谓“完成”的具体期望是什么样的

行为驱动开发可以理解为单元测试,是指以用户行为作为视角来进行行为驱动开发;

微服务架构:因为每个API就是一个独立的微服务应用,我们知道微服务架构的演进过程其实就是把一个复杂的单体系统拆解为一个繁杂的架构,从而使每个微服务应用相对简单。

综上所述,无论我们是否转型,软件开发的宗旨就是要交付给用户一个好的产品,并使我们的效率最大化,当然敏捷开发的确满足了我们的要求,但我们仍然还有很长的路要走,比如我们提到的DevOps,它将会打通开发和运维的最后一堵墙。


本文整理自华为云社区【内容共创】活动第17期。
查看活动详情:https://bbs.huaweicloud.cn/blogs/358780
任务28: 云享读书会 《猎豹 动:敏捷转型之旅》

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。