1、敏捷开发的定义
敏捷式开发,其具体表现方式,是一种工作方法,其真正的精髓,是在互联网行业快速迭代发展的环境中,团队内部形成的一种行为意识上的共识。
2、工作方法
组建团队
敏捷开发中,我们通常把一个敏捷开发的小组称为scrum团队,scrum单词源于争球游戏,本意是一支小规模的精干团队,不断争取胜利的含义。
一个完整的scrum,通常能够在不依赖外部资源的情况下,独立完成一个需求的上线,故在组建scrum团队时,需要充分考虑到团队所负责的领域内,需要哪些职能的资源来组成。
举例,某个负责app平台的scrum团队,通常需要由以下资源来组成:
建立团队对应工作领域的项目
此处的项目,是指jira平台中的项目,而非实际工作中的需求类项目,应理解为一个domain,一个负责的领域更为恰当。一个scrum团队,建立一个独立的jira项目,专注于某个领域内的产品迭代及优化,该项目专属于本scrum团队,其保持一定的独立性,减少与其他团队的互相干扰及耦合度。
需求池管理
产品经理(PO)需要随时记录来自各方的需求或待改进事项,通过统一纳入需求池的管理方式,实现需求的有效管理,防止遗漏,并可以根据实际资源情况进行对应的优先级评定和实施管理。
sprint迭代
在一个sprint迭代过程中,通常包含需求计划会,每日站立会,推进需求进度并及时更新看板,定期回顾总结及优化等主要流程环节;
站立会
看板
总结、回顾及改进
在sprint迭代结束前,我们通常会通过开一个回顾会的方式,来总结本次sprint迭代过程中,做的好的,以及做的不足,保持好的,弥补不足,持续优化,同时针对本次迭代中的成果进行展示,鼓舞团队士气;
3、敏捷迭代的标准流程
4、角色的定义
SM(scrum master)角色
在敏捷团队中,SM的角色至关重要,通常SM由我们的pmo(product managerment office,pmo是一个组织,或部门,而非个人,个人的定义为pm)来担任居多,但并不完全限定于pmo。
SM是敏捷开发团队中,为小组成员提供各类支持的角色,同时承担部分项目管理的工作职能。SM在scrum团队中更多扮演的是教练的角色,通过帮助成员获取、了解工作的事实情况,服务团队,帮助团队解决困难及问题,引导团队用正确的方法做出正确的决策,在不断在sprint迭代中,帮助团队在负责的领域内,不断成长、精干,并将团队所负责领域内的产品,做的更好。在敏捷开发中,SM更多是老师的角色,而并不是领导者角色,他并不承担决策义务,团队和PO是真正的负责人。
PO(product owner)角色
在敏捷团队中,PO通常由产品经理(PD/PM)担任。
PO负责管理scrum团队所负责的领域内,所有的需求的收集、整理、优先级评定、分析、设计、评审、跟进的工作。PO带领着scrum团队,对所负责的领域内的工作成果进行负责。
5、敏捷式开发的主要特点
以时间周期(sprint)为计划。
敏捷开发不同于传统的瀑布式开发,在敏捷的工作方式中,我们以某个时间周期(通常是2周)来作为一个计划。而通常我们采用的瀑布式开发,其典型特点是以项目制,或者需求制方式进行开发,当需求产生时,进行严格的开发流程推进对应的工作(需求评审,开发架构评审,测试用例评审,开发,测试,……上线)
敏捷式开发并非抛弃传统瀑布式开发过程中的标准环节,我们仍然遵循需求评审,架构评审,测试用例评审这些必要的流程,但我们是以固定时间周期来进行这些对应的工作,而非针对项目或者需求;
重视工作事项的状态,而非流程
敏捷开发的过程中,团队需要实现的需求,通常都缺乏标准特性,需求的规模大小,属性类型,均有非常大的不确定性,通常固定式的开发流程并不能时时套用。所以在实际工作中,敏捷开发团队会根据实际的需求特性,进行对应的流程分析,根据对应的流程,拆解出对应的子任务体系,通过子任务的分配,实现快速的响应效率;(而在实际工作中,我们可能突然会发现需要在中间插入一个工作事项,在敏捷的工作方法中,我们只需要临时建立一个子任务即可,而不用将整个需求进行工作流程的切换)
敏捷开发中,非常重要的一个工具就是看板。看板源自于日本丰田汽车的精益生产理念,在看板中建立4个工作状态(待处理、进行中、待验收、完成),每一件子任务都与之相对应。通过看板的使用,便于整个scrum团队对于各位成员间的工作状态做到了如指掌以及实时响应,这种方式,尤其在scrum团队这种高度默契的组织中非常适用。
敏捷开发的意识
对于需求管理的极致性。通过jira的backlog管理,我们可以将所有的需求,事无巨细地进行收集和管理;
结构化思考。每一项需求的实现,通过结构化思考的方式,去拆解对应的子任务,不断提升团队的配合默契以及战斗力
信息同步及透明。通过需求管理的全面记录,优先级的唯一性,工作状态看板,可以让所有相关协同部门的成员,都能快速掌握所需的信息,并能够及时发现过程中的问题,实现快速响应及解决
需求变更的常态化。互联网企业的需求,变更的情况时有发生,敏捷式开发的过程中,快速响应机制可以快速匹配市场的需求,而真正因为工作不到位导致的需求变更,在持续的迭代过程中,会通过总结改进、以及团队结构优化等方法,实现持续优化;