Scrum估算(estimation) 和故事点 (Story Points)
Scrum要求产品在每个Sprint中保持可能可交付(例如,经过适当测试/集成)的状态,产品所有者(Product Owner)声明哪个工作是最优先考虑的,并且工作可以分成薄的垂直切片,通常是以客户为中心的用户故事(User Stories) 每个都要大于几天。如果我们正在做其他敏捷 (Agile)的东西,我们不能错过发布日期 (Time Schedule),因为产品每周或每两周都可以发货。估计错误的唯一缺点是我们会按时发货,同时省略不太重要的功能 - 比瀑布 (waterfall) 或伪敏捷团队 ( pseudo-Agile) 今天所遇到的压力更小的工作方式。
在瀑布式方法中 (waterfall approach),管理人员根据时间确定团队成员的工作负载能力。经理要求选定的开发人员估计他们预期某些任务需要多长时间,然后根据该团队成员的总可用时间分配工作。在瀑布中,测试是在按照特定的职位名称之后完成的,而不是与代码一起编写的。瀑布的缺点是众所周知的:工作总是迟到,总是有质量问题,有些人总是在等别人,而且总是在最后一刻才赶上最后期限。
Scrum团队采用完全不同的方法。首先,整个Scrum团队而不是个人负责这项工作。整个团队负责每个产品Backlog项目。整个团队负责测试产品。没有“我的工作”与“你的工作”。所以我们专注于每个产品积压项目的集体努力,而不是每个任务的个人努力。其次,Scrum团队更喜欢将项目相互比较,或者以相对单位而不是绝对时间单位来估算它们。(最终,这会产生更好的预测。)第三,Scrum团队将客户可见的需求分解为尽可能小的故事,从而大大降低风险。如果有7个人的工作量太大,我们会组建功能团队 (feature team) 消除依赖 (dependency)。
估算过程是什么样的?Scrum并未规定团队估算其工作的单一方式。根据Sprint计划会议的决定,Scrum定义的唯一估计是团队是否会在此Sprint中尝试PBI 。常见的估算方法包括T恤尺码(S,M,L和 XL),2(1,2,4,8)的力量,斐波那契序列 (Fibonacci sequence):1,2,3,5,8等,或者只是小而不是需要拆分(参见下面的#NoEstimates)。
在Product Backlog改进会议(refinement Meeting) 中,团队与产品负责人坐下来讨论产品Backlog顶部的故事。产品负责人通常需要工作量估算来帮助评估ROI,有效地确定产品Backlog中项目的优先级,并预测在给定的发布日期之前哪些项目将准备就绪。因此,产品负责人希望对工作难度进行诚实的评估。
尽管团队中的个性不同,为了收集观点的横截面,所有团队成员通常同时披露他们的估计值是有用的。个人一次出示他们的牌,激发“计划扑克 (Planning Poker)”这个词。个人通常会选择不同的牌。这应该引发对实施方法的讨论,向产品负责人 (Product Owner)澄清要求,并将需求分成较小的故事(其中一些将是较低的优先级)。通常需要几轮来达到单一的工作量估计,这反映了整个团队对故事难度的感觉。改进和澄清比估计本身更重要。根据敏捷宣言,业务人员和开发人员必须在整个项目中每天一起工作。