InfoQ

新闻

文章:剖析短迭代

作者 Dave Nicolette译者 郑柯 发布于 2008年11月19日 下午4时8分

社区
Agile
主题
敏捷技术,
方法论,
变更
标签
看板,
Scrum

Valtech的敏捷教练Dave Nicolette提出:短迭代的效果要好过长迭代。Dave证明:短迭代可以更快响应变化,同时提供更多发现和解决问题的机会。他认为短迭代可以带来下列方面的好处:

  • 快速相应
  • 问题检测
  • 范围管理
  • 迭代规划和跟踪
  • 成为转向“无迭代流程”的基础

他还指出了使用短迭代可能会遇到的一些问题:

  • “密集的工作回让人筋疲力尽。”
  • “战略层面的思考很难跟日程相结合。”
  • “每个迭代必须完成的、耗费管理成本的相关任务占用了短迭代的大部分时间。”
  • “对团队之外的资源或是人员的等待,这会使得工作的完成要跨越多个迭代。”

详细内容,请阅读全文剖析短迭代

3 条回复

回复

Re:剖析短迭代 发表人 Love Jade 发表于 2008年11月25日 下午7时34分
什么是 extremely short 迭代? 发表人 Charlie Zhang(张恂) 发表于 2008年11月27日 下午8时11分
FAQ:如何确定迭代的长度? 发表人 Charlie Zhang(张恂) 发表于 2008年12月3日 下午8时16分
  1. 返回顶部

    Re:剖析短迭代

    2008年11月25日 下午7时34分 发表人 Love Jade

    总体上说,短迭代有很多好处。不过我认为以下因素或许也需要参考:
    (1)迭代周期不能短到很多stories都需要hang over(在本周期内不能通过分析师的Sandbox验证)。有人建议在每个迭代中每个开发人员(或pair)平均能完成2个stories为宜,因此迭代周期可能要考虑iteration story的平均大小。
    (2)尽管敏捷项目的迭代计划和迭代关闭工作成本不高,但过于短小的迭代要么增加了这类成本的比例。如果省略了这类管理活动,又会让成员有点儿感觉像没有迭代一样。
    (3)对于项目组成员来说,一个迭代在关闭的时候能够像客户展示足够多的新features并得到客户的首肯,是一种无法言表的精神激励。尽管每天客户代表都在关注项目进展、都能够看到最新成果,不过正式的showcase会有客户方的高层(如项目经理、业务负责人等)参与,这种更加“正式”的会议会让项目组觉得受到重视。如果迭代太短、产品增量不足,团队对于项目在稳步前进的感觉就会有所损失。
    (4)还要考虑项目团队的大小、是否分布式协作开发等因素。项目过大而必须分为若干敏捷teams,或者分布式开发、沟通成本比例很高,可能迭代周期需要适当拉长(当然每个小team可以进行每周一次的内部retro)。
    (5)我所参加过的敏捷项目有1周一个迭代的,也有2周一个迭代的,总体感觉还比较适中。其中有1个5个teams、一个location的项目中我们采用了1周的迭代周期,个人感觉有些短、有时候似乎感受不到迭代的存在。

  2. 返回顶部

    什么是 extremely short 迭代?

    2008年11月27日 下午8时11分 发表人 Charlie Zhang(张恂)

    迭代长度推荐在 1-6 周之间是个经验数值,过去很多敏捷专家和文献都有报道,比方 XP 的常规值为 1-2 周,Scrum 的常规值为 4 周。

    原文的标题用的是“extremely short iterations”,不知 Dave 所说的“extremely short”具体是什么含义,是不是指长度小于 1 周的迭代?如果他的 extremely short 也是指 1-2 周(short)这个经验值,那么在这点上我们其实没有什么分歧,符合我们过去的认知。

    对于周期小于 1 周(比方 3 天以内)的超短迭代,是否真的利大于弊,我有点怀疑。我觉得 Dave 在解释为什么 extremely short 要比 short 好方面,给出的理由仍然不够充分,很多优点其实普通的 short 迭代也具备。超短迭代也许理论上分析有很多好处,到底好不好,我想还需要更多国内外的实践案例、数据来证明。

    迭代的长度是否真的存在下限?有人说,这个下限就是 0,也就是取消迭代。

    而据我估计,至今国内还有大部分软件开发组织尚不清楚地知道自己为什么要迭代、如何做好迭代式开发,因此超短迭代、无迭代过程(看板)对于国内来说可能太超前了。

  3. 返回顶部

    FAQ:如何确定迭代的长度?

    2008年12月3日 下午8时16分 发表人 Charlie Zhang(张恂)

    我的观点可能与 Dave 等人略有不同,供大家参考。

    来自 敏捷 FAQ

    很多经典文献、教材上都有关于这个问题的解答。迭代长度通常建议为 2-6 周(或 1-6 周),这是一个经验数值。到底选择几周为一次迭代,这个问题其实不太难,因为通常你只有 1、2、3、4、5、6 这 6 个数字需要选择。

    我们太极敏捷派的建议是这样的:

    如何确定迭代长度,有这样几个关键点需要权衡(包括但不限于):

    第一,我们希望每次迭代开发,可以获得实质性的进展,完成足够多的开发任务,所以对于普通项目,1 周甚至小于 1 周的迭代长度就显得有点短,做不了几天的开发就要暂时 close,不太合算。

    第二,迭代任务(包括模块集成、系统测试、评审等等)的完成,应该比较顺畅(streamlined)、从容或者适度紧张,没有非常紧迫、仓促的感觉。如果在某次迭代开发中,需要砍掉很多完成不了的任务,感到进度很紧张,那么很可能说明迭代的长度设置太短了,在下一轮的开发中应该增加迭代的长度。

    第三,对于每个项目团队而言,合适的迭代长度有一个有效区间。总体上我们希望迭代越短越好,它有个下限,短于这个下限就可能得不偿失。那么,迭代时间为什么不能过长?它的上限是多少呢?迭代的主要目的是为了及时获得各方面反馈,确认已开发的内容是正确和可靠的,从而减少风险,保证开发能够始终稳步地、沿着正确的轨道前进。显然迭代过长,很长时间不对已开发的系统部分进行验证、反馈,随之而累积的各种风险就可能增加,形成返工和浪费。如果超过一个半月(6 周)以上,还都拿不出一些可以执行、验证和 demo 的软件程序,那么这样的项目开发显然不能说是高效的。

    从 2 到 6 周,建议选择偶数 2、4、6 周作为迭代长度,排除奇数 3、5 周。执行周计划周总结和月计划月总结是国内很多企业比较普遍的做法,显然设置迭代长度为半个月、一个月或一个半月,就能与之相合拍,更自然和便于管理。设想,当您做月度总结的时候,只完成了 1 又 1/3 的迭代,会是什么感觉?

    迭代长度通常还与整个项目的工期(或复杂度、规模)有关。如果项目的工期在 1 年以上,那么 1 个月或 1.5 个月的迭代长度就是比较合适的。对于进度压力不同的项目,人们的心理紧张程度是不同的。假设 2 周就要完成一次迭代,持续干上一年,大家会不会感到太累、太频繁?如果整个项目工期小于 3 个月,那么 2 周迭代甚至 1 周迭代,就是非常合适的。对于进度这么紧的项目,可能每周、每天都是非常宝贵的。

    通常,张恂会向客户推荐采取 2 周或 4 周作为迭代长度的首选,3 周、5 周和 6 周作为备选,往往大项目、比较复杂的项目才会采用 6 周,6 周以上基本不考虑。2 周通常适合各方面很成熟的开发团队。如果一个传统瀑布团队,要尝试着转向迭代开发方式,从 4 周的迭代开始学习、积累经验,然后逐步缩短迭代长度,是比较稳妥的改进方式。

    建议一个团队在熟练使用 2 周迭代一段时间(比方半年)之后,再尝试 1 周迭代。通常一个团队在开发和管理方面经验越丰富、越成熟,各方面的细节控制得越好,就可以尝试越短的迭代。

    此外,不同的项目开发阶段,可以采用不同的迭代长度。根据 UP 的建议,我们通常可以把一个项目分为起始、细化、构造和移交四个阶段。项目前期的起始、细化阶段,很多内容不明确,需要做很多探索性的工作,一般迭代的长度可以适度拉长,比方 2-4 周;而在构造、移交阶段,架构已经明确和稳固,主要追求开发实现的速度,所以迭代长度可以适当缩短,比方 1-2 周。

    最后,最重要的一点是,在敏捷开发中,迭代的长度完全是可调的。如果开始的迭代长度设置太短,或太长,都没关系,我们可以在随后的迭代中根据项目实际情况的反馈进行调整,这就叫自适应(adaptive)。

    www.zhangxun.com

深度内容

Flex与JSON及XML的互操作

平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。

用Qi4j进行面向组合编程

本文将简要介绍面向组合编程(COP,Composite Oriented Programming)的概念,展示它如何规避OOP存在的一些问题,并重新点燃使用可重用部件组装领域模型(Domain Model)的希望。

系统开发——新学科,新教育

一门新的计算机学科——“系统开发”,强调人性化、匠艺、设计、创意、创新和新事物的涌现,并建议用被称为“bottega”的工作室替代乏善可陈的教室。

图书聚焦:Visual Studio 2008 揭秘

Mike Snell和Lars Powers用他们最近由Sams出版的新书《Visual Studio 2008揭秘》,试图帮助大家提高开发人员的生产力。本文包括一个下载样章——第10章调试。

BPEL为何不是BPM的圣杯?

Pierre Vigneras在本文中讨论了作为标准之一的BPEL所存在的问题。Pierre先给我们大致介绍了一个简单的并行流程,接着讨论了从业者在试图以一个结构化模型为基础表达非结构化流程时遇到的一系列问题。

基于范型的多语言编程

你是否仔细思考过,为什么人们总在讨论“要正确的语言做恰当的事情”?在这篇文章中,Sadek Drobi向你解释了为什么应该在系统内部混合使用多种语言。

采访与书摘《Pro Web 2.0 Application Development with GWT》

Jeff Dwyer就关于他的新书(《Pro Web 2.0 Application Development with GWT》)、GWT1.5以及创建可搜索的Ajax应用谈了一些他的见解。

时刻准备着,迎接IT业的春天

我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的出路。IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!