“敏捷不是单纯的“快”,而是通过低成本、短迭代地快速交付和响应,以最大化客户价值。不再进行规模经济竞争,而是在适应能力、避免库存和小单位工作方面的竞争。需要从产品和组织两个维度进行学习和改进。”
01丨项目背景介绍
某大型通信企业某省公司,从2014年接受优普丰敏捷Scrum培训及CSM认证后,一直在探索传统企业的敏捷转型之路。传统的持续投入加软硬件改造模式越来越难以提供业务发展亟需驱动能力。而通过实施敏捷转型可以在保障系统稳定及用户感知的同时大幅提升更新迭代速度。
A项目是整个转型大潮中的一个新鲜事物,从2016年初开始立项进行内部创业。希望通过DevOps工具实践结合Docker云技术作为落地,一方面来深化组织的敏捷转型,提高质量、加速交付周期、提升效率,推动组织变革、技术创新、文化提升。另一方面更希望在互联网时代和大数据时代能够继续领跑,建立自己的互联网产品研发运营能力,快速响应市场业务需求,打造创新的用户体验,做到“专注极致口碑快”。
然而,三个月后,甲方负责人发现该项目需求方向不明,合作开发团队技术框架陈旧,人员技能不足,开发进度缓慢,难以达到预期效果。
因此,甲方负责人邀请UPerform教练和顾问团队进入此项目进行帮助,以期待能够尽快顺利上线第一个版本,并持续优化该产品。
02丨项目的实施
敏捷教练进入团队辅导后,首先与甲方负责人成立转型委员会。通过调研现状和成员访谈,初步确定了从需求梳理、协作过程、技术实践等几个方面入手,派出2名经验丰富的敏捷教练入场,均为多年一线实战经验,兼具管理和技术辅导的全栈能力。在和利益干系人沟通后,确定了DevOps的推进路线图。然后,蜕变从一场精心准备的敏捷培训开始了。
“天下武功,唯“快”不破,某敏捷体系目标是持续简化流程、消除浪费 、缩短周期,在不断演进过程中“加速度””
过程协作
首先教练对交付团队和业务方进行了完整的敏捷培训,着重于Scrum角色定义和可视化看板。培养开发团队的项目经理担任ScrumMaster,挑选甲方项目经理转型为产品负责人。
培训之后,大家在教练带领下首先建立了可视化的看板,并且制定了团队公约、完成的定义(DoD)等,将协作规则显性化,并且得到每个人的认可。
团队不区分开发和测试人员,促进大家的融合和学习提高。每个人都对质量负责,互相支持和帮助。这样做,一来可以是每个人获得最直接的用户反馈,减少任务交接的浪费和信息丢失,为共同目标而努力;二来让团队成员都有机会成长和扩展自己的技能范围,提升自身竞争力。
一开始大家在工位上是不说话的、团队士气低落,因为过去大家经历的管理方式更多是命令与控制。经过一两个迭代营造自组织的氛围,团队协作大大改善,每天交流地非常热烈,每周回顾会上也是踊跃发言,直面问题并改进。
需求计划
“需求蔓延”是很多项目和产品的常见现象,而敏捷和Scrum强调“在最短时间内交付最大价值”,使利益干系人(包括用户和管理层)满意。
教练持续地辅导甲方产品经理,在与利益干系人就产品愿景和商业模式达成一致后,开始通过影响地图识别用户与利益干系人,进行价值排序,在有限时间内尽快上线最有效果的功能,尽早进行反馈。教练还与产品经理一起到地市公司调研,利用MVP产品原型快速获得实际用户反馈,同时分析竞品,利用设计思维帮助产品经理识别价值点。
基于持续需求梳理和频密上线,整个产品项目组逐渐获得了更灵活的响应变化的能力。同时,在教练的建议下,产品还进行了埋点设计,能够从线上用户的行为来改进产品。产品经理有能力迅速地获知用户反馈,整个产品按照精益创业的思路迅速的进化。
团队采用每周一个迭代。在迭代开始时,会有迭代计划会议。教练会辅导产品经理与团队共同梳理需求,并根据用户和利益干系人的即时反馈进行调整优先级。随后,教练引导大家将需求分拆为可实现用户故事,定义验收条件。这种做法也称为“验收测试驱动开发”(ATDD),可以使大家在每个迭代开始动手之前对需求达成共识,减少返工和争执,有助于各方建立信任和信心。
该DevOps云产品是从无到有慢慢通过口碑积累了数百名用户,整个产品和研发团队贯彻了“全面运营”思路,每个成员都有机会和产品经理一起为接入用户服务,在用户系统上线部署时现场解决问题,将反馈第二天就进入产品需求待办清单,在下一迭代改进。以此形成完整的”概念认知-产品研发-数据度量“反馈闭环。
“最短时间,交付最大价值”
技术实践
整个DevOps平台一开始的设计是采用Gitlab作为代码版本控制平台,可以高效地多分支管理,适合于持续集成和多人协作。敏捷教练与领导和团队宣讲后,得到高度认可。按照教练给出的参考方案,多个团队快速地以较低的迁移成本转换到Git。教练予以支持,和团队一起解决疑难问题,消除了疑虑和障碍。
围绕Gitlab和Jenkins,团队需要搭建平台功能。在教练的带领下,抛弃了原本的整合框架,采用更具灵活性的现代方案,并利用单点登录实现多工具之间打通,用户只需登录一次即可。基于这种“站在巨人肩膀,不要重复造轮子”的思想,团队快速地构建了第一个版本,实现了快速上线。
前端开发采用Vue.js框架和Webpack构建方案,后端开发采用Spring-boot和Maven构建方案。架构上进行前后端分离,两者通过RESTful API进行通信。模块化设计,解耦依赖,便于自动化测试,同时为将来扩展到移动端做好准备。
这些框架工具均是业界流行且相对成熟的方案,经过敏捷教练精心设计和巧 妙组装,配以培训和结对手把手辅导等方式,大大降低了学习门槛和大家对新事物的恐惧,且能够快速上手,稍加练习即可写出统一规范的代码。
在构建方案中,内建了严格的代码规范与技术债扫描,使得开发人员能够尽快改正,避免“破窗效应”,而且因为每次改正的工作量小,使得开发人员乐于接受并养成习惯。
教练还识别种子选手进行git实践宣讲。该成员毕业仅1年,原本并不突出。在教练的鼓励下和成员的支持下,激发出巨大热情,平均每月都会组织一次git讲座,参与人员200余人,人称“git教父”。通过这种方式,教练将转变组织文化的责任巧妙转移给客户团队,让大家能够产生更多“内源动力”,在教练离开之后,团队仍能够继续向前推进。
传统开发方法产生的代码只能交付商业价值,但很难及时响应需求变化,从这个意义上说,开发人员编写的绝大部分代码都是脆弱的。这 种情况下,程序员是无法在迭代的节奏下,持续通过产出高质量代码 来交付价值的。在响应新需求的时候,需要进行很多修改,这些修改要么很容易引入新的缺陷、要么工作量大大超出预期,风险无法把控。
敏捷教练主要带领团队关注在以下领域:代码规范、静态代码扫描、自动化测试保护网的建立;消除当前迭代产生的技术债务、代码味道、重构、整洁代码;在 每个迭代中偿还技术债务;SOLID原则、对象健身操、设计模式、函 数式编程、扩展柔性代码的领域。通过手把手的讲解、辅导,使大家掌握了这些技巧,并建立起信心。
“一开始我认为敏捷在我们这种文化里行不通。然而这一年下来,团队能力和氛围有了明显的改善。” ———–项目合作乙方省级负责人
03丨效果与反馈