导致项目进度出现问题的因素
1、评估技术方案与工作量时忽略可能的风险
误区:乐观主义,一切都将良好的运作,每项任务仅会花费他应当花费的时间
问题的根源:
- 创造性工作的实现结果依赖其实现介质,软件的实现介质仅为程序员的思维,是易于掌控的,而人的构思是有缺陷的,缺陷导致了工作量评估的失真
- 大型项目的任务需要被拆解成若干个小任务,即使每个小任务能不出差错,但项目整体的工作量并不是任务工作量的叠加,小任务组合排序的过程中会有很大概率出现未知的问题
2、认为投入人力与投入时长可以互换
误区:成本可以理解为人力乘时间,但错误的认为保证总成本不变可以互换人数与时间
问题的根源:
- 项目可以被分解为任务并交由不同的人开发,但任务之间需要协作,协作需要人员之间的沟通,而沟通也会带来新的成本
- 任务具有原子性,并不能无限制的分解,当任务无法分解时,添加人数对进度并不会有帮助
3、失真的任务量评估
问题的根源:
- 受制于需求方的紧迫程度,在任务量评估上做出让步
- 缺乏系统的评估方法,仅靠开发人员的直觉经验完成评估
4、缺乏进度管理
问题的根源:
- 缺少合理的进度跟踪技术与管理程序
5、单纯的通过叠加人力来解决进度风险
误区:
- 增加的人力能立即投入生产
- 增加的人力可以追加在原有的任务上
问题的根源:
- 增加的人力需要从0开始熟悉任务,沟通与交流提高了追加的人力成本
- 追加人力的同时通常需要重新分解任务,有可能导致原有的计划被打乱,反过来影响进度
Brooks法则:向进度落后的项目中增加人手,只会使进度更加落后
6、测试评估时间不足
误区:低估了测试的成本与重要性
问题的根源:
- 通常缺陷的出现是在意料之外的,因此在评估时过于乐观的认为不会出现缺陷或缺陷一定可控
- 不合理的测试安排引起的问题存在延迟性,测试出现的问题通常不能立刻得到解决,且结果是有未知性,在临近上线出现的问题往往会付出更改的成本去修复
总结:
项目的时间依赖顺序上的限制,而人员的最大数量依赖于独立子任务的数量,人月不可等价互换;风险存在于项目的每个环节,需要前期有合理的预估,后期有科学合理的追踪手段
思考:
1、增加人力置换时间,是否更容易导致项目上线时间超出预期?进度管理的最终目的是在人力成本与时间成本之间达成平衡吗?
2、项目进度出现问题时,似乎大多数时候重新安排进度是更优解,但选择增加人力和延长项目周期,是否需要通过对比增加的人力成本与项目推迟上线带来的潜在损失来决定呢,追加人力导致的风险是否可以规避?