隐喻式提问

2004 年 12 月 16 日

正如我的作品的常客所知,我对使用其他行业的隐喻来推断软件开发非常怀疑。特别是,我认为工程隐喻对我们的行业造成了损害——因为它鼓励了将设计与构建分离的概念。

当我闲逛在伦敦办公室时,这个问题在精益制造的背景下出现了,精益制造是一个在敏捷圈子里经常使用的隐喻——特别是Poppendiecks。如果我不喜欢来自土木工程的隐喻推理,那么我会更喜欢来自精益制造的推理吗?

我认为同样的危险也适用,但这取决于你如何使用隐喻。与其他活动进行比较是有用的,如果它能帮助你提出问题,但当你用它来证明答案时,它就很危险。

举个例子——精益制造的原则之一是消除库存。这引出了一个问题,即在软件开发中是否存在与库存类似的东西。有人建议,前期文档就是这样的类似物。它在那里,不产生任何价值,直到你真正交付一些基于它的软件。

在这里,隐喻帮助我们从不同的角度看待我们的实践。它帮助我们提出关于我们所做的事情的问题。到目前为止,我认为隐喻是有用的。

当人们说:“我们在精益制造中消除库存,前期文档相当于库存,因此我们消除前期文档”时,就会出现问题。现在我同意我们需要大幅减少这种推测性文档;但这样做的理由必须来自对软件开发过程的思考,而不是仅仅通过类比推理。