1 分钟阅读

你的 Bug 可能正是别人的功能

软件工程的魔幻定律(10)


Part III-III:时间与估算

Goodhart’s Law:指标成为目标后就失效了

这条来自经济学的定律在软件工程中被反复验证:

“When a measure becomes a target, it ceases to be a good measure.”


代码覆盖率是一个典型案例。为了达到 80% 的覆盖率目标,工程师可能写出大量无实际价值的测试——覆盖了代码行,但没有验证业务逻辑。结果是数字好看,质量原地踏步。

同样的问题出现在 velocity(速度点数)、bug 数量、PR 合并次数等几乎所有软件工程指标上。指标应该是观察窗口,而不是优化目标。当管理者开始用指标考核时,这个指标就开始失真了。