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 合并次数等几乎所有软件工程指标上。指标应该是观察窗口,而不是优化目标。当管理者开始用指标考核时,这个指标就开始失真了。