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