通过反复交谈,比尔·卡普托让我确信了一件非常令人惊讶的事情。这件事改变了我看待世界的方式,也改变了我做事的方式。
- 根本不存在软件生产力这样的东西。
正如 Martin Fowler近十年前所言,软件生产力无法有效衡量。原因在于它根本不存在于相关事物领域。
- 换句话说,生产力不适用于软件。
“我们今天创造了多少?”不是一个与软件相关的问题。即使它可以衡量,软件生产力也无法以任何有意义的方式接近商业价值。
- 这是因为软件开发不是一项必然会产生任何成果的活动。
这里有一个思维实验:
假设有几个开发人员在同一个项目上工作,碰巧的是,他们俩在同一天接手了同一项任务:
- 第一个开发人员 Frank 写了一个 1000 行的框架,完美地解决了这个问题。代码写得很好,经过了充分的测试,并且它的部署和操作都有很好的文档记录。
- 第二个开发人员 Peter 当天去公园玩,他一边喂鸽子一边思考这个问题。大约 4:45,Peter 漫步回到办公室,删除了 100 行代码,部署了更改……问题就解决了。
这两个开发人员中谁的“生产力”更高?
- 答案是:这并不重要。
重要的是 Peter 解决了问题,同时为团队降低了长期维护成本。
Frank 也解决了问题,但他通过编写代码增加了维护成本,因此(在其他所有条件相同的情况下)他的解决方案较差。
称 Peter 更“高效”是对隐喻的滥用,超出了任何可能的实用性范围。
我认为优秀的软件开发人员所做的就是解决问题。
- 事实上,这与生产相反。
创建代码、文档、数据等技术产品都是实现解决问题目标的必要之恶。
这就是为什么有时解决问题最有效的方法是 5 分钟的对话。