《敏捷革命》笔记

2005 年之前,大多数软件开发项目都是采用“瀑布法”,这种方法将整个项目划分为多个阶段,每个阶段都经过严格的评审,以期为客户或软件使用者提供完美的产品,这种方法一般会绘制一张甘特图,规划出每个阶段的时间节点。

瀑布法过度强调规范性,自上而下逐步实施,这种开发进度缓慢,具有高度不可预见性。Scrum 源自“丰田生产系统”和美国空军的 OODA 循环理论(Observer-Orient-Decide-Act)。

《敏捷软件开发宣言》宣布以下几种价值,Scrum 是用来实现这些价值的架构。

  • 人胜过流程;
  • 可以使用的软件胜过面面俱到的文件;
  • 客户合作胜过合同谈判;
  • 应对变化胜过遵循计划;

怎么开始实践 Scrum

  1. 挑选一位产品负责人。这个人知道自己带领的团队要做什么,制造什么产品,要取得什么成果,必须全面考虑风险和回报,什么具有可行性,什么能做以及他们对什么富有热情;如果有多个 scrum 团队,你很快就会发现只有一个产品负责人是不够的,你需要组建一个产品负责人团队,你可能需要一个专门负责战略层面的,与客户互动的产品负责人,同时还需要一位负责战术层面的,决定团队冲刺的产品负责人;
  2. 组建一个团队。这个团队必须能落实产品负责人的愿景。团队规模宜小,一般 3-9 人较为合适;
  3. 挑选 Scrum 主管。主管为 Scrum 过程负责,负责培训团队其他成员,确保 Scrum 得以正确运用,帮助团队消除一切障碍;
  4. 拟定待办事项清单,并确定优先顺序。想一想你的产品或服务的前景如何,然后着手把实现这个前景而必须做的事情分解成诸多小的待办事项,不用太长,只要能维持一个星期的就够了。 等到团队成员开始第一个冲刺阶段,举办每日立会之际,你就可以利用这些时间拟定充足的待办事项清单,以便让团队在之后的两个冲刺阶段中有事可做。 产品负责人从头到尾不断对优先顺序进行调整,还应该与所有利益相关者和团队成员沟通,确保待办事项清单既能反映用户的需求,又不会超出团队的能力范围。
  5. 改进和评估待办事项清单。你需要时刻盯着待办事项清单,工作效率可能越来越高,产出的结果可能超出进度,同时也要及时解决阻碍进度的障碍。
  6. sprint 规划会。冲刺周期一般是固定的,不超过一个月,一般是一两周一个冲刺。团队成员,产品负责人和 scrum 主管一起规划冲刺内容。
  7. 工作透明化。在 scrum 中,最常用的做法是准备一块白板,上面分成三栏,待办事项,在办事项,完成事项。让工作透明化的另一个工具是燃尽图。
  8. 每日立会。团队成员每天固定时间沟通,时间一般不超过 15 分钟,且站立进行。
  9. 评估冲刺或冲刺展示
  10. 冲刺回顾
  11. 开始新的冲刺

作为产品负责人,你要制作一张工作路线图。只需专注当下的想法,没必要列太细,只要做出评估就可以,对产品的价值产出是多少,本季度能有多少成果,今年能取得什么成果, 这么做是在梳理自己对于今后工作的想法,同时也是给团队内部增加一些透明度。销售团队需要知道你打算开发什么功能,这样他们才好开始着手营销工作,领导层需要知道盈利从哪里来, 什么时候能够实现盈利以及盈利有多少。这种做法传递出一个关键信息是,每一件事都被置于公开状态下,每个人在任何时间都能看到产品的开发进度, 他们可以看到一个“用户故事”从白板的“待办事项”栏挪到了“完成事项”栏,再搭配上“燃尽图”会更有帮助。作为产品负责人,你的业绩衡量指标就是收入与成本。

重要的是,你要敢于开始!你不需要把很多时间投入规划、反思、冥想、使命陈述或制订五年规划上。

Scrum 中虽然存在一些规则,但你可以在心领神会后超越规则。

下面将逐步展开介绍上面 scrum 中的相关概念。

产品负责人

产品负责人,类似于现在的产品经理,决定团队要做什么,拟定待办事项清单,以及确定各个事项的优先级。

那他们决策的依据是什么呢?以价值为导向!找到最有价值的 20%,指导团队以最快的速度做出一个产品中最有价值的部分,把团队的效率转换为实实在在的价值。产品负责人必须为价值负责,需要在相关领域内掌握丰富的专业知识,也必须获得自主决策权为结果负责。

如何才能做出以价值为导向的待办事项清单?

  • 产品负责人必须权衡产品的多重属性;
  • Scrum 注重渐进式的开发过程,因此要从那些能够立即带来收入的事项着手,有效降低项目风险;
  • 和购买产品的客户开展对话,了解客户对于最新产品的看法,看看自己的产品是否为客户创造了价值;
  • 产品负责人必须说服团队成员,向团队成员解释清楚需要做什么以及为什么要这么做;
  • 优先顺序处在不停的变动中,因为你面临的环境在变化;
  • 渐进式发布流程,可以帮助你提前完成产品,降低市场风险;
  • 控制需求变更无异于否定客户的真正需求,“免费变更需求”,变更的需求拿一个相同点数的功能来替换的办法;

产品负责人必须权衡产品的多重属性

团队

Scrum 有着和管理理论一样的理念,重视团队。优质团队的特质是什么,在《新新产品开发游戏》的论文中描述了世界优秀公司最卓越团队具备的特质:

  1. 超越寻常。他们具有超越寻常的目标。实现这种目标的动力促使他们超越寻常,达到卓越。他们下决心拒绝平庸,出类拔萃,这种决定改变了他们看待自己的方式,扩大了他们的能力范围;
  2. 自主性。这种团队自我组织,自我管理,有能力决定如何开展工作,并获得根据自己决定做事的授权;
  3. 多功能。这些团队具备完成项目的所有技能:计划,设计,生产,销售,分销。

团队以 5-7 人为宜,团队规模超过 9 人运动速度其实会放缓。

不要一味地寻找“坏人”,而是要找出“坏制度”,即那些激励不良行为、奖励拙劣业绩地制度。

Scrum 主管

Scrum 主管的工作职责就是召集会议,确保团队运行过程的透明度,而且,最重要的是帮助团队发现障碍。Scrum 主管的就是要经常问团队成员“你们如何才能做得更好?”,这种方式可以引领团队成员持续改善自己的工作。

冲刺 Sprint

冲刺周期经常被称为“时间限制”,必须设置固定的节奏,每个人都知道自己能在一个固定周期内能完成多少工作。

对于每个冲刺周期而言,一旦一个团队决定要完成某项工作,那么这些任务就锁定了,团队之外的任何人都不能再给他们增加任务,干预和扰乱团队只会大幅放缓团队的工作进度

每个冲刺阶段都要举行会议,规划本阶段内的工作内容,称为“冲刺规划会议”(sprint planning meeting)。

每日立会

每日立会上,scrum 主管,也就是负责执行流程的人,会询问团队成员三个问题:

  • 你昨天做了什么去帮助团队完成冲刺?
  • 今天你打算做什么来帮助团队完成冲刺?
  • 什么因素阻碍了团队的前进之路?

整个会议的内容就是这么多!时长不超过 15 分钟。

浪费是一种犯罪

大野耐一谈到浪费有三种类型

  • 无理,指的是超载的设备或是超负荷的工人,通常是工作的节奏比原设计更快、要求更高所致;
  • 无稳,指生产运作的不平衡,有时匆忙有时空闲;
  • 无驮,指不顾一切为顾客创造价值但却消耗资源的活动。

避免这些浪费类型有几个办法:

  • 一次只做一件事;
  • 半途而废等于丝毫没做;没有做完的工作和无人使用的产品是一个事情的两个方面,本质上是一样的,付出了努力,最后却没有收获积极成果,不要这样做。
  • 一次性把事情做好;
  • 工时越长,效率越低;
  • 确保工作的合理性,目标要合理,可以设置有挑战性的目标,但是不能制定荒谬、不切实际的目标;第二个不合理现象是期待过高,不能每次都期待“英雄人物”的出现才能赶在截止日期前完成任务;第三种不合理是负担过重,公司规定过于繁琐,增加无意义的负担;第四种是情绪浪费,如果团队存在一个令人讨厌的人就会产生这种情绪浪费;
  • 确保工作的流畅性,

用户故事

如果只是列出待办事项清单,员工可能没有得到足够的信息,而上司的问题在于没有为下属提供足够的信息。人们习惯于用情节、故事去思考,因此当面对一项任务时,要学会从用户的角度来描述用户渴望得到的功能, 也即是“用户故事”。一个好的用户故事包含三个要素:

  • 角色。谁要使用这个功能?这项任务是为谁而做的?打造这样东西,做这项决策,提交这项成果,我们应该从谁的角度出发?
  • 活动。要求我们思考要完成什么样的功能,这通常是我们的出发点,落脚点;
  • 商业价值,或者说动机。思考我们的客户为什么需要这个功能,以及这个功能如何才能给客户创造价值。从某种角度来看,这是最重要的一步,动机高于一切。

用户故事宜短不宜长,要明确和具体,不能太宽泛,大故事要分解为小故事。

用户故事必须完整,任务必须彻底完成。一个好的用户故事是否完整,可以用 INVEST 标准来衡量

  • Independent,独立性,一个用户故事独立于其他用户故事;
  • Negotiable,可协商性,用户故事不是合同,它的内容是可以协商的;
  • Valuable,有价值;
  • Estimable,可评估;
  • Small,规模小,一个好的用户故事要尽量维持小规模,至少要确保在一个冲刺周期中能够完成;
  • Testable,一个用户故事要可以测试,以便确定它是可以完成的;

Scrum 看板

Scrum 看板是增加团队透明度的一个有效办法。

Scrum 看板

聪明的傻瓜

“快乐的泡沫”往往发生在一个团队通过 scrum 取得一些巨大的成果或者大幅提高效率之后,他们可能会产生志得意满、不思进取的情绪。

这时候就需要有“聪明的傻瓜”,他需要发现问题,并向团队成员提出,至关重要的是,有些难以回答的问题必须有人敢于提出来。“聪明的傻瓜”会提出令人不悦的问题,或是揭露令人不舒服的真相。 这种人是很难得的,因为他们会被别人视为麻烦制造者,或者被视为团队异己,但这种人需要多加培养和运用。

“聪明的傻瓜”可能是产品负责人、敏捷教练或者 scrum 团队的每个成员。

同时“聪明的傻瓜”也被认为是一种最先进的原型之一,有下面 7 个优势:

  1. 不关心别人对他们的看法;
  2. 相信过程,享受旅程,顺其自然,而不是试图控制它们;
  3. 活在当下,因为这就是一切;
  4. 把生活当成一场游戏,看到黑暗环境中光明的一面;
  5. 他们取消自我;
  6. 他们制定自己的规则;
  7. 不管怎样,愚者对生活充满热情;

PDCA 戴明环

Scrum 来自于日本制造业使用的技术,日本的内容却很多学自戴明(W.Edwards Deming),二战后,麦克阿瑟从美国引入戴明这样的企业管理专家。戴明最知名的成就就是推广了 PDCA 循环,分别代表计划(Plan),执行(Do),检查(Check)与行动(Action)。这个理念的基本要点是精确评估已经完成的工作以及成果的好坏,并追求持续改善。这种改善不是一次性的,而是持续性的,要不停地寻找可以改善的地方,不要满足于现状。要做到这一点就要不停地做实验,看看怎么做才会有所改善。

Scrum 式地产品开发流程,之所以能不断改进,依据的就是 PDCA 循环。

敏捷软件的十二条原则

  1. 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意;
  2. 欣然面对需求变化,即使在开发的后期也一样。为了客户的竞争优势,敏捷过程掌控变化;
  3. 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采用较短的周期;
  4. 业务人员和开发人员必须相互合作,项目中的每一天都不例外;
  5. 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标;
  6. 不论团队内外,传递效率最好最高效的方式是面对面交谈;
  7. 可工作的软件是进度的首要度量标准;
  8. 敏捷过程倡导可持续开发,责任人、开发人员和用户要能能够共同维持其步调稳定持续;
  9. 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强;
  10. 以简洁为本,它是极力减少不必要工作量的艺术;
  11. 最好的架构、需求和设计出自自组织团队;
  12. 团队定期地反思如何能提供成效,并依此调整自身地举止表现。

参考链接

敏捷软件开发宣言

敏捷软件的十二条原则

10 Awesome Ways to Use the Fool Archetype to Increase Your Success!