你听过柏林新建机场的故事吗?机场原定2006年开工,2007年启用,但由于机场建设过程中到处出现施工和安全问题,补东墙漏西墙,导致工期一拖再拖,预算一涨再涨,以至于2019年了还没开张,预计开业时间已经被拖到了2020年10月。

无论是建机场还是开发软件,人们往往会低估未完成的工作量。即便没有低估,也会尽可能以能安抚老板客户的方式回复,例如“我已经完成95%了”毕竟,这种粉饰太平的回答总好过“这个复杂的任务,我大概只完成了一半”、“是的,我低估了完成这项任务所需的工作量”、“老实说,我也不知道还会不会有其他不可预见的问题出现”这些回复。

虽然这种“即将完工状态”听起来很好,但它会影响整个项目状态的透明度。这也是为什么在敏捷开发—如scrum过程中,我们只会关注彻底完成的功能。完成与否只能二选一。在scrum演示会中,我们会查看每个用户故事,根据所有的验收标准和团队制定的DoD(完成的定义)进行审查。只有在所有工作完成、所有的非功能性需求(NFR)和其他部分的DoD满足的情况下,用户故事才能被认定为完成并结束开发。

在敏捷软件开发中,功能的状态是非此即彼的,即要么完成,要么未完成——不存在任何中间状态。

以工作流节点、业务规则或数据变化等作为依据来拆解用户故事,并将拆解后的用户故事放到每个sprint中完成,但被定义的范围和质量必须要彻底完工。因此不要因为用户故事A已经快要完工,就让团队转而开始其他任务,与此同时在backlog中添加一个新的“完成用户故事A的收尾工作”的故事。

这就意味着我们需要知道如何处理未完成的功能。我参与过的很多团队都对此进行过很激烈的讨论。如果你只强调故事点,开发团队可能觉得遭遇了不公平待遇,因为他们已经完成了“95%的工作”(详见上文),但并没有得到应有的认可和肯定。尤其是在管理层对scrum和故事点的概念理解有偏差,仅仅通过scrum团队的开发速度来评价团队表现的情况下,针对这一问题的讨论则会愈演愈烈。

所以,到底应该怎么处理scrum中未完成的用户故事呢?

首先,我认为:不要太在意这个问题。因为团队没能完成用户故事的情况只是个例,不会经常发生。因此,无论采取什么样的解决方案,都不应该对团队的任何指标产生重大影响。但如果团队经常出现此类问题,那么你实际上应该解决的是为何团队经常不能完工这一问题,而不是试图通过接受团队产出的半成品来妥协。

总之,不要过分在意这种特殊的情况!

其次,我认为:未完成的用户故事不应该在演示会议上展示。它们应该被移到Product Backlog的顶部重新评估规划,而不是自动进入下个sprint的backlog。因此,没有故事点会为未完成的用户故事标记“完成”。在下一次规划会议前,PO(在与开发人员沟通后)决定是否需要花更多的时间在这个未完成的用户故事上。如果答案是“需要”,那么在下一次的规划会议上,这个用户故事就会被移到Sprint Backlog中,且保持原始估算值。即便开发人员自称功能已经完成了90%,我们也能根据所有的故事点预估当前sprint的开发速度。正如前面所说,未完成的用户故事应该是个例,因此从长远来看,团队的速率应该维持在平稳水平。

Worktile官网:www.worktile.com

内容整理:Worktile

文章首发于「Worktile官方博客」,转载请注明来源。

如何处理scrum中未完成的用户故事?的更多相关文章

  1. 用户故事驱动的敏捷开发 – 2. 创建backlog

    本系列的第一篇[用户故事驱动的敏捷开发 – 1. 规划篇]跟大家分享了如何使用用户故事来帮助团队创建需求的过程,在这一篇中,我们来看看如何使用这些用户故事和功能点形成产品backlog.产品backl ...

  2. 划分用户故事(user-story)的原则

    在敏捷开发过程中是通过用户故事来将需求具体化成可以进行迭代开发的一个个现实的可见的开发任务.因此在敏捷软件的开发过程中,用户故事的划分对于迭代和开发起着举足轻重的作用. 用户故事从其名字来看是站在用户 ...

  3. 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划

    菜鸟Scrum敏捷实践系列索引 菜鸟Scrum敏捷实践系列(一)用户故事概念 菜鸟Scrum敏捷实践系列(二)用户故事验收 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划 采用Sc ...

  4. 菜鸟Scrum敏捷实践系列(二)用户故事验收

    菜鸟Scrum敏捷实践系列索引 菜鸟Scrum敏捷实践系列(一)用户故事概念 菜鸟Scrum敏捷实践系列(二)用户故事验收 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划 一.用户 ...

  5. 产品经理-需求分析-用户故事-敏捷开发 详解 一张图帮你了解Scrum敏捷流程

    产品经理-需求分析-用户故事-敏捷开发 详解 用户故事是从用户的角度来描述用户渴望得到的功能.一个好的用户故事包括三个要素:1. 角色:谁要使用这个功能.2. 活动:需要完成什么样的功能.3. 商业价 ...

  6. 菜鸟Scrum敏捷实践系列(一)用户故事概念

    菜鸟Scrum敏捷实践系列索引 菜鸟Scrum敏捷实践系列(一)用户故事概念 菜鸟Scrum敏捷实践系列(二)用户故事验收 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划 敏捷开发 ...

  7. UDAD 用户故事驱动的敏捷开发 – 演讲实录

    敏捷发展到今天已经在软件行业得到了广泛认可,但大多数敏捷方法都是为了解决某一特定问题而总结出来的特定方法或实践,一直缺乏一个可以将整个开发过程串接起来的成体系的方法.用户故事驱动的敏捷开发(User ...

  8. 用户故事地图(User Story Mapping)之初体验

    北京这几日的天儿真是好的出奇,白天风和日丽,晚上繁星漫天:在这样一个周六的下午,小编参加了一次北京敏捷社区(微信号:Agile1001)组织的活动:<用户故事地图User Story Mappi ...

  9. 【DevCloud·敏捷智库】如何利用用户故事了解需求

    摘要:这篇文章主要解决因为不能很好地理解需求而估算做不好的问题,在这里可以了解下如何利用用户故事了解需求. 背景 很多团队在应用敏捷开发时,对估算经常感到困惑.这里所说的估算是指产品列表条目(PBI, ...

随机推荐

  1. 对于springboot的几种注入方法的个人看法

    最近在知乎上面看到一篇关于程序员面试的问题,面试官问我们一般有几种注入的方法,这几种注入的方法分别在什么时候运用比合理,当时我看到这个时候懵逼了,由于我自己也是刚刚接触springboot不久,所以就 ...

  2. Windows10 OpenSSH 快捷设置 避免 Bad owener or permission on

    配置ssh 有两个地方 ~/.ssh/config 这个亲测失败,怎么搞都报错 bad owner .... c:/programdata/ssh/ssh_config 亲测有效 (显示隐藏文件才看的 ...

  3. 入职两个月,WPF开发感想

    1 .新工作,新开始 2.WPF初次接触以及学习MVVM开发模式 3.后台数据操作,ORACLE 存储过程(边做边学) 4.总结 4.1工作开发中的小问题 ,遇到的坑:  4.2 解决的问题,学校到的 ...

  4. STM32-I2C_CheckEvent-标志位自动清除理解

    STM32里I2C_CheckEvent函数我们应该是相当熟悉了,在每次发送数据后我们都需要检验相应的EVx(x = 0,1,2,,,)事件是否有发送. 函数定义如下: ErrorStatus I2C ...

  5. Android学习总结之开发工具AndroidStudio的安装与配置

    安装AndroidStudio 首先下载AndroidStudio的安装包,直接在百度AndroidStudio下载即可,安装过程简单,只需要修改安装路径(不要有空格和中文即可).然后下一步下一步就可 ...

  6. C#3.0新增功能08 Lambda 表达式

    连载目录    [已更新最新开发文章,点击查看详细] Lambda 表达式是作为对象处理的代码块(表达式或语句块). 它可作为参数传递给方法,也可通过方法调用返回. Lambda 表达式广泛用于: 将 ...

  7. ssm框架下的文件上传和文件下载

    最近在做一个ssm的项目,遇到了添加附件和下载的功能,在网上查了很多资料,发现很多都不好用,经过摸索,发现了一套简便的方法,和大家分享一下. 1.在自己已经构建好的maven  web项目中 pom. ...

  8. 手动创建MySQL服务

    1.复制一份MySQL服务文件,放入一个路径 2.清理data文件夹下文件,仅保留mysql等 3.修改my.ini,port,...dir等配置 4.管理员运行cmd,cd>bin:mysql ...

  9. JSTL和EL简介

    EL Expression Language,表达式语言,通过操作存在于PageContext等的数据,实现JSP的编写更加简单,单纯使用EL不用引入jar包,只要容器支持即可. EL的隐含对象 EL ...

  10. Java面向对象16种原则

    一   类的设计原则   1 依赖倒置原则-Dependency Inversion Principle (DIP) 2 里氏替换原则-Liskov Substitution Principle (L ...