说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

为什么项目估算偏差如此之大?

HTML文档下载 WORD文档下载 PDF文档下载
在软件开发中,估算对于项目计划、进度控制等都具有重要的意义。但是估算往往会存在偏差,进而导致额外的成本,甚至影响公司声誉和员工积极性。哪些因素会导致估算偏差呢?开发者Alex E. Fish给出了本文的这些提示。

在软件开发过程中,估算是一个非常重要的环节,对于项目计划、进度控制等都具有重要的意义。但是估算也是一个比较难的“技术活”,因为是“估”,所以往往会存在一些偏差,而这些偏差对于一个项目来说,有时可能会导致多花费一些不必要的金钱,还有可能影响公司的声誉和员工的积极性。

而哪些因素会导致估算偏差呢?开发者Alex E. Fish给出了以下提示。


没有充分考虑需求

如果你没有充分考虑到所有的需求,那么估算一个任务将花费多长时间是毫无意义的。更多的需求意味着更复杂的实现,这当然也需要更多的时间来完成。

估算了测试时间,但没有估算修复时间

估算应该考虑到所有的测试时间以及修复bug的时间。单元测试、BDD(BehaviorDriven Development,行为驱动开发)测试、测试人员进行手工测试,这都是需要花费时间的。并且,开发人员查找和修复bug同样也需要时间。更复杂的任务有可能会包含更多的bug,这意味着需要花费更多的时间来跟踪和修复它们。

假定开发者每天8小时都在编码

就算开发者每天上班8个小时(不加班情况下),但是这不代表8个小时都在编码,其他一些琐事往往会令生产率大大降低,比如会议、电子邮件、同事之间的IM消息、询问问题等。开发者从工作中断恢复到工作状态,往往也需要15分钟时间。有些时候,开发者一天只有2个小时的时间用于编码。

按天估算,没有按小时估算

所有的任务都应该被分解成2~16小时的块任务。这是一个很好的规则,可以让你独立地看待每个任务,并能够把所有因素都考虑在内,减少估算偏差的机会。

让非项目人员来估算

应该由参与编写软件的开发者们来进行估算。他们可以根据自身经验、开发速度对项目有一个更准确的把握。这也避免了由于A设置的进度过快,而导致B被追究责任。

忘记过去

George Santayana曾说:“忘记过去的人注定要重蹈覆辙。”如果这不是你的第一个项目,那么最好回头看看过去的项目。查找你以前曾参与过的同一领域中的类似规模/要求的项目,并将它作为一个参考点。

忽略停工期

如果项目是一个长期项目,或者开发者在夏季需要有一个假期,那么在估算时也应该考虑在内。必要时,考虑设置一个适当的缓冲期。

过于确切

将项目估算在一个确切的期限内或小时数内是不现实的,这也是无法实现的,最好的办法是估算一个范围,包括最好的情况下、最有可能的情况下、最坏的情况下的范围。

总结:尽管你不喜欢估算,但也要认真对待

估算是一个应该认真对待的工作,也是每一个开发者必备的技能。你和你的同事都应该掌握并进行实践。一个好的估算的做法是人人参与。

估计没有人喜欢估算,我个人认为这是软件开发工作中最糟糕的部分。而估算也从来都不会真正可靠或者完全准确,但还是希望上文这些内容可以为你带来一些帮助。

英文原文:Poor developer estimations AKA Guesstimation

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘