Scrum是什么?如果你是软件开发领域资深“程序猿”,一定对这一概念非常熟悉!
Scrum是一种迭代式增量开发过程,通常用于敏捷开发。Scrum大概诞生于1990~1995年之间,由美国软件类资深专家Jeff Sutherland和Ken Schwaber联合提出。发展到今天,Scrum敏捷开发框架已经相当成熟,在软件的实际开发过程中起着非常重要的作用。
Scrum敏捷开发为什么重要?
Scrum英文翻译过来是橄榄球里的“争球”的意思,Scrum是一个框架,基于这一框架模型,人们可以采用适合自己的方法解决复杂问题,同时帮助帮助开发团队实现价值最大化,比如提高成产能力,加大团队的创造力等等。随着Scrum的深化发展,它不只是用来管理项目开发,还被用于运维团队的维护,以及企业的计划管理。
Scrum的代名词是“简单”、“轻量级”、“对复杂工作的把控”。在Scrum框架中,开发人员可以设计复杂项目的管理流程,包括产品规划管理、软件开发预期结果等。并且,我们还可以对和所有过程相关的要素进行持续改进,包括产品、团队和工作环境等。Scrum框架主要包括四个部分,即角色、事件、工件和规则,每一个组件都为Scrum最终目标服务。从最初为管理者和产品负责人而设计,到后来被用于全球范围内的市场、技术和产品研发。今天,Scrum框架已经被应用于更广泛的领域,包括各类软件产品开发、产品发布以及云产品(包括公有云、私有云、混合云)的构建等。
从具体的应用场景看,Scrum被用于软件、硬件开发,无人车的自动驾驶,学校、政府里面的市场营销、运营,以及个人在社会生活中的日常行为规划等。
如何把Scrum敏捷方法付诸于实践?
尽管,IT技术正在快速迭代,市场上也出现了各种各样的新理念,但是Scrum一直是众多企业最理想选择。Scrum属于渐进式、迭代式,开发人员可逐步优化预期目标,并且能控制风险。借助过往经验,对过程进行控制,是Scrum一直被高度认可的最根本原因。
至于,何时用Scrum?不同的公司会有不同的选择。大体来看,开发团队最佳规模是小到足以保持敏捷性,大到足以完成重要工作,这样的团队基本是6-10人的团队。并且,整个团队已经有了一定的经验沉淀。另外,团队成员中要有一个Scrum master,作为整个团队的组织者和管理者,他是Team Leader和Product owner的粘合剂,可以及时地为团队成员提供帮助。
如何对整个过程进行控制?Scrum 采用迭代、增量的方法来优化可预见性并控制风险。
具体而言,主要通过三大支柱支撑起每个过程控制的实现:
1、透明性:透明度是指,在软件开发过程的各个环节保持高度的可见性,所有参与人员都保持共同的过程认知。也就是说,当某个人在检验一个过程,并确信某一个任务已经完成时,这个完成必须让所有人对已完成过程同步知晓。
2、检验:整个团队必须不断检查Scrum工件,并朝着sprint冲刺目标前进,用以识别重大偏差。这一过程应于熟悉整个流程的人来执行。
3、适应:如果检验人员检验的时候发现过程中的一个或多个方面不满足验收标准,并且最终产品是不合格的,那么便需要对过程或是材料进行调整。调整工作必须尽快实施,以减少进一步的偏差。
上述所有检查和调整可通过Sprint计划、每日例会、Sprint冲刺评审、Sprint冲刺回顾来实现。
Scrum的核心价值观是:承诺、勇气、集中注意力、开放和尊重。整个团队由产品负责人、开发团队和管理员组成。团队成员可以是自行组织,也可以跨职能、跨部门。这种团队组成形式为项目开发提供了更大的灵活性和便利性。自行组织的团队可以避免不了解项目的人来领导,而跨职能、跨部门的组织架构,每个人都是团队中最重要成员,更能体现以项目为核心的理念,大大提高了生产力和创造性。
总之,Scrum 敏捷就是一种不停尝试、不停调整、不停优化的状态。它能把复杂的项目拆分成易于实践的任务,从而持续高效地帮助项目落地。当然,任何 一个撇开实践谈敏捷的理论都是“耍流氓”,要想让Scrum发挥最大价值,还要结合软件开发的实际情况,具体问题具体分析。先从一点入手,然后过度到最佳状态。