技术债务马丁·福勒,通过史蒂夫McConnell
YAGNI (你不会需要它) 通过维基百科
大设计前沿( 通过维基百科 )
更新:为了澄清这个问题,我想我也可以这样说,并保留我的意思:
作为一个敏捷实践者,你如何在“快速”和“肮脏”(无意中冒着技术债务,同时试图坚持YAGNI)和每一次迭代中的过度工程()之间找到正确的平衡?
发布于 2008-09-16 16:42:33
看起来,如果您坚持敏捷(迭代、迭代评审)的“计划,做,适应;计划,做,适应”的想法,那么默认情况下您将避免这些事情。BDUF与敏捷评估与规划的思想背道而驰,如果您真的很敏捷,那么您就不会自动成为BDUF。
发布和迭代计划会议的目的是确保您为该迭代向项目添加了最有价值的特性。如果你记住这一点,你就会免费避开YAGNI。
我强烈推荐Mike关于敏捷规划的书:
更新:在您澄清了在迭代中避免YAGNI和BDUF之后的。
BDUF...If我觉得在我开始工作之前,它的一个特性没有得到明确的定义,我会创建一个小的“特性”或故事来说明所需工作的设计类型部分。因此,也许小故事的故事点估计值是1,而不是真正的功能的5,这样,设计就会被时间限制在更小的故事中,你就会被驱使去处理这个特性本身。
为了避免违反YAGNI,我将非常清楚地了解客户对迭代中某个特性的期望。只做能映射到客户期望的工作。如果您认为应该添加一些额外的内容,则为其创建一个新特性,并将其添加到要执行的积压的工作中。然后,您将说服客户看到它的好处;就像客户会在某个时间点推动一个特性一样。
发布于 2008-09-14 17:02:11
基于几周前在HanselMinutes上完成的定义-HanselMinutes。该节目的基础是,如果你重新定义‘做’,以提高感知的速度,那么你将积累技术债务。由此得出的结论是,如果您对“完成”没有一个正确的定义,那么您很可能会获得一个项目列表,无论设计方法如何,在发布之前都需要完成这些项目。
发布于 2008-09-16 19:31:12
你似乎说"YAGNI“意味着”快速和肮脏“。我看不出来。
作为一个敏捷的程序员,我实践测试驱动的开发,代码评审和持续集成。
根据我的经验,技术债务的主要形式是:
不知道这是否回答了你的问题,但我写得很开心。
特洛伊DeMonbreun评论道: 不,这不是我的意思..。“快速和肮脏”=(无意中冒着技术债务的风险,同时试图遵守YAGNI )。这并不意味着YAGNI只是快速和肮脏的。“快速和肮脏”是我在描述技术债务时引用Martin Fowler的话。
避免雅格尼是接吻的另一种说法。YAGNI增加了技术债务。在避免YAGNI和保持低技术债务之间没有紧张关系。
我想我可能还是忽略了你问题的重点。
https://stackoverflow.com/questions/60888
复制相似问题