无法理解敏捷宣言原则中的某些观点


24

我在读敏捷宣言原则。除以下几点外,一切似乎都清晰合理:

简单性-最大化未完成工作量的艺术-是必不可少的。

我不明白这一点。这是否意味着应该以某种方式夸大未完成的工作?如果是这样,那真的没有意义。


2
+1表示反对-您在这里有一个令人惊讶的有趣问题。

1
另请参阅Wu Wei,并想象一下如何将其总体上应用到软件开发中。这是您的问题中表达的哲学的自然发展。

Answers:


30

删除括号注释。剩下的就是“简单性是必不可少的”,顺便说一句,这是该原则在其表达本身中的应用。

简单是必不可少的,因为您已经提炼出了您真正需要的东西,而消除了使手头的任务变得繁重,不那么优雅的事情:复杂。

从帕斯卡(Pascal)的简洁观点来看,我一直都在解释:“ 我会写一个较短的字母,但我没有时间。 ”您必须避免(从字母,代码中)不需要的内容,这是一项积极的任务,而不是一件容易的事。这不是自己发生的事情。


35

这样做的目的是避免做不必要的工作,即“最大化完成的工作量”。

因此,如果您在一个传统项目中计划并构建一个强大的抽象基础系统以适应以后的所有可能需求,则只需跳过该部分,然后构建最简单的东西即可满足当前需求。不要构建不需要的东西。

YAGNI是一个相关的概念。


5
巧合的是,这可能是我最不认同的敏捷原则。极端地说,抽象的远见是使我们与其他动物区分开来的原因……我说,我们需要尽可能地使用它。当然,我知道该原则必须对付什么样的暴行,但是一点远见不会受到伤害。有时是YAGNI,但我看到有些开发人员是如此教条,以至于他们甚至不停地思考几个小时(并意识到他们现在实现的简单性甚至不足4-8小时)。
2012年

2
@Max,我认为有必要预见未来的可能变化。这是有远见的一个很大的帮助。您描述的开发人员更像是鸵鸟,躲在沙子里。
superM 2012年

7
@Max客户不希望支付你认为他们可能需要在未来,他们要支付他们现在需要的是尽快。每月都有数十亿美元的浪费精力浪费在善意上,“这将在以后节省大量时间”,并且“以后”实际上从未出现,但是由于所有“前瞻性”,事情变得复杂,多虫和迟到了

15
@Max:YAGNI即将决策推迟到最后一个负责任的时刻。您正在谈论的是将决策推迟到最后可能的时刻,这的确是Bad Idea™。问题是:您将永远不会比现在拥有的信息少。在最坏的情况下,明天您将获得相同的信息。但是通常到那时您将学到一些东西。在你提到的情况下,你知道你会需要它,所以YAGNI根本不适用。在那种情况下,尝试应用它确实是愚蠢的。
约尔格W¯¯米塔格

2
@Max:您在此处描述的是与最大化未完成工作量完全相反的事情。它正在做两倍的工作。
pdr 2012年

5

我们过去称此为“镀金”。对锤子的要求是它可以将钉子打成一块木头。作为镀金锤子并不能更好地完成工作。

很多时候,开发人员会建议使用一个新的酷框架或添加一些功能,尽管这些功能并不是必需的。我们会把这个想法记下来,但是对于这个版本,我们不会这样做。我们将最大化未完成的工作。准时交付软件非常困难,因此不要交付超出您所需数量的代码。如果需要完成,最终它将纳入计划并在适当的时间完成。


4

这个想法与丰田生产系统(TPS)的概念非常相似,后者导致了更通用的精益生产,然后将这些技术应用于精益软件开发。TPS明显早于敏捷运动,其起源于1950年代后期的制造业。

最大化未完成工作量的概念类似于消除浪费。在制造环境中,废物包括诸如货物的过度生产,等待资源,人员或产品的不必要移动,过多的库存以及有缺陷的产品等。在精益软件开发中,这些浪费被转化为不必要的功能,开发过程中的延迟,要求不明确的软件,从而减慢了软件的生产,缺乏测试以及通信延迟。

这两个概念的总体思路是相同的-不增加价值的事情是浪费的,应将其最小化。最终目标是提高质量,同时减少生产时间和成本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.