让我逐点回答您的担忧:
这没有最小尺寸吗?对于三到四个星期的项目来说,前期的大型设计必须更有效率......对吗?
我不确定是什么让您认为在纸上绘制矩形一定比重构代码更快。
无论如何,即使是这样,BDUF 是否回报的问题更多地取决于您在项目期间期望的学习量,而不是项目规模。在实施系统时,您期望了解的有关设计、要求等的越多,您的前期设计就越浪费。
我还没有遇到过在实施系统时没有学到重要知识的项目。
我们的客户通常要求固定价格。他们需要知道他们在处理什么,除非在特殊情况下,我们遇到了一个明显的黑洞,即使这样,人们也更愿意戴上帽子。那么,如果您要采用能够容忍持续需求变化的流程,您如何提供报价呢?
只接受不会改变总工作量的需求变更。也就是说,当新的需求出现时,放弃不太重要的需求。让客户做出决定,这样他就可以获得最大的收益。
您不会以这种方式获得敏捷的所有好处,但据我所知,它与固定价格所能获得的一样好。
我知道敏捷可以在更复杂的项目中提供更好的成功几率,但它不会增加客户的成本吗?
您是否建议以敏捷方式运行的项目比传统项目成本更高?实际上,有些公司的情况正好相反,最多可以降低 50% 的成本。
当然,还有不考虑的代价——也许我们又回到了最小尺寸问题。
由于早期的反馈,敏捷项目的失败成本会降低。您可以更早地注意到失败 - 因此决定取消项目。
您将如何向客户解释这种违反直觉的方法?非技术利益相关者可能没有经验来围绕瀑布之外的任何事情。
为什么敏捷软件开发要付费?
即使是内部项目,也有预算。我错过了什么?
我不知道。敏捷适用于预算 - 实施最高优先级的功能,直到预算用完。您拥有可以用这笔钱实施的最有价值的系统。
最近似乎有人反对敏捷。其他东西会很快开始受到关注吗?
从一开始就遭到强烈反对。随着它变得越来越流行(而且确实如此!),您也很自然地会看到更多的反弹。
精益软件开发正在获得很大的吸引力。不过,它不是与敏捷开发的竞争,而是互补的。社区实际上是相当重叠的。
关于“一种方法来统治它们”——看看 Alistair Cockburn 的“Crystal”敏捷过程系列。他(相当有能力地)争辩说,每个项目都需要它自己的过程,而且即使是一个项目的过程也需要随着项目的进行而改变。他提供了一个轻量级的框架来开发你的流程。
正如我所想的那样,Scrum 也是如此。Scrum 实际上并没有告诉你太多关于如何运行你的项目,而是更多地告诉你如何找出什么在起作用,以及如何让团队适应这些发现。