Flexagile 弹性敏捷 - 理论篇
R/适用性
相信大家在项目运作过程中,一定碰到过多产品线同步开发、多项目并行的场景。我根据在 RingCentral 的团队运作经验,整理了此篇文章供大家参考、学习交流。
在 RingCentral,我所负责的开发团队因致力于各类丰富应用平台的产品集成,团队面临着多产品同步并行的挑战。在实际的开发过程中,曾应用经典的敏捷开发模式,仍然遇到了很多挑战。我和团队经过多种尝试与实践,沉淀出一套方法,并将其命名为 Flexagile,是团队一个重要进步的里程碑。
Flexagile 不同于 Scrum 必须跑迭代,不同于 SAFe 适用于百人的大型团队,也不同于 XP、kanban 等适合小团队。其适用于多项目,多产品线的并行开发。
R/优势
确保最高优先级的项目优先开发
在业内常见的软件开发过程中,我们时常见到各个功能团队(Feature Team)分别各持一份需求优先级列表。功能团队根据当前的优先级分配好人力资源,对项目而言,项目初期需要投入较多人力,后期功能迭代渐缓对人员配置需求降低。在来不及做人员调整的情况下,产品经理要么为了满足饱和运作让团队迭代一些低优先级的功能,要么减缓团队运作的步伐。这就是为什么公司不同项目团队,有的累死累活,有的度假休闲。
在 Flexagile 中,我们把所有的需求放在一起做优先级混合排序,产品需求会被拆分成多个分阶段的小产品需求。在定期召开的全体计划大会上,多个项目团队聚在一起从统一排序的需求优先级列表按照优先级顺序领取需求, 以确保团队把精力一致地集中在优先级最高的需求上。
建立强烈的主人翁意识(Ownership)
任何一个组织至少要由两个人组成,其中一个人负责发出指令,通常把这个发出指令的人称为管理者。在传统模式中管理者相对固定,通常称为管理层,而在 Flexagile 中,任何团队成员都有机会成为管理者,彼此之间形成一种动态管理关系,传统模式的单向管理在 Flexagile 中变为了双向管理。
Flexagile 就是把积极性和主动性调动到工作中,让大家自主选择项目和需求,选择团队成员,并对项目进行评估和计划。充分发挥每个人的主观能动性和全局意识观。
有效降低因项目经理个人判断失误引起的资源浪费
很多公司的项目计划方式是项目经理依据自身的经验,利用甘特图对需求做出估算来调度人力资源。但由于项目经理的自身局限性,如没有技术背景,对开发人员技能不熟悉,对项目技术理解不够深等,易导致项目安排不合理,人力资源出现浪费。
而 Flexagile 是通过其定义的全体计划大会来优化项目安排的合理度和资源调配的自由度,需求任务根据团队的情况“按需”认领,而不是“分配”。
增强团队成员与公司规划(Roadmap)的连结
公司的规划通常会随着市场的变化、用户的反馈和内部资源的调整做出相应变更。根据全体计划大会和自身项目计划输出反馈,公司会对规划相应地做出必要调整。
管理者可以及时得到项目的风险状况和变更动态。团队成员也会跳出自身项目局限,从而看到公司战略全貌和相关的高层级项目计划。
促进跨团队交流
每一个项目团队不再是一个个孤岛(Silos),而是一汪人员不断交替变化的活水。团队成员在上一个项目进行的过程中有好的实践和经验,将会自然地传递给下一个合作团队。这对构建共同文化和共同学习有很大的帮助和作用。
R/自主
在 Flexagile 的敏捷框架体系下,一个项目组会被切分为多个功能团队(Feature Team)。每个功能团队负责项目功能完整的端到端实现(包括前端、后端、数据库,开发、测试、CI、CD)。
Tips: 不建议用前端团队、后端团队的方式割裂不同的组,在一个团队中需要有需求功能完整交付的所有技能。
图源:Ethan Huang CST 敏捷培训师的 CSM 培训课程教义
自主选择需求
每个功能团队会在全体计划会议上自主选取相应的功能,这有利于项目代码的共享和消除人员变动对项目的影响,团队自主性大大提升了团队成员的积极性。
当然,如果你的团队在同时并行多个项目,可以把项目当做功能来进行自主选择。
自主组建团队
根据大家选择的目标功能的大小和可并行度来调整功能团队最终的大小和人员构成(一般推荐 2~9 人,包括各种职能的成员,基础支撑如负责自动化环境的团队成员可以跨团队支撑多个功能团队)。
自主安排计划
团队自主安排计划并不意味着团队可以随心所欲。团队成员在结对进行需求分析后,共同讨论产出项目计划,项目经理或技术经理在计划过程中充分授权。在项目计划过程中,团队成员会识别项目风险并相应调整项目计划。毕竟最了解项目本身的是团队,而不是项目经理。
自主应用敏捷框架
每个功能团队可根据自己团队的人数和项目的性质,决定团队采用与之匹配的敏捷框架。如:
● 2 人团队,可以选择 XP(极限编程),坐在一起结对编程;
● 3~7 人团队,可以选择 Scrum 的周期性迭代;
● 方便部署的 web 项目,会更期望使用 SAFe 的发布列车(Release Train)和 Facebook 的 Dark Deploy 技术来实现已完成或不完全完成的功能的短频快发布。
R/待续
看了 Flexagile 的理论介绍,是不是已经非常激动地想要深入了解 Flexagile 的落地实践了呢?我们将在后续推出 Flexagile 在 RingCentral 的具体流程应用,手把手教大家如何应用 Flexagile 到你们的项目之中。
评论