软件生产力是一个伪概念


通过反复交谈,比尔·卡普托让我确信了一件非常令人惊讶的事情。这件事改变了我看待世界的方式,也改变了我做事的方式。

  • 根本不存在软件生产力这样的东西。

正如 Martin Fowler近十年前所言,软件生产力无法有效衡量。原因在于它根本不存在于相关事物领域。

“我们今天创造了多少?”不是一个与软件相关的问题。即使它可以衡量,软件生产力也无法以任何有意义的方式接近商业价值。

  • 这是因为软件开发不是一项必然会产生任何成果的活动。

这里有一个思维实验:
假设有几个开发人员在同一个项目上工作,碰巧的是,他们俩在同一天接手了同一项任务:

  • 第一个开发人员 Frank 写了一个 1000 行的框架,完美地解决了这个问题。代码写得很好,经过了充分的测试,并且它的部署和操作都有很好的文档记录。
  • 第二个开发人员 Peter 当天去公园玩,他一边喂鸽子一边思考这个问题。大约 4:45,Peter 漫步回到办公室,删除了 100 行代码,部署了更改……问题就解决了。

这两个开发人员中谁的“生产力”更高?

  • 答案是:这并不重要。

重要的是 Peter 解决了问题,同时为团队降低了长期维护成本。
Frank 也解决了问题,但他通过编写代码增加了维护成本,因此(在其他所有条件相同的情况下)他的解决方案较差。

称 Peter 更“高效”是对隐喻的滥用,超出了任何可能的实用性范围。

我认为优秀的软件开发人员所做的就是解决问题。


创建代码、文档、数据等技术产品都是实现解决问题目标的必要之恶

这就是为什么有时解决问题最有效的方法是 5 分钟的对话。