【译文】bug 经济学

💡 原文中文,约1600字,阅读约需4分钟。
📝

内容提要

软件开发中的错误常见,修复错误需要时间和经济激励。开发人员关注主要功能,边缘情况被忽视。科学方法改进软件质量,但经济限制应用。try-catch代码块处理错误,导致用户看到“未知错误”。生产高可靠性软件可能无经济意义,用户更喜欢功能多软件。优秀工程师需在时间预算内做平衡决策。

🔎

延伸解读

经济激励如何塑造软件质量

文章指出,软件开发中错误普遍存在,修复需要时间和经济激励。开发人员通常被要求快速编写代码,因为上市时间至关重要。因此,他们编写的代码可能只在0.1%到99.9%的时间内正常运行。由于应用程序代码只是计算机上运行的全部代码的一小部分,期望100%无错误几乎不可能。经济激励的缺失导致高可靠性软件可能没有市场,用户更偏好功能多的软件。

边缘情况为何被忽视

文章强调,开发人员通常关注主要功能,边缘情况被忽视。测试边缘情况是大多数错误的根源,但通常优先级较低。科学方法可以改善软件质量,但经济限制其应用。正确处理大量边缘情况需要大量工作,而这些工作并不总能得到用户赞赏。因此,开发人员用try-catch代码块封装快乐路径代码,出错时返回“未知错误”信息。

优秀工程师的平衡之道

文章认为,优秀工程师需在时间预算内做平衡决策。好的工程设计是一个平衡游戏,工程师应在预算范围内做到最好。他们可能会提出削减或简化功能,以避免过于分散,而优秀的管理层也会倾听他们的意见。这体现了在经济学约束下,工程师如何协商功能削减或简化,以平衡质量与时间。

❓

Q&A

为什么软件开发中会有这么多bug?

因为开发人员通常被激励快速编写代码,上市时间至关重要,导致代码只在0.1%到99.9%的时间内正常运行。此外,应用程序依赖大量外部代码,期望100%无错误几乎不可能。

为什么开发人员不修复所有已知的bug?

修复bug需要时间和经济激励。如果bug只影响一小部分用户,开发人员可能难以重现。而且,生产高可靠性软件可能没有经济意义,因为用户更喜欢功能多但漏洞多的软件。

为什么用户会看到“未知错误”这样的提示?

因为开发人员用try-catch代码块封装快乐路径代码,如果出错,就返回“未知错误”信息。这是一种处理边缘情况的常见方式。

科学方法在软件开发中是如何应用的?

科学方法涉及形成可证伪的假设并试图反驳它。但在软件开发中,人们通常采取乐观方法,测试快乐路径,而测试边缘情况(大多数错误的根源)优先级较低。

为什么高可靠性软件可能没有经济意义?

因为如果大多数用户更喜欢漏洞更多但功能加倍的软件,那么只生产少数功能的高可靠性软件可能就没有什么经济意义。

优秀工程师如何平衡软件质量与时间预算?

优秀工程师知道如何协商,而不是盲目照办。他们可能会提出削减或简化功能,以避免过于分散,而优秀的管理层也会倾听他们的意见。

🏷️

标签

➡️

继续阅读