Appearance
现在软件行业中很多开发团队的开发方式都在从以前繁重,死板,瀑布式的开发方式向敏捷,高效,灵活的方式转变。
scrum提出了一个敏捷开发方式实现方案,规范了一套从需求,产品到开发的流程,保证了产品研发进程的规范化,同时又具有灵活,适应性强的特性。最重要一点,scrum方案使研发过程中每个成员都有强参与感和责任感,这一点除了提升团队开发效率和凝聚力外,同时也保证了软件的质量。
下面从三点对学到的scrum敏捷开发做一个总结:
1.scrum敏捷开发的整体流程。
2.作为开发人员在scrum敏捷开发流程中应该做什么。
3.我们目前需要做什么来向scrum敏捷开发转型。
scrum敏捷开发的整体流程
scrum的团队成员由三种角色组成:Scrum Master,Product Owner,Tream Worker。
Scrum Master是组成Scrum团队和保证敏捷开发流程的关键人物,他会指导这个团队按照Scrum流程来进行产品开发,促进团队的磨合,并且在开发期间保证团队不受外界干扰。
Product Owner把握产品的方向,收集并整理需求,并向开发团队阐明产品功能。
Tream Worker一般指产品开发阶段的所有成员,包括设计,开发,测试,运维等等人员。负责产品的开发,迭代,与PO讨论需求的合理性,并保证产品质量。
项目准备阶段由PO调研并与团队梳理需求,生成backlog,包含故事地图,地图里有用户角色,用户行为,用户故事,用户故事里要有验收标准,必要的说明,功能原型等,同时也要进行工作量的估算。
项目开始前Scrum Team团队所有成员开产品计划会由PO阐明需求,然后团队讨论需求价值和可行性,按价值由高到低安排开发顺序,并提炼出最小可行性功能,初始迭代将优先开发这些功能。
根据需求生成的用户故事要拆分成开发任务,生成迭代的backlog,并根据价值优先级安排到不同的迭代中,并保证每个迭代周期内的工作量最多不超过4周。
然后进入开发阶段。
开发阶段每日举行不超过15分钟的站会,讨论开发进度,遇到的问题,并更新任务,按TODO,DOING,DONE的顺序过渡,应按照一个个故事内的任务来更新进度,同时更新进度的不应超过2个故事。
一个迭代期间团队也应与PO讨论下一个迭代周期需求的可行性,进行需求的梳理,工作量的估算等。
一个迭代期结束时进行产品评审会,团队向向干系人阐述产品功能,并且产品已经可以发布。最后团队成员开回顾会议,讨论遇到的问题并改进。
然后进入下一个迭代期,由新的产品计划会开始。就这样不断进行产品的持续迭代和演进。
作为开发人员在scrum敏捷开发流程中应该做什么
作为敏捷开发模式中的团队成员,首先要保持积极参与的态度,发表观点并与他人交流意见。
量力而行,遇到问题尽快向团队反应,每天的立会就提供了这样的机会,不能拖迭代进度。
在工作量上合理估算,即使初期完成任务的时间比较长也应在计划会上向团队反应出来,团队应提供帮助或尊重其完成任务所需的工时,这是合理的,因为在产品的迭代中每个成员都会成长,任务完成效率也会越来越高。
在对待产品需求上,需要向PO问明需求,有不同的意见应及时沟通,在完全明白需求后才能开发。对于需求的合理性及价值的优先级也应给PO提供完整的参考建议。对于PO设计的用户故事,需要拆分的就要讨论并拆分成合理的大小,这样对于开发进度和功能的优先级才有好的把控。
开发人员要积极参与迭代期内的几个主要会议(需求梳理,计划会,每日站会,评审会,回顾会),积极发表意见,融入团队,这样每个成员都能掌握到产品的整体状态,并对产品的质量有责任感。
这些会议中也提供了审视自己和团队的机会,这样每个成员才能及时调整自己,磨合团队,才能打造出优秀的团队和产品,并让每个人都获得成长。
我们目前需要做什么来向scrum敏捷开发转型
目前我们开发中也使用了功能周期迭代的方式,并且有需求研讨会和产品功能发布会,但现在的方式不够规范和高效,项目成员参与感不足,并且也没有团队反思和进步的机会,同时还缺乏一个高效的工具。
针对这几点特提出以下建议:
1.产品的需求要好好梳理并按规范提供对应的内容,做好价值排序和可行性分析。
2.迭代的工作量要做好估算,不能先确定上线日期才进行功能的讨论。
3.按照规范来开会议,各个会议都要进行,不能形式化,并且尽量不引入不相干人员参会,给团队营造一个畅所欲言的环境。
4.将故事进行任务划分,并控制好粒度。
5.使用高效的敏捷开发工具来配合,比如leangoo。