《敏捷估计与规划》之敏捷规划有效的原因
首先,估算和规划的目的:尝试为产品开发的综合问题(特性、资源和进度)寻找出最佳的解决方案,在进行进度规划时,就是在将所有可能的解决方案进行比较,组合这三个餐宿,找出最佳的方案,以便支撑未来的决策。
1.经常重新计划,是有效的探索解决方案的方法之一。每次迭代开始时,需要创建迭代的计划,可以在每次迭代后更新发布计划,或者几次迭代后更新。我们需要承认不可能建立一个完美的计划,计划必须是准确的,但是早期的计划很难准确,重新计划就是要逐步消除这些不确定性。
比如,前期计划参考之前的速度,在后期可能需要增加新功能,也可能随着团队的技术能力的提高,团队对进度的期望也会发生变化,就需要提高计划的精度,根据迭代的情况再去调整计划。
2.对大小和持续时间的估算是独立的,计划的常见缺陷是混淆堆大小的估算和对持续时间的估算,对于不同水平的人员,所需的时间也不同,持续时间也会受到团队规模的影响。
比如读一本书,讲一份报告,我们首先关注的是页数,然后根据自己看书或者讲报告的速度,来计算所需的时间。
敏捷估算和规划之所以成功,就是对大小的估算和对持续时间的估算是独立的,通过故事点或理想人天来估算大小,估算进度率称之为速度,将两者结合起来,得到对持续时间的估算。
3.在不同层次上制定计划,敏捷计划覆盖了三个层级——发布计划、迭代计划和媒体计划——因此每个计划有不同水平的精度。首先,不同的计划用于不同目的,每日计划由每个团队成员在每日例会上承诺,相当精确;迭代计划只列出一次迭代需要开发的用户故事和为了完成这个用户故事需要完成的必须任务;发布计划是三者中最不精确的,只包含一个期望的用户故事的优先级列表,和一个或几个在发布日期前需要交付多少功能的估算值。其次,帮助团队在不同层次上看待这个项目。跨功能团队需要依靠迭代计划完成工作的协调。发布计划确保项目的完整性,不会只关注迭代而不关注整体,否则就会存在风险,不停的关注短期目标而忘了真正的长期目标。
4.基于特性而不是基于任务制定计划,以甘特图,PERT图(网络图)或WBS出现的传统计划着眼于创建产品需要的任务,敏捷则找艳遇产品所需的特性,使用特性来进行计划,团队需要思考的是正在开发的特性,有助于团队对产品的理解。
5.小故事保持工作流畅,周期时间是一件事从开始处理到结束处理所需要的时间长度,在项目开发中,是团队开始处理一个功能到可以向用户交付价值的时间。对周期时间影响最大的,就是开发特性所需时间的差异性,减少差异性的最佳办法就是将工作分解为小规模的单位,即将故事在即将开始时(即将要开始迭代时)分解为较小的故事。
6.每次迭代都要消除未完成的工作。大量的WIP会减缓团队开发速度
7.在团队层次跟踪,只绘制团队层次的燃尽图。
8.承认不确定性并为之计划,比如,第三方组件不能满足性能需要,就需要引导团队寻找替代方法,一旦确定了这一需要,就需要为这一计划考虑寻找和切换新组建的过程所需的时间。
9.敏捷估算和规划的12条原则
让整个团队参与;在不同层次上进行计划;使用不同的度量单位,让堆大小和持续时间的估算相对独立;经常重新计划;跟踪进度并沟通;承认学习的重要性;计划具有适当大小的特性;确定特性优先级;最好的估算和计划来源于事实;保留一些松弛度;通过前瞻性计划协调多个团队。