敏捷开发很早就已经流行过了,之前也零碎地了解了一些相关知识,并在团队中进行了部分实践,但效果都不怎么好。最近又重新梳理了一遍,并结合现状,准备在团队中重新实践敏捷。
首先,敏捷是一种观点和价值观,不是具体的指导性方法,其核心思想是:
2001 年,17 位软件开发者齐聚在美国的犹他州的雪鸟( snowbird ),讨论轻量级的软件开发方法,并写下了敏捷软件开发宣言,其中包括四条核心价值观和十二条原则,这里就不具体贴出了。想表达的还是上面总结的核心思想。
既然敏捷是一种思想,终究还是要落地的,针对敏捷的落地有很多的实践方法,比如:精益软件开发、特性驱动开发、极限编程(XP)、Scrum,其中 Scrum 是比较流行也是资料最多的,我们团队也将采用 Scrum 进行实践。
Scrum 是一种实践敏捷的框架和方法论。其中包含:
Product Owner:产品负责人,主要把控产品的方向,构建正确的产品,解决做什么的问题;
Scrum Master:
Development Team:
待办事项梳理会(梳理 Product Backlog)
迭代计划会 (确定 Sprint Backlog)
每日站会
迭代评审会
迭代回顾会
Product Backlog
Sprint Backlog
通过上面的描述,应该大致清楚了敏捷和 Scrum 是怎么回事了。接下来介绍在我们团队怎么去使用。
敏捷对组织是有一定要求的,希望是跨职能组织,在一个组织中包含架构、开发、测试、运维、UI 设计等角色。如果不是,组织结构需要进行调整。要求跨职能组织的一个重要原因就是希望不同角色的人在工作时能随时面对面交流。目前我们产品团队是符合跨职能组织的要求,这也为实践敏捷提供了先决条件。
整个过程就是按照 Scrum 的五大会议进行,其中有一些小的调整,如下图:
1、最开始的待办事项梳理会,建议是每周都能进行,因为待办事项的优先级会受到很多因素的干扰,每周进行能够及时调整;
2、站会的时间调整到上午的 11 点半,目的就是为了控制时间,毕竟谁也不想到了 12 点还吃不上午饭;
3、在迭代周期中添加了「用户故事评审会」,在会上用户故事的责任人对该用户故事的成果进行演示,这样可以让用户故事的责任人更有责任感,想要在一个相对比较正式的场合进行演示,那么事前肯定要做些演练,除此之外也能锻炼到每个人的演讲和沟通能力;还有一个好处就是演示过程中,集思广益,容易找出之前考虑不足的一些地方。
组织调整为了跨职能组织,每个成员也都对敏捷的思想达成了共识,并且制定了相关的工作流程,剩下的就是选择一个合适的工具来辅助了,这类的工具有很多,比如 PingCode、Tower 等。选择一个自己用着顺手的就行。
网上很多的文章都说敏捷执行到最后会变形,最终只留下了一个站会,或者变成小瀑布的模式,我认为在还没执行前就各种担心是大可不必的,出来混最重要的是出来,我们先得执行起来,过程中发现问题即使改进、调整,其实不光开发模式可以采用敏捷的方式、团队和个人也可以是敏捷的。