很多项目都不会一开始就完全就绪——例如,需要分配人员和准备工作。为了处理这些项目开始前的任务,很多团队使用了“迭代0”的做法。虽然理解其由来,但我仍然感到担心。以下是我的理由。

停止“迭代0”的三个理由:

首先,尽管很难相信,但绝大多数的项目都是可以立刻启动的。我所听过的所有声称需要在Scrum项目启动前完成的事项有:需要组建团队,包括调配人员到项目上或雇佣新人;需要获取或者设置硬件设备;需要写一个初始的产品待办列表(即使只是高度概要的)。然而现实情况是:诸如技术环境、初始产品待办列表之类的事项都可以在第一个迭代中完成(一个完全是正常的和传统模式的迭代一),同时至少还可以交付了某些潜在可发布产品增量。

其次,有了“迭代0”就制造了一个特例,即某些迭代或者迭代类型可以有特别的规则。例如,团队实施迭代0,就违背了在迭代结束时要提供潜在可发布产品增量的理念。毕竟如果迭代的目的是组建产品开发团队,又怎么可能提供潜在可发布产品增量呢。提供潜在可发布产品增量的要求,有助于帮助Scrum团队避免出现分析瘫痪和感受迭代中开发工作的紧迫性。只有具备适度的紧迫感才能使团队产生更大的创造力。这条规则也有助于帮助团队保持诚实,它能避免团队在没有真正完成任何待办项的情况下声称有进展。

第三,对于少数项目,确实需要进行前期工作(我称之为项目前项目)。这些前期工作可能需要花费一个甚至更多的迭代来完成。毕竟,大项目是真的需要开展前期工作的。这种情况下,我们可能真的需要一个迭代0、迭代0.5、迭代0.75,直到前期工作结束。

但如果我们是例外的少数,该怎么做?

因此,大多数项目不需要前期工作,因为其准备工作可以和开发工作一起进行。但如果说,你们的项目恰恰是少数需要项目前项目的项目,该如何确保分析工作不会停滞不前以及不会比那些第一时间就开始的项目成本更高呢?

提示1:保持“项目前项目”轻量化,甚至可以使用Scrum来管理项目前项目,在团队中使用受时间盒限制的迭代来工作。在每个迭代结束时,都要问一个问题“我们现在可以开始迭代一了吗”,即使项目前项目的规模很小,我们也要决策剩下的时间如何进行。通常,如果你创造性地思考问题,都能够找到解决方法。

提示2:细分工作。就算只是对潜在系统的分析工作,也可以分解成更小的、可完成的任务。例如,假设你们正在决策是否开发一个新的医院系统,或该开发哪种医院系统。不要仅仅把任务描述成“访谈所有相关干系人”,团队可以先访谈所有药剂师的基本需求,任务完成后就可以访谈所有医生。或者可以把工作细分成不同的细分领域:向所有相关干系人访谈其对系统处方部分的需求。这种情况下,团队在迭代中的访谈对象可以不仅限于药剂师,也可以访谈医生、护士等,但与这些相关干系人讨论的内容仅限于系统处方部分。团队可以将来回来再继续向相关干系人访谈其他功能。然而现在,团队可以说已经完成了关于处方部分的相关干系人需求分析。

再说一遍:绝大多数开发项目在开始之前并不需要项目前项目,任何时候分析工作都可以在实际的迭代中完成。当你们确实需要进行前期工作时,把它细分成可完成的小块,紧急快速地完成。

本文译者:李洁(Jerry Li) ,CSM,CSP,Scrum中文网资深敏捷顾问和培训师,敏捷教练

原文作者:Mike Cohn

文章转自:scrum中文网

文章链接:http://www.scrumcn.com/agile/scrum/18813.html

反对迭代0:停止拖延,开始迭代相关推荐

  1. 如何准备启动敏捷-迭代0如何做?

      万事开头难!   对于启动敏捷而言,启动前安排一个准备阶段将对顺利的开展第一个迭代很有帮助.整理了下文试图来说明如何准备启动敏捷.   迭代0是指在启动敏捷开发前的准备工作阶段,迭代0一般的时间长 ...

  2. python3迭代器和可迭代对象,Python3学习(8)--迭代,可迭代的和迭代器

    开始本篇之前,我们先来了解几个单词 迭代:iteration 可迭代的:Iterable 迭代器:iterator 从单词我们可以看出来差异,可迭代的一看就是状态词,我们不做多说,下面会再讲,而我们发 ...

  3. LoadRunner之并发用户数与迭代关系---并发数与迭代的区别

    Q1: 例如在LR里,我要测100个用户同时并发登陆所用时间,那我是不是在录制好脚本后,需要参数化"用户名","密码"以及在那个记事本里构造100个真实的用户名 ...

  4. c语言控制迭代次数,LR中的迭代次数设置

    在参数化时,对于一次压力测试中均只能用一次的资源应该怎么参数化呢?就是说这些资源用了一次就不能在用了的. --参数化时,在select  next row选择unique,update value o ...

  5. chatgpt赋能python:Python迭代:如何用Python迭代优化你的程序?

    Python 迭代:如何用 Python 迭代优化你的程序? 引言 Python 是一门强大的编程语言,在科学计算.数据分析.Web 开发.人工智能等领域都得到了广泛的应用.其中,Python 的迭代 ...

  6. 策略迭代算法和值函数迭代算法

    策略迭代算法和值函数迭代算法 文章目录 1. 回顾与引言 2. 思路介绍 3. 策略评估算法 3. 策略优化算法 4. 策略迭代算法和值函数迭代算法 5. 代码实现 6. 强化学习与最优控制 1. 回 ...

  7. 《Python Cookbook 3rd》笔记(4.15):顺序迭代合并后的排序迭代对象

    顺序迭代合并后的排序迭代对象 问题 你有一系列排序序列,想将它们合并后得到一个排序序列并在上面迭代遍历. 解法 heapq.merge() 函数可以帮你解决这个问题.比如: >>> ...

  8. java中的迭代是什么意思_java迭代指的是什么意思

    java迭代指的是什么意思 发布时间:2020-11-10 10:54:42 来源:亿速云 阅读:74 作者:小新 这篇文章主要介绍java迭代指的是什么意思,文中介绍的非常详细,具有一定的参考价值, ...

  9. 拖延症:关于如何停止拖延的科学指南

    一.拖延背后的科学 让我们从确定基础知识开始.什么是拖延症?拖延是什么意思?我们在这里到底在处理什么? 什么是拖延症? 几个世纪以来,人类一直在拖延.事实上,这个问题是如此永恒,以至于像苏格拉底和亚里 ...

最新文章

  1. 终于把 7 年前的 Docker Hub 账号恢复了
  2. MySQL:Innodb DB_ROLL_PTR指针解析
  3. android之微信分享图片
  4. 1431. 拥有最多糖果的孩子
  5. 解决笔记本电脑使用网线正常,使用无线网络速度慢的问题
  6. Holt Winter时间序列模型
  7. php提交按钮快捷键,直接打印快捷键
  8. 一个中专生:我在华为面试的真实经历
  9. Java 源码剖析(13)--MyBatis 使用了哪些设计模式?
  10. 谷歌地图地理翻遍码,谷歌地图地点搜索
  11. 32位单片机 一个32位地址代表一个字节而不是4个字节(32位)
  12. CNdeepdive 安装报错:deepdive Failed connect to raw.githubusercontent.com:443; Connection refused
  13. “CreateProcess error=206, 文件名或扩展名太长” 错误解决办法
  14. Python 处理日期与时间的全面总结
  15. 章泽天又晒27岁生日照:刚刚又重返18岁!
  16. surfer9 与Arcgis9.3 完美生成等值线和等值面方法
  17. 定义主函数main()
  18. 如何利用大数据征信应对花样翻新的金融诈骗?
  19. CPA二十--关联方关系的判断标准(转载)
  20. 搜索引擎发展趋势:对SNS社交网站的收录

热门文章

  1. 模板 - 二分图(包含全套常用定理性质)
  2. c语言循环控制答案,C语言程序设计 实四 循环控制 答案 《西北民大 电气院》.doc...
  3. 南阳汉诺塔 一 java_南阳明清移民记.pdf
  4. 2018QBXT刷题游记(15)
  5. ansible playbook lookups组件
  6. 详细理解JS中的继承
  7. [物理学与PDEs]第2章第5节 一维流体力学方程组的 Lagrange 形式 5.1 引言
  8. input按钮的事件处理大全
  9. python ctypes库中动态链接库加载方式
  10. 高德渲染网关Go语言重构实践