Closed. This question is opinion-based。它当前不接受答案。












想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

3年前关闭。



Improve this question




技术债务via Martin Fowlervia Steve McConnell

YAGNI(您将不需要它)via Wikipedia

BDUF(前期大设计)via Wikipedia

更新:为澄清这个问题,我想我也可以这样陈述并保持我的意思:

“作为敏捷实践者,您如何在的“快速和肮脏”(尝试遵守YAGNI时无意冒技术债务风险)与内过度设计(BDUF)之间找到正确的平衡?”

最佳答案

看来,如果您坚持“计划,做,适应;计划,做,适应”敏捷思想(迭代,迭代评论),则默认情况下会避免这些事情。 BDUF与agile estimating & planning的想法恰恰相反,如果您真的很敏捷,就不会自动成为BDUF。

发布和迭代计划 session 的目的是确保您为该迭代将最有值(value)的功能添加到项目中。如果您牢记这一点,则可以免费避免使用YAGNI。

我会强烈推荐有关敏捷规划的Mike Cohn书籍:

  • User Stories Applied
  • Agile Estimating and Planning


  • 更新:在澄清了在迭代中避免使用YAGNI和BDUF之后...

    BDUF ...如果我在开始进行某项功能之前未明确定义某个功能,则可以创建一个小的“功能”或故事来说明所需工作的设计类型部分。因此,较小的故事的story point估计值可能为1,而不是真实要素的估计值5。这样,设计便随时间进入了较小的故事,您将被迫着手进行要素本身的开发。

    为避免违反YAGNI ,我将努力弄清楚客户对迭代中某个功能的期望。只做与客户期望相对应的工作。如果您认为应该添加一些额外的功能,请为其创建一个新功能,然后将其添加到backlog of work中。然后,您会说服客户看到它的好处;就像客户会要求在某个特定时间点完成某项功能一样。

    09-25 22:18