敏捷史诗可以理解为一组工作的集合,它可以根据用户的需求被分解成一个个特性和用户故事。敏捷史诗无论是在敏捷方法还是 DevOps 方法,都是重要实践。
在团队采用敏捷和 DevOps 时,史诗会被用来管理大型开发任务,并根据用户的需求进一步拆解为用户故事。史诗为团队的管理和结构化的任务管理提供了有效方式。因为它能够将工作拆解为一个个可交付的任务,驱动大型项目步步为营地完成,持续向客户交付价值。史诗在帮助团队拆解任务的同时,也有助于团队不断朝着更大的目标努力。
在组织大型工作时,想要时刻保持敏捷性绝非易事,无论您的组织规模如何,都需要了解史诗是与健康的敏捷以及最佳 DevOps 实践之间的联系。
一、什么是敏捷史诗?
史诗是可以分解成许多小的特性和用户故事的大型需求,史诗通常涉及多个团队、多个项目,有时甚至会通过多个看板项目进行管理。
史诗几乎总是需要一组迭代才能完成交付。这个过程团队将随着开发工作的深入以及用户反馈,来更多地了解史诗的有效性,并根据需要添加和删除用户故事。这正是敏捷史诗的核心价值:基于客户反馈和团队节奏灵活调整。
二、敏捷史诗示例
假设现在是 2050 年,我们在做一个太空旅行项目,每年进行大约十二次火箭发射,每次发射都很重要,且都需要花费很多工时才能完成,这种规模得项目正好适合用史诗做拆解。
例如,创建一个史诗为“2050 年 3 月太空旅行者发射”,那么该史诗将包括从客户购买太空旅行票到火箭发射的全部故事,其中,既有日常工作项目,又有旨在改善航天飞机发射的关键工作。因此,团队需要处理大量的用户故事来完成这部史诗。
支撑 “ 购票系统 ” 的软件团队可能会这样构建他们的史诗:
同时,负责推进器的团队可能会通过这些故事为同一史诗做出贡献:
三、了解完整敏捷程序中的史诗
敏捷史诗应该为开发团队提供目标达成所需的条件和信息。从实操角度看,史诗作为工作任务结构的最高层级,创建史诗时需要覆盖开发团队要交付的所有内容。而了解史诗与特性以及用户故事之间的关系将为团队的日常工作提供重要背景信息。
- 产品路线图是产品或解决方案计划、进度和完成时间的概览
- 愿景是推动史诗和计划创建的组织目标
- 产品路线图是一组承载产品状态信息,沿着时间线绘制的可视化计划
- 将计划分解为史诗有助于使团队的日常工作(以较小的特性和用户故事来表达)与整体业务目标方向保持一致
- 一组完整的史诗会推动相关开发计划的落地,使整个产品在构建产品目标上随着市场和客户需求的实现而不断发展和演变。
从上面的例子来看,核心目标是增加航天飞机的发射次数,从每季度 3 次增加到每季度 4 次,这些措施将降低成本增加门票销售利润。以上这些都将汇总到行动计划中。
四、创建敏捷史诗
在创建新的史诗时,还需要将团队原有的规划和工具纳入考量范围,并围绕团队的季度目标或 OKR来创建。创建史诗时需要考虑以下几点:
- 汇报——为管理层高度关注的项目创建史诗;
- 故事描述——使用史诗以及其中的特性和用户故事作为描述如何实现功能或产品;
- 团队文化——根据团队文化来决定史诗的规模和粒度
- 预估时间——大多数开发团队依赖于估算框架而不是时间,但它很有必要多次估算以确保您的史诗能在截止日期前完成。史诗的时间不宜太长也不要太短。
五、分解敏捷史诗
将史诗分解成更落地的特性和用户故事将有助于团队理解项目并保持工作动力,对于新手来说,这可能是一项艰巨的任务。从史诗中创作故事并没有万能的解决方案,但可以参考以下建议:
- 分角色——为每个角色创建特定故事,如“新访客快捷登录”,“老用户快捷登录”等
- 分步骤——分解过程并为每个步骤创建用户故事
- 讨论——让团队决定用户故事是一项可快速完成的任务还是一个为期一周的项目
- 时间——用户故事应该在一个迭代或更少的时间内完成
一般来说,团队估计需要“数周”而不是“数小时”“数天”才能完成的工作都应该被视为史诗。
六、敏捷史诗度量指标
燃尽图可用于史诗的可视化,并帮助提高团队的积极性,让利益相关者随时了解进展。一个优秀的燃尽图是组织敏捷性的体现。燃尽图显示了在Sprint或史诗中要完成的实际和预估工作量,燃尽图中的水平 x 轴表示时间,垂直 y 轴表示故事或问题。
使用燃尽图可以跟踪剩余的总工作量,并预估实现迭代(Sprint) 目标的可能性。在整个迭代过程中跟踪剩余工作,可以有效帮助团队管理进度。通过监控燃尽图,可以清楚地了解团队的阻碍因素在哪里,有利于完成度预测,促进产品演变,保持团队透明度。
七、通过自动化优化您的史诗
一旦您掌握了如何创建史诗、特性和用户故事,您可能想要使用自动化实现进一步优化,以下是用于 PingCode 冲刺的三个最常见的自动化规则。
- 自动创建子任务(创建新工作项时,自动为该工作项创建几个团队内通用的子任务,节省每次重复创建的时间)
- 同步父子工作项的完成状态(子工作项状态变为已完成后,且同级所有子工作项的状态都是已完成时,自动设置父工作项状态为已完成)
- 自动设置工作项负责人(子工作项状态变为进行中后,如果没有设置负责人,则自动将当前操作者设置为负责人)
可以在 PingCode 自动化模板库中查看这些自动化规则以及数百个其他规则。