软件估算从未奏效,也永远不会奏效

软件估算从未奏效,也永远不会奏效

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

自计算机问世以来,人们一直试图估计构建软件所需的时间,但一直以来都失败了。估计中等规模的项目非常困难,而估计大型项目几乎是不可能的。然而,这个行业一直坚持认为,如果我们都再努力一点,这个六十年来一直不起作用的方法一定会在下一个项目上奏效。根本问题在于,一旦软件开发变得如此常规,以至于可以估计,它就会变成一个可以购买而不是构建的产品或服务。今天,很少有人需要构建普通的内容管理系统或电子商务店铺,他们只是使用WordPress、Shopify或其他替代品。因此,大部分软件开发都集中在创新工作上。但是关于创新工作的问题在于,在开始构建之前,没有人确切知道它应该是什么样子。在软件行业一直未能估计工作的同时,它也一直自欺欺人地认为,你可以事先指定创新工作,并生产出人们真正想要的东西。然而,我们之前也尝试过这样做!但是没有人关心结果。因为它最终没有解决真正的问题。只有在构建了一半错误的解决方案、改变方向,然后提出更好的解决方案之后,你才能明确表达出这些问题。是时候接受这一点了。聪明的程序员已经尝试了几十年,他们一次又一次地失败,就像今天我们试图逆着人类的智慧潮流而动一样。

🔎

延伸解读

估算失效的根源:常规工作已被产品替代

文章指出,一旦某类软件开发变得足够常规、可以估算,它就会变成可直接购买的产品或服务,比如WordPress或Shopify。因此,如今大部分软件开发集中在创新性工作上,而创新工作在开始构建前无人能确切知道它应该是什么样子。这意味着估算方法所适用的对象早已消失,继续坚持估算只会让团队陷入徒劳。

预先指定创新工作的幻想

行业长期自欺欺人地认为,可以事先详细指定创新工作并产出人们真正想要的东西。但文章强调,过去的多次尝试都未解决真正的问题。真正的问题往往只有在构建了半成品、改变方向并找到更好方案之后才能被清晰表述。因此,试图在开始前就固定范围,反而会阻碍对问题的深入理解。

替代方案:用预算或胃口取代估算

文章建议放弃估算,转而采用预算或“胃口”的方法,即Shape Up方法论中的做法。具体而言,在开发过程中保持范围可协商,程序员反而能按时交付优秀软件。虽然最终结果不会完全符合最初要求,但最初的要求本就基于对问题最糟糕的理解。伟大的软件正是在推进过程中通过权衡和让步产生的。

放弃估算的实际收益

根据文章,放弃估算可以帮助团队更快更好地交付产品。37signals数十年的实践表明,小团队通过这种方法能够以远超自身规模的影响力打造出优秀产品。无论是否采用特定方法论,给予开发过程范围协商的空间,都比坚持估算更符合人性,也更能应对创新工作的不确定性。

❓

Q&A

为什么软件估算一直失败?

因为估计中等规模项目非常困难,而大型项目几乎不可能估计,行业却仍然坚持使用未奏效的方法。

软件开发中常规工作和创新工作的区别是什么?

常规工作可以被估计并转变为可购买的产品,而创新工作在开始构建之前没有明确的定义。

如何改善软件开发的交付效率?

放弃估计,采用预算方法,并在开发过程中允许范围协商,可以提高交付效率。

为什么软件行业自欺欺人地认为可以事先指定创新工作?

因为行业长期以来误以为可以在构建之前明确需求,但实际结果往往未能解决真正的问题。

成功的软件开发需要哪些关键因素?

成功的软件开发依赖于在进展中进行权衡和让步,而不是严格遵循初始估计。

为什么程序员在开发过程中需要灵活性?

灵活性允许程序员根据实际情况调整范围,从而更好地满足用户需求并按时交付软件。

🏷️

标签

➡️

继续阅读