软件开发估时难?但是必不可少!

众所周知,估算软件项目是非常困难的。哈佛商业评论的一项研究发现,六分之一的 IT 项目成本超支超过 200%,进度延误近 70%。麦肯锡的另一项研究发现,IT 项目平均超出预算 45%,超出计划 7%。他们发现大型软件项目尤其糟糕:预算超过 1500 万美元的软件项目超出预算 66%,平均进度超出 33%

当然,任何在软件行业工作过一段时间的人都会亲身体验到这一点。你可能曾经说过:“哦,那个只需要几天就能完成”……然后一个月后,你发现自己还没完成。估算软件项目似乎总是遇到霍夫斯塔特定律的困境:“事情总是比你预期的要长,即使你已经考虑到了霍夫斯塔特定律。”

不幸的是,人们常常看到这种情况,认为估算软件项目时间线很难,然后就放弃了。有一种确立的“无估算”立场认为我们应该完全停止对软件项目给出估算。许多敏捷方法论涉及任意的评分系统——故事点等——这些系统故意设计成避免以时间单位给出估算。

这里有一些细微之处:这些想法确实有一定的价值。我并不是要贬低故事点。特别是,“无估算”风格的项目管理可以带来关于时间线的更好对话:这些系统鼓励提出“我们接下来两周能完成什么?”而不是“特性X需要多长时间?”这对于软件项目,尤其是长期项目来说,往往是一种更好的思考方式。

然而,迟早会有人问:“特性X什么时候发布?”有些情况下,需要一个答案——一个准确的答案——这是不容商量的。也许销售部门如果能承诺一个新特性的时间线,就能谈成一笔大买卖。也许这个特性是另一个团队的主要依赖,他们需要知道如何安排自己的工作。也许你的特性是众多将共同组成新产品发布的特性之一,整个产品发布机制需要启动并推广它,这需要一个时间线。我可以继续列举,但重点是,有许多情况需要估算。

在技术职业生涯中取得进步的一个主要“秘诀”就是学会如何给出准确的估算。这对我来说绝对是真理:我不回避给出时间线,并且我已经学会了如何经常性地准确估算,以至于人们信任我的估算。

如果你总是避免估算,并且不学会在需要时给出时间线,这可能会成为你职业生涯的限制。能够告诉你的老板和同事什么时候可以期待什么——并且实现这些目标——可以极大地建立信任。这对于个人贡献者和工程经理来说都是如此:你可能会很容易地成为一名高级工程师或工程经理,而不需要擅长估算,但要想走得更远,你可能需要学习这项技能。

而且这确实是一项技能:估算是可以学习的。你可以学习技巧,但某种程度上,技巧并不重要:无论你使用什么技巧,实践都会让你更完美。如果你养成习惯,分解项目并做出时间线估算,你可以将这些估算与实际情况进行对比并重新校准。反复这样做,你会变得更好:你会了解你的团队在哪里容易陷入困境,在哪里能够快速完成工作;你会发现哪些代码库区域容易修改,哪些需要更多时间;你会学会识别自己的偏见,以及你最可能在哪些方面过度或低估。

这个系列的下一篇文章将介绍我使用的估算技巧,这个技巧对我来说是有效的。但技巧并不像更广泛的观点那么重要:估算很难;尽管如此,还是去做吧。

原文链接:https://jacobian.org/2021/may/20/estimation/


如果你喜欢本文,欢迎点赞,并且关注我们的微信公众号:Python技术极客,我们会持续更新分享 Python 开发编程、数据分析、数据挖掘、AI 人工智能、网络爬虫等技术文章!让大家在Python 技术领域持续精进提升,成为更好的自己!

添加作者微信(coder_0101),拉你进入行业技术交流群,进行技术交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder_风逝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值