《敏捷估计与规划》之传统项目失败的5个原因分析及应对
1基于活动(项目活动)而不是基于特性(功能完成)的交付
传统项目管理的关键是活动的完成而不是功能的交付,基于活动的计划第一个问题在于客户不能从活动的完成中获取价值,而功能特性才是客户价值的计量单位。
第二个问题在于,我们审核任务的完成情况时,审核的是活动的完成情况,而不是功能特性的完成情况,对于这一点,实际上现在的项目除了审核活动的完成情况,也会对需求(即功能特性)的实现情况进行跟踪审核。
——建立基于特性(价值)的计划,审核活动的进度表时,审核的重点应该是缺少的功能特性而不是遗漏的活动
基于活动的计划导致延期的原因包括:
a活动不会提前完成(帕金森定律)
b延误随进度表传递
c活动不是互相独立的
2多任务处理导致更多的延期
同时处理多个任务,会对生产效率产生可怕的影响。
当一个人同时处理3个或者更多的任务时,用于增值任务的时间会迅速减少。
尽量使用专职人员,专注于在
间只做一件事,或者尽可能在同一天内上午和下午分别处理不同的内容。
3不按优先级开发特性
传统项目完成特性的顺序是随机的,按照便利性来安排优先级和开发顺序,而不是以功能特性的价值来安排开发优先级。
传统的项目认为既然所有工作都需要完成,也就不需要按照什么顺序,但是,随着项目交付时间的逼近,开发团队可能就会放弃一些特性去赶进度,由于没有按照特性的优先级进行开发,就可能会出现将更具价值的特性放弃。就如我们提到到项目过程活动定义,如果一开始没有明确的定义,项目进展到后期,同样由于进度的压力,也会将一些更有价值的活动压缩或者不做。那么最好的方式,就是在前期做好评估,实现定义清晰关键的和高优先级的交付内容,确保关键特性或者任务不会被迫放弃或者被压缩。
4忽视了不确定性
忽视了用户最终需要什么的不确定性,会导致虽然完成项目,但可能不是用户想要的,忽视了产品如何开发的不确定性,就会导致项目遗漏重要的项目的活动,反而增加了项目被被迫延迟,最终放弃部分功能、或者不恰当的降低质量的可能性。
总之,需求和计划会存在一定的不确定性,而传统的项目是所有的需求均需一次开发完成,而使用需求跟踪+阶段演示的方式,或者项目最初风险评估就需要考虑到项目如果延期的应对措施,也可以有效避免这个问题,当然敏捷使用短周期迭代的方法,也可以减少这些不确定的影响,可以降低产品是什么样子的不确定性,以及产品应该怎么做的不确定性。
5把估算当成了承诺
很多公司混淆了估算和承诺,只要团队给出一个估算,就会被迫按承诺完成,而一方面一些开发人员经常给出的时间常常只是开发完成的时间,并没有考虑测试验证的时间;另一方面在做出承诺之前,也会有大量的外部因素(如:商业因素、风险、资源等)影响评估的结果。而这样的估算常会当作隐形的承诺,在项目未按要求交付时,就会导致项目的失败。而现在的项目计划都会有多种不同的承诺计划,同时考虑项目相关的资源到位和紧急情况,也是目前较为有效的办法。
所有的管理理论目前逐渐的趋同,但最终都是一个目的:快速的满足客户的需求。