敏捷开发scrum和jira实践
一、前言
之前对敏捷的概念,一直停留在需求迭代,不断演进。认为只要符合这个就算是敏捷。在读了scrum指南之后,敏捷有了新的理解,故此记录。
二、理论基础
- 透明性
透明有两方面,一方面是理解一致;另一方面是流程的关键环节公开
- 检视
检视提供了及时修正偏差的机会,和code review类似,可以看到一定的问题,但是过于频繁就会影响进度。
- 调整
发现了偏差,就需要有action
scrum指定了检视和调整的4个正式事件:
- Sprint计划会议
- 每日Scrum站会
- Sprint评审会议
- Sprint回顾会议
三、Scrum团队
-
产品负责人:负责管理产品列表
-
开发团队: 负责交付产品「增量」
这里的开发团队不仅仅是技术开发,而是所有对,交付产品『增量』负责的人,这些人包括但不限于业务人员、测试、技术。开发团队不包含子团队。
建议开发团队在小于9人,大于 3人。人太少,没必要scrum;人太多,协调不过来。
- Scrum Master:scrum管理员,确保所有人正确理解scrum并实施scrum
这是个服务角色。
四、Scrum事件
Sprint
Sprint是Scrum的核心,中文翻译是冲刺。感觉还是很贴切的,工作就是一阶段一阶段的冲刺。我把他理解成工作周期。
每个Sprint会产出产品完成的增量。
Sprint的时间一般都是小于一个月的,长了容易导致变更和风险不可控。
取消Sprint会有重大的资源浪费,应该避免。
sprint会产出产品增量。
增量 : 我理解为一个周期内交付的一个或多个完成的功能或版本。
Sprint包含以下事件:
Spritn 计划会议
为下个Sprint做计划,和我们的月度产品规划差不多。产出的是Sprint待办列表,其实就是一个产品的规划清单。
计划会议有两项议题:
1、接下来做什么 ? => 产品待办列表
2、这么做? => Sprint待办列表
-
产品待办列表
-
产品期望的产出
-
Sprint待办列表
-
开发团队根据经验和工作量预估的,觉得可以完成实际会处理的清单
每日Scrum站会
每日站会目的是检视工作进展,预测短期工作,适当做出调整
Sprint评审会议
评审会议的目的是检视产品增量,获取反馈,从而调整产品待办列表。本质上可以理解为产品复盘。
Sprint回顾会议
检视团队自身,制定sprint改进计划。这是scrum过程自我改进的一个好机会
五、Scrum工件
- 产品待办列表
需要完成的一切东西,都可以放在待办列表
- Spritn待办列表
开发团队对下个「增量」的预测,经过筛选,根据经验认为可完成的的产品待办列表
- 增量
一个Sprint完成的所有「产品待办列表」
然后。。。完了。。。这么点
六、Scrum在jira中实践使用
一般scrum开始会建一个项目
新建项目可以看到一个看板
左侧:
Backlog:产品待办列表
Activity sprint:对应当前活动sprint只会有一个
release:指代发布版本
Sprint开始
产品罗列所有产品需求
Sprint计划会议
确定好sprint待办列表然后startSprint
有些sprint可能包含好几个版本发布
可以通过版本来控制划分需求
直接将需求拖到对应版本即可
可以通过Release 和 Activity sprint,分别过滤当前版本需求和当前sprint需求。
当看板配置中,设置了进度和到期日后,就可以在界面上直接看到每个story需求的开发时间总和,开发进度和到期时间了
前面说了,透明性是scrum的支柱。所以对人员闲置和项目进度来说人员时间分配是很重要的一环。
tempo插件很好的解决了这个问题,当然页带来了一定的管理成本,需要每个小伙伴配合填写
点击看板左侧的Timesheets 进入项目时间表
可以看到小伙伴在项目中的开发时间和计划,当然这里我还没有填。
点击右侧的View in Tempo Timesheets 按钮进入事件表管理
可以看到开发成员在项目中的时间花费(数字部分)和计划安排(黄色进度部分)
点击日程表,可以编辑对应排期
也可以通过点击右上方蓝色按钮记录工作日志,记录一段时间的开发时间实际花费
通过在时间表的左上角筛选项可以查看团队工作安排,成员的工作安排,项目的工作安排
通过jira,我们可以清晰的了解当前sprint的项目,团队成员的工作计划,成员在每个项目中的时间安排,项目中的每个过程和产出都可以对团队成员透明可见。很好的解决了团队写作的问题。
当然操作有一定的学习和推广成本,慎用。
实际使用中也有很多并行的scrum项目,也可能有不同的业务团队。可以通过过滤器进行项目过滤,也可以通过模块进行业务划分,还有标签标记等工具。
工具可以在一定程度上解决协作问题,但是我不太认同为了协作而协作过度使用工具。最终还是为了少干重复的事情,减少沟通成本,把更多精力投入到有意义的事情中。
对Scrum的理解
我认为Scrum的敏捷过程是一个 设定目标 -> 完成目标-> 检查调整-> 设定新目标 不断反馈调整的迭代过程。工件就是产品对功能的细分计划。
实际过程中项目大小和并发协作及其复杂,需要不断做出灵活调整。
所有项目管理都有一定的成本,需要谨慎,循序渐进。