首先,敏捷开发是一种做事情的方法。
它适用于范围软件、运维、服务等领域,但在硬件领域就不太适用,硬件一般不允许需求中途改变;
它适用于竞争激烈的市场,这种情况下,赶在对手之前交付一个不完美但能用的产品,并通过用户反馈不断优化就非常重要了;
它适用于快速变化的市场,研发团队和外部信息保持紧密联系,不仅能让产品能够适用于当前的外部市场,而且还能按时交付;
它适用于小团队,一般为5~9人,这样能使敏捷开发提倡的“面对面”沟通方式是可行的;
所以它的快在于应对市场变化的灵活度,在于团队配合的沟通和协作效率,在于对按时交付可使用软件信念的坚定,而不是某个项目原本开发需要3个月,简单的认为用了敏捷开发就一个半月就能交付了。
其次,它是一套工具集。
你可以通过各种最佳实践提炼出自己的敏捷实践方法,也可以选择其中几个你认为有用的来提高团队的工作效率,比如站会,看板,用户故事,演示、计划会、评审会、反思会等活动工具。
最后,敏捷开发也是一种企业管理方式。
它专注于团队的整体绩效,而不是个人的单打独斗能力,在实际工作中将决策权交给团队,以人为核心,发挥个人的主观能动性,提倡创新和效率,也需要负责人日常工作要不断强调的核心理念;
它把大项目拆成小项目去做,每次使用Sprint作为一个冲刺版本,每个Sprint控制在2~4周内,持续输出有价值的软件;
综合以上内容,敏捷开发是指在高度协作的环境中,持续不断地快速输出可交付的产品,通过反馈进行自我调整和完善的方法。
1.敏捷原则
围绕着敏捷宣言,在实际工作中,我们总结出一系列的原则,使敏捷开发更具可操作性;
可工作的软件是主要的进度度量标准
我们最优先要做的是通过尽早,经常性地交付可以工作的软件来使客户满意
要持续不断交付可用的软件,周期从几周到几个月不等,时间越短越好
最好的需求调研、产品架构、和产品设计来自于自组织的团队
善于激励项目员工,给他们提供所需环境和支持,并信任他们能胜任工作
在团队内部,最有效果和最有效率的传递信息的方式是面对面交流
敏捷过程提倡可持续的开发速度,项目方、开发人员和用户应该能够保持恒久稳定的进展速度
要做到简洁,尽最大可能减少不必要的工作
即使到了开发后期,也欢迎需求变化,要善于利用需求变更,帮助客户获得竞争优势
开发团队每隔一段时间,都会对如何能有效地工作进行反省,然后相应地对自己的行为进行调整
不断地关注最优秀的技术和良好的设计能增强敏捷能力
项目开发过程中,业务人员与开发人员需要在一起工作
随着敏捷的不断实践和理解,团队还可以提出自己的敏捷原则,最终让每个人认可并执行,打造出整体输出的高效团队。
2.团队组成
在一个敏捷开发团队中,有以下几种角色:
Product Owner 产品负责人
产品负责人是需求的制定者,代表了用户的意愿,保证Scrum团队从业务角度来说做正确的事情,产品负责人负责编写用户故事,排出优先级,并确定好每次Sprint的冲刺内容;
他是产品的既得利益者,也同时是部门负责人/项目负责人,责任是制定团队的目标,把握方向,为产品是否为客户想要的结果负责,同时也承担着团队管理的责任,给团队赋能,协调公司资源,激励团队成员,以及对弱能力成员进行辅导,最终让团队成员整体作出成绩。
Scrum Master 敏捷教练
为项目进度和交付结果负责的人,是团队的负责者,提供服务要满足团队最高优先级需要;同时确保Scrum的正确理解和使用,使得每次Sprint的收益最大化,他必须了解完整的开发过程,以及开发过程中上下游的关系,擅长使用Scrum各种工具,并在实际的工作中引导团队成员;
ScrumMaster是团队的保护伞,确保团队集中精力完成冲刺,同时他要扫清妨碍团队生产效率的一切障碍;ScrumMaster还要帮助他人理解变革的需要,在Scrum团队之外Scrum所带来的影响及Scrum能帮助达到的广泛而深远的收益。ScrumMaster还要确保组织的各个层面都发生有效的变革,不仅能够促成短期的成功,而且能够得到长期的收益。
这个角色可以是一个专职岗位,专职的好处是项目管理更加专注和专业,引入快,但可能会工作不饱和,因此一个专职的ScrumMaster可以参与多个项目;也可以从团队中选一个资深的团队成员兼任,兼任的好处是降低了人力成,对项目和产品理解更深,协作效率更高,但对ScrumMaster能力要求较高,对于成员的工作会有一定影响;
但不管是专职还是兼任的,这个角色要有很强的责任心才能按时交付、足够细心才能控制好进度,擅长沟通才能扫清障碍,善于提问才能给团队启发,让开发团队自己找到答案,实现自组织管理;
Scrum Team 开发团队
人数不宜过多,5~7人比较理想,包含产品、设计、前端、后端、测试等多角色,是实际价值产出者;
开发团队的职责是合理评估好工作量,每天完成既定的工作内容,遇到阻碍要积极解决,解决不了需要及时需求帮助,承诺按时交付可工作的软件。
敏捷开发的团队是一个自组织的团队,这个团队接受外部给与的任务和约束条件,自行决定如何完成任务,在团队中,团队成员自己决定做什么,如何做;就像一个篮球队,上场之后教练和老板就失去了球队的控制权,场上的任何决定只能靠团队成员自己来做;而角色的区分,让项目成败不全压在团队负责人身上,整个团队要去承担相应的责任。
4.自组织团队特点