为什么 IT 项目总会出现延期?

简评:软件预估很难做到 100% 精确。

意外的复杂度

当你开始一个新项目时,你通常不会马上就很清楚整个项目应该怎么完成。尽管你是一名专业人士,你以前也做过类似的工作,所以你会试图搞定这个项目。

但现实情况中,你会发现有各种各样的因素会跳出来,比如:

  • 你需要使用某些新框架或新的库去实现某种功能
  • 尝试使用的 A 库可能会和 B 库产生冲突
  • 你正在集成的 API 不起作用
  • 单元测试和集成测试报错
  • 还有很多……

工作量预估偏差

PM:“你能不能给我一个开发某某功能所需要的预估时间?”
程序员:“一个月”

PM:“一个月时间太长了,我们只有一周时间!”
程序员:“最好三周”

PM:“我只能最多给你两周时间”
程序员:“好吧,成交!”

其实你还是没有底气的,工作量估算基本靠经验,最好给自己留点余地。

复杂度累积

接手的项目越多,复杂度累积得就会更大。就算不会严重延期,也很难按时交付的。
我们用数学来看,假设你有 5% 的几率遇到意外的复杂度,而你的新项目是分为 10 个项目的,那么可得:

1 - (1 - 0.05) ^ 10 = 0.40

也就是说,在这个项目中,你有 40% 的几率造成延期。

感兴趣可以继续阅读:Why are projects always behind schedule?

创造性与机械任务

在「Software has diseconomies of scale」这篇文章中,有一个关于生产率差异的有趣论据。对于创造性任务,每个人都需要花费更多的时间,而机械任务则相反,它们通常能够在一定程度上实现自动化。

这句话的意思实际上就是,我们很难对创造性任务的时间进行准确地估计,甚至某些情况下没有过往的经验能够指导你。

Einstein trying to estimate a project

原文链接:Project delays: why good software estimates are impossible
推荐阅读:脑力劳动者一天只能高效工作 3 小时

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容