What is time boxing?

Time boxing is about fixing the time we have available to work on a given task and then doing the best we can within that time frame. So instead working on something until it is “done” in onesitting, we only work on it for say 30 mins. It is either marked as done at the end of this period or we commit to another 30 mins at a later time or another day.
In software development, an agile team releases new versions of a product to the customer for testing in fixed length iterations, say weekly. The customer and the development team work together to identify the features to be included in each release based on the relative priority and complexity of each task.
Time boxing一种管理方法,即在预算时间内对完不成的功能进行删减或者延迟,而不是拖延预算的时间。用我们熟悉的术语就是“后墙不倒”。
一个“Time box”是一个比较短而且固定长度的时间段。在这个时间段中,团队成员要为满足一个特定的目标做出努力。这个目标可以是一批功能需求或技术需求,也可以是满足一个发布目标(例如,beta测试应支持150个用户),还可以是完成一个可运行的原型,等等。

时间盒的好处

《敏捷迭代开发——管理者指南》
研究表明在提高生产率方面,时间盒本身能带来好处。
  • 一个原因就是专注(focus)。Steve McConnell总结得最好:“你在度假的前一天做完工作,这是一件多么了不起的事情。”心理学认为安排结束日期为三周之后,比在三个月之后设立可视的里程碑,专注的效果更好。时间盒被视为是帕金森定律(Parkinson’s Law)的一剂良药:“如何开展工作?只要有效地填满完成前的这段时间。”
  • 无论是迭代,还是整个项目,时间盒的另一个价值来自人类的一个怪癖:人们往往记住失误的日期,而不是失误的特征。如果将一个项目延迟3个月,得到100%所期望的特征集,那么,人们会认为这是一个“失败”的项目。假如按时交付具有75%最重要特征的产品,那么会被认为是一个成功的项目。
  • 另一个原因是要求我们处理小级别的复杂度。通过为期两周的小型时间盒迭代,团队承担的是可管理的复杂度,做他们力所能及的工作,同时在可能突破最后期限内的情形下,他们有能力缩小工作范围。数据表明,低复杂度的步骤能够提高生产率。
  • 时间盒还有一个更为微妙的好处就是:尽早促成难度大的决策和权衡。例如,在一个Scrum项目中,你受限于30日的时间盒迭代。在迭代计划会议上,团队将非常现实地考虑哪些工作将纳入迭代中,哪些将推迟。由于向客户的演示正好是30天,因而对短期目标和优先级不能含糊不清。利益相关人员也被迫尽早严肃地考虑优先级。
     

其他来源中的总结:

·       时间盒将混沌框在一处,使大家能够完全聚焦于满足达到成功所必须的最小需求。
·       更好的控制:时间盒是一个以时间盒结束点的决定为标记的短期投资。它使得项目在走得过深而不受控之前,让风险得到更多的最小化机会。频繁的决定使客户(business owner)来控制预算和质量。让Surprises 最小化。
·       因为时间盒很短,所以没有多少空间来追求完美或镀金(如加入不十分必要的特性),或为潜在的目的而过分的质量要求。
·       由于时间短,它可以更快的反映失败或更早提供价值。更早提供价值,也就意味着生产出了有用的东西(例如:一个可以工作的模块、一组功能的部署、满足一个技术需求等等)。
·       更快的反映失败,使你更快地知道你是否能达到目标,满足需求。换句话说,如果你不知道何去何从,你可以更快地回到起点,尝试其它的途径。
·       由于时间盒是以结果为导入的且需要频繁做出决定,所以它是极限项目管理中面对不确定性而保持受控的最重要的技术之一。

使用方法

Time boxing是基于实际生产率的,而不是估算,即那些我们认为我们应该完成的工作。
·       预算需求
·       进度
·       技术需求
·       质量需求
·       范围需求
·       必需的技术力量(质量及数量)
·       客户满意度
·       团队满意度
由于Time box由以下内容构成:以具体的目标为导向做事情,决策者有权根据上面的列表内容的任何变化做出决定,并以事实为依据做事,而不是依据推测做事。在这一点上, “Time box是剔除不确定性的一个工具”。而且,与传统的项目管理理念(计划驱动结果)相反,极限项目管理是以Time box中应得到的结果进行计划定制。

定制时间盒的过程(The Time boxing Process)

时间盒在推测周期(Speculate Cycle)中被识别,并在创新周期(Innovate Cycle)中被实现。时间盒的定义可以被总结为以下三步:计划(Plan)、执行(Do)和复查(Review)
1、计划(Plan)--这包括对时间盒的预期产出达成一致,花费多少能达到目标(时间盒的长度、对于技能的要求、预算等),以及度量成功的标准是什么。作为一个指导原则,一般来说,这一步大约需要时间盒的15%。
2、执行(DO)--这意味着做实际的工作去完成目标,生产计划中的预期产出。这一步大约点时间盒的70%。
3、复查(Review)--这一步包括总结学到了什么,建议或决定下一个时间盒向哪个方向走。

制定时间盒的规则

·   固定时间盒的长度(一般为几天,最高为六个星期)
·   全生命周期质量是极限项目管理的十大共享价值之一。即一个时间盒应该基于40小时/星期这个工作时间进行计划。
·   在每个时间盒过程中,不要增加人员。牢记Brook的理论:在一个滞后的项目中加人只能使其更滞后。
·   时间盒的结束日期不可变更。应该在有效的时间里做你能做到的事情,然后再重新组合(re-group)。
·   时间盒不是用来做绩效考核的。极限项目要处理很多未知内容。如果尽最大努力之后,你还没有满足时间盒的要求,你要重组并做出新的决定,决定如何做才能最好的向前推进。
·   如果在时间盒期间需要追加需求,那么原来时间盒中的某些任务必须放到以后的时间盒中。如果有重大变化发生的话,应取消时间盒,重新计划并执行新的时间盒。
·   每日同步。
·   拥抱改变并不意味着混沌,在持续不断的变动之海中,必须有一个稳定的点。因此,我们必须遵守在迭代与渐增开发方法中的一个规则:一旦某个反复正在进行当中,外部的 stakeholder 不能改变这个反复中的工作内容。Time-Boxing 的用意在于缓冲、在于控制风险,不让整个开发过程中因为无穷止的不断地改变而造成混乱而失去控制,但它更不是拒绝改变或是冻结需求,而是让开发者集中心力把焦点放在最关键或最优先的问题上。换句话说,在开发过程中,Time-Boxing 可限制变动只会发生在一定的范围中,而不让变动太过激烈而造成开发团队的崩解,或是寻求静态平衡而造成一片死寂,它所追求的是处于混沌边缘的动态平衡,使系统富有足够的稳定与弹性。

敏捷迭代开发——Time-Boxing时间盒相关推荐

  1. 《敏捷迭代开发:管理者指南》—第2章2.5节渐进开发和自适应开发

    本节书摘来自异步社区<敏捷迭代开发:管理者指南>一书中的第2章2.5节渐进开发和自适应开发,作者[美]Craig Larman,更多章节内容可以访问云栖社区"异步社区" ...

  2. 《敏捷迭代开发:管理者指南》—第2章2.14节推荐读物

    本节书摘来自异步社区<敏捷迭代开发:管理者指南>一书中的第2章2.14节推荐读物,作者[美]Craig Larman,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  3. 《敏捷迭代开发:管理者指南》—第2章2.9节增量交付

    本节书摘来自异步社区<敏捷迭代开发:管理者指南>一书中的第2章2.9节增量交付,作者[美]Craig Larman,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

  4. 敏捷开发_敏捷开发和迭代开发的异同分析

    随着软件开发技术的不断发展,现在出现了敏捷开发和迭代开发两种新的开发方式,这两种开发方式都可以提高软件开发的效率.那么它们之间有什么相同的地方和不同的地方呢?下面一起来了解一下相关的知识吧! 一.定义 ...

  5. 软件研发中敏捷开发和迭代开发的异同

    软件研发中敏捷开发和迭代开发的异同 在讲敏捷开发之前,先了解几个常见的软件研发模式 瀑布模型:瀑布模型的软件研发过程与软件生命周期一致,由文档驱动,两相邻之间存在因果关系,需要对阶段性的产品进行rev ...

  6. 开发模式(敏捷开发,瀑布式开发,螺旋型开发,迭代开发,devOps开发)

    一. 敏捷开发 以人为核心.迭代.循序渐进的开发方式 简化文档,提取文档重点,主要在于人与人之间的沟通, 对开发产品进行迭代,最终完成开发. 迭代:迭代是指把一个复杂且开发周期很长的开发任务,分解为很 ...

  7. Computer:项目管理之软件开发模式(瀑布式开发、快速原型开发、迭代式开发、螺旋式开发、敏捷式开发、DevOps开发)的简介、对比之详细攻略

    Computer:项目管理之软件开发模式(瀑布式开发.快速原型开发.迭代式开发.螺旋式开发.敏捷式开发.DevOps开发)的简介.对比之详细攻略 导读:软件开发模型,用来描述和表示一个复杂的开发过程. ...

  8. 谈谈敏捷开发概念和迭代开发方案

    自敏捷开发这一概率进入我们的视野,仅在短短几年内,软件开发领域便进入了高速开发的时代.似乎从业者们都在谈快速,谈迭代,不管是否感受过敏捷开发的益处,先跟风吹起来,只要凑近这一新技术,就像走在了行业的前 ...

  9. 瀑布式开发、迭代开发、敏捷开发的区别

    瀑布式开发.迭代开发,区别[都属于,生命周期模型] 两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说. 传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试 ...

最新文章

  1. 设计模式(35)-----设计模式阶段性总结(一句话概括一个模式)
  2. CRM成功实施如何化繁为简
  3. ionic开发:第一步
  4. windows和linux系统之间的txt文档兼容问题
  5. SQL语句order by两个字段同时排序
  6. php数字加零,php实现数字补零的两种方法
  7. Spring Boot 中如何实现 HTTP 认证?
  8. 25行代码AC_蓝桥杯 2017A组省赛第九题 分巧克力(暴力优化)
  9. linux下使用alias提升开发效率
  10. 编写五子棋的完整python代码_python实现五子棋游戏
  11. oracle vitu,Supply Chain Management (SCM) a Manufacturing | Oracle Česká Republika
  12. 顶级分布式开源项目,配上这款可视化工具,真香!
  13. python 并发编程 多线程 目录
  14. Java多线程学习三十七:volatile 的作用是什么?与 synchronized 有什么异同
  15. js实现导航菜单栏随着屏幕的滚动进行滚动的效果
  16. C语言求斐波那契数列前10项
  17. 再记AE与AO的区别与联系
  18. 转《营销活动及网络红包个税征免与税收策划》
  19. 项目中报Assign array to a variable before exporting as module default 这个错
  20. 12000 颗卫星为地球织网!马斯克昨夜踏上改变世界的第6个征程

热门文章

  1. 基础阶段(三)MDP核心——贝尔曼方程
  2. Milvus 揭秘| 向量索引算法HNSW和NSG的比较
  3. WinForm使用CefSharp,嵌入浏览器
  4. 汉诺塔 问题 VIII
  5. 驳《驳〈论OIer谈恋爱的必要性〉》
  6. openlayer判断瓦片全部加载完毕
  7. a豆:在讲一个珍重每一个人的故事
  8. 路普达-区块链技术的本质与未来应用趋势
  9. 爬虫爬取B站视频封面
  10. poj 2187 凸包or旋转qia壳法