为什么项目开发永远缺乏合理的时间?
在众多软件项目中,缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所有因素加起来的影响还大。导致这种普遍性灾难的原因是什么呢?
1.期望一切运转良好
首先,如何进行合理的估算,建立在一种悄无声息,但并不真实的假设之上——一切都将运作良好。但是从来不可能有这种一切运作良好的项目存在,
因为执行者是人,而人就会犯错,理解偏差,对原有代码的不了解,无效沟通等等诸多问题都会在执行者身上出现。
毕竟对于各种千奇百怪的需求,除非是之前做过,否则,你永远不知道会遇到什么问题,一句隐藏在需求文档中某个旮旯角的话语,有可能就要耗掉一个技术2天甚至3天的时间。
而这,往往会在需求评审时被有意无意的忽略掉,毕竟最重要的需求评审在当前的需求开发中
往往会被要求尽量缩短时间,“产品已经设计完了,你们技术尽快开始,月底上线,没问题吧!”
2.混淆进度与工作量
第二,我们采用的估算技术隐含地假设人和月可以互换,错误地将进度与工作量相互
混淆。一个锅蒸一个包子需要3分钟,那么三个锅蒸一个包子呢,难道只需要一分钟么?
当业务耦合度非常高的时候,某块任务往往只能交给一人来写,不然随之带来的沟通成本
以及联合调试成本经常使得增加的人力做的更多的是无用功。但是往往上级领导为了表示对项目的重视,通常会向项目中增加人员,而增加的人员往往也是一头雾水,面对大量的代码无从下手,毕竟编程不是垒砖,需要在了解原有项目的基础上进行工作。
3.估算无法贯穿始终
因为需求工期一般是是估算,不是精确地计算,项目经理通常不会有耐心持续地进行估算这项工作。当项目中某个模块遇到棘手问题时,往往无法估算具体解决时间,即使估算后也无法增加时间,毕竟月底上线的要求犹在耳边回荡,这时候去要时间很可能换来的只有一句话“要时间没有,你们周六日加班吧!”。
4.进度缺少跟踪和监督
其他工程领域中,经过验证的跟踪技术和常规监督程序,在软件工程中常常被认为是无谓的举动。但是在软件工程方面,跟踪往往也是无效果,毕竟大多数企业加需求就像喝水一样轻松。领导知道不能让玻璃幕墙换成瓷砖,但是提的这个软件功能点需要多少时间,那可就没领导知道了。临到上线,领导打开网站一看,提几个新需求,往往就是几个不眠不休的日子。
5.错误的解决方案带来的反效果
当项目经理意识到进度的偏移时,下意识(以及传统)的反应是增加人力以及加班。
方向错了,努力再多也是白费。新加入的人员往往需要一段时间才能形成战斗力,而长时间的加班往往带来的是员工的精神和身体上的疲倦,这两者往往都是饮鸩止渴。
为什么项目开发永远缺乏合理的时间?上面五点之中有没有你们延期的理由?