Scrum邪恶?
在去年的CITCON欧洲大会上,我们就“ Scrum邪恶? ”这个主题进行了精彩的讨论。阅读James Shore关于“ 敏捷的衰落与衰落 ”的博客文章让我们回想起了这个会议。
这些是深入敏捷的人们所提出的严重疑问。 对于外部的人来说,判断可能会更加严酷,就像本篇博文“ 敏捷病 ”一样。
您目前对Scrum和/或Agile及其对软件开发的影响是什么?
(这不是关于5年前的敏捷意味着什么,这是关于它今天的影响力。所以说Scrum与RUP并不是什么关系,而是更多的是新的RUP的Scrum?)
就个人而言..我认为Scrum比旧的科学的pipe理方式更容易接受,而不是任何敏捷的方法。 应该花30分钟或更less的Scrums变成长期运行状态更新…(现在每天和站立!)
和大多数事情一样敏捷..我认为这个错误在于
- 不理解方法背后的原则……导致盲目信任的下列实践和不工作时的无奈
- 没有使方法适应手头的问题。 标准化是如此诱人..追逐模板化解决scheme的所有问题。 “这是我们的新进程。 每个人都应该遵守。
- 不适应现实和回顾。
- 解决症状而不是疾病。
优秀的人会制作出好的软件(即使没有敏捷,SCRUM或其他)…平庸和低下的人也会用自己的本土敏捷来制造出类似的软件。 然而,敏捷的人们会因此而产生更好的产品
更新 :JFYI ..只是在Mike Cohn的网站上find了“ Scrum闻起来 ”的目录。 简短的,很好的书面和从自己的人。
我对Scrum不太了解,绝对不足以说明它是否是“邪恶的”(我也认为“邪恶”被过度使用和误导性的术语,但这可能是另一个讨论)。 但是,正如几乎任何事情一样,即使意向好,我也认为狂热主义和原教旨主义是不好的。
我对XP和其他“敏捷”方法有一些了解,其中许多都有很多好的想法,但是我一直认为这不是一个有条不紊的方法。 我主要关心的是所有的开发模式,都需要熟练的,聪明的和自我激励的开发人员完美地工作,而且由于许多最好的想法对于聪明的人来说确实是常识,所以似乎有点过分了。 如果所有的开发人员都很好,有纪律的话,你甚至可以得到牛仔风格,“编码和修复”。 但任何一种方法都会失败,一个大多数不称职的船员,盲目地遵循一些没有常识的“宣言”并不会使它变得更好。
与“敏捷”相反; 沉重的官僚体系; 实际上可能比平庸的开发者更适合工作,而不是需要自我驱动的参与者的系统; 尽pipe它可能会驱赶许多有创意和智能的开发者。 主要的问题是find优秀的人,而不是如何运作项目。
顺便说一句:我个人喜欢敏捷的想法,并使用适合自己的敏捷思想,但是我也看到,如果我和我的同事不善于pipe理自己,这是行不通的。
根据我的经验,对SCRUM消极方面的一些观察:
一个误导性的细节感。
在SCRUM中有很多具体的过程细节,很容易陷入困境,而失去高层目标的追踪(然后它变成了一个货物崇拜过程)。 此外,SCRUM会产生大量的工件,很容易误导您,相信这些数据可以让您更深入地了解开发过程,而且数据的绝对数量可能会阻止人们询问他们是否正在获取正确的信息。
在应用程序。
在任何情况下,SCRUM经常被错误地应用于所有情况的通用修复过程,因为在任何过程中,SCRUM只在相当狭窄的情况下才有用。
对短视的压力
SCRUM鼓励对具体定义的任务进行短期工作。 不太明确的工作(尤其是没有系统中已经存在的工件的工作),比如研究或战略规划,在获得开发者时间方面处于劣势。
信用错位
SCRUM是最明显的开发过程之一,它有一个吸引人的名称/品牌,这意味着通常一个成功的使用SCRUM的项目更有可能导致SCRUM获得大量的信用,而不是一个成功的项目采用了一个不太引人注意的发展过程,并没有这样一个引人注目的名字。
FUD
那些在SCRUM训练最好的人似乎是最盲目的防守,甚至试图让人们认为,即使是一丝不苟的SCRUM方式的一点点偏离导致了可怕的“瀑布”过程。 考虑到不同的发展过程的巨大的多样性,其中许多都有自己的良好品质,这种趋势是相当可笑的。 而且,有这样的想法,敏捷的唯一方法是使用SCRUM(TM)或TDD(TM)或XP(TM),实际上有许多方法可以在不使用任何这些特定方法的情况下实现开发敏捷性。 事实上,没有一个开发过程是一个银弹,最好的开发过程实际上只是比第二,第三等最好的过程更好。
Scrum不是实际的软件工程pipe理的替代品。 有人还是要确保代码好,项目是根据业务需求进行的,用户体验出现的很好。 Scrum使所有不重要的东西显得更重要。 这完全是在窥视树木,完全忽略了森林。
另一件我讨厌Scrum的事情是Scrum往往是非常痛苦的会议,其中有趣的事情没有讨论 – 团队相互感到恶心,有趣的事情停止在任何地方讨论。 它确保创新和乐趣被淘汰出发展过程。 它导致低质量,枯燥的软件。
我和“敏捷”和“Scrum”一起生活了一年,也见过很多其他公司使用它。 我确信“我们敏捷”的意思就是“我们对软件开发没有任何直觉或智慧,所以我们每天只听对方讲30分钟,假装我们擅长这一点。”
好的,根据我的经验,Scrum是邪恶的。 “敏捷”是一个伟大的营销话语,但却是一种可怕的方法。
有趣的是,我最近听了蒂姆·布雷(Tim Bray)的一个会议演讲,他的主题是“如何克服信贷紧缩”(他或多或less),他的观点是敏捷不仅远非死亡,而且将是唯一的一个球员是死的瀑布
他对此的推理似乎非常明显,对我来说显而易见的是,如果资金紧张,商业和客户都不会承诺巨额的前期成本,如果项目失败临近terminal,那么他们可以select小的迭代成本,只要失败另一个迭代。 你可以整天谈论相对风险,但是我从经验中知道,只有敏捷才能为客户提供安全和控制的感觉。
当然,“敏捷”的大扫荡使得它成为一支负责任的pipe理团队的手中枪,而且我没有时间去处理像XP和长达一小时的Scrum会议这样的事情,但这不是没有敏捷开发原则的失败。 当然,SGS的post提出了一个很好的观点,即更坚定的方法可以更适合平庸的开发者和工厂在线软件,但我相信这不适用于OP;)
在我迄今职业生涯的小范围内,我可以说每一个瀑布项目最终都会变成一个愚蠢的敏捷项目,而这个项目只有敏捷项目(完全拥抱)才能得到各方的支持。项目结束。 赞成一直做得更好的事情是否有偏见?
总结:我强烈反对。 敏捷是未来。
首先,接受SCRUM是一个pipe理实践,以促进发展和业务合作伙伴之间的合作。 作为一套pipe理实践,它们通常易于实施和遵循,并为项目提供几乎直接的好处。
SCRUM不是一套工程实践。 没有一套工程实践的团队是一个不能维持交付的团队。 SCRUM本身是不够的。 只有练习SCRUM的敏捷团队将开始失去速度。 如果没有适当的工程实践,例如XP,代码库变得越来越难以改变项目运行的时间。
所以,SCRUM本身将提供短期的利益,并可能产生虚假的价值感。 没有像XP这样的工程实践的SCRUM,很快就会成为一个需要救援的项目。 SCRUM是一套极好的pipe理实践,需要一套完善的工程实践,这些工程实践必须同时进行。
正如布鲁克斯所说,“没有银弹”,敏捷过程不会偏离这一点,不能适用于各种项目。
而且,Scrum和敏捷stream程不仅仅是一套实践,还有一些基本的原则 。 如果应用实践可以很容易,没有这些原则,它可能会导致一场灾难。 通过不断的检查和调整过程 ,这个过程将会结束。
显而易见,Scrum正在遭受使用Scrum和失败的项目[mis-]的困扰。 这是不可避免的。 但是,我们看到瀑布项目失败,我们看到RAD项目失败,我们看到RUP项目失败,它告诉我们这些过程是什么?
我个人认为敏捷过程已经达到成熟阶段,不知道这意味着他们开始衰落。
您应该将软件和宗教视为 “代码完整” 。
根据您当前的项目select和混合实践。 不要把方法变成一个宗教。 请记住,我们都来自不同的世界 。 史蒂夫·麦康奈尔(Steve McConnell)多年来一直在提供这方面的build议 – 他的“ 快速发展 ”( Rapid Development)一书给出了一个实践目录,指导他们是否适合你的项目。 这本书在1997年赢得了Jolt奖,史蒂夫·麦康奈尔(Steve McConnell) 受到了极大的尊重 ,所以现在是时候了。
Eric Sink 这样说 (舌头在脸颊):
我承认,敏捷运动所产生的智慧文学的身体里面有一些非常好的东西。 但是敏捷与基督教或佛教等其他主要宗教没有区别。 你可以在那里学到一些伟大的原则和实践,但是正式成为一个成员是一个决不能轻言放弃的决定。
公平的Alistair Cockburn的敏捷软件开发也build议务实的实践select,但恕我直言,一些其他敏捷大师太福音。 其他人则说得更强 。
我认为这在某些情况下是有用的。 但是我认为SCRUM或其他任何方法都必须成为我们的工具,而不是其他方式。
当它开始创造比解决问题更多的问题时,这是不值得的。
如果在使用它之后,你正在改进你的时间估计,你的团队更加关注他们的目标,你更早地检测到延迟,并且能够对他们做出反应,然后scrum正在为你服务。
但是当你发现你不得不花费大量的时间来试图将开发任务分配给开发人员,并使其适应你的迭代时间,那么当你不得不估计一个甚至没有定义好的任务时,不得不花费多less成本来实现一种你甚至不知道的技术,等等……只要pipe理层可以有一个漂亮的迭代图,那么这是一个完全浪费时间(当然还有钱)。 事实上,这是一个令人沮丧的来源,它使得开发变得更加困难,并且pipe理几乎是不可能的,因为不pipe你怎么努力都不能产生好的数据。
有趣的是,在我看来,这是一个混乱的恶魔环节,并没有给出一个特别消极的观点:
比如说“Scrum是因为…而是邪恶的”,所有的人都认为敏捷性不好(这对敏捷来说是毒气)
这篇文章的重点似乎是把重点放在“过程”上,而不是目标是问题。 这适用于任何方法。
同样,“ 衰亡与衰退”的文章也指出,如果没有以良好的工程实践作为后盾,盲目应用一个stream程(特别是pipe理层的SCRUM)是没有意义的。
我认为重要的一点是,你不能以任何方式采取任何方式,试图盲目地(或者更糟糕的是,只是你想要的部分)复制它,并期望它能够工作。 每一种情况都是不一样的,没有明确的思想,好的做法和有才华的,有动力的人,你们将要奋斗。
Scrum是对退化瀑布的反应。 在原来的forms,瀑布反馈到每个级别的前一步。 当缺less时,很容易失败。 巨额IT项目的巨大部分已经充分certificate了这一点,这些项目完全失败,没有任何收费。
在我看来,Scrum引入了来自未衰减瀑布的两个真正有价值的差异,可能通过使用代理来testing思想和部分结果,可能通过使用代理来进行testing,也可能利用通过面对现实早期和经常。 也就是说,与您的客户进行协作,并观察您正在做的事情以及它的工作情况。
不过,如果你渴望获得最有效的荣誉之路,那么实际上你需要以可度量的forms开始组织的最高质量目标,并通过估计其对进展目标的影响来select下一步(如果你喜欢冲刺) 。 Tom Gilb(参见Gilb.com)在他的“竞争工程”手册中提供了详细的方法,尽pipe他的“软件工程pipe理原理”更为容易阅读。
从他提供的大量创意中select和适应他的劝告是他的方法的一大优势。
Scrum不是邪恶的,但人们可以。 如果一个团队不了解这些做法以外的原则,他们将会失败,当然,他们会责怪他们认为他们正在使用的Scrum或其他敏捷方法。
人们可能想要使用Scrum,他们可以阅读很多,并可以理解如何使用,但问题是,大多数人不明白他们为什么使用。 他们只是认为使用Scrum会让他们看起来更好,客户也会喜欢。
敏捷之路充满了痛苦和辛勤的劳动。 这并不容易。 如果你喜欢,这是一种文化变革,一种新的思维方式[ 2 ]。
这就是为什么我认为,在学习Scrum之前,极限编程或者其他敏捷方法论的人应该阅读关于精益思想的文章[ 3 ]。 我们需要理解的原则可以在这里find。
参考文献:
[ 1 ] – http://www.agilemanifesto.org/principles.html
[ 2 ] – http://www.mrbool.com/articles/viewcomp.asp?comp=7480
[ 3 ] – http://www.lean.org/
我不认为Scrum是“邪恶的”,但我认为任何纯粹的方法实现都会有缺点。 目标是采取一种或多种对团队有吸引力的方法,并将这些function应用于您的stream程。 根据我的经验,任何纯粹的方法都太僵化,不能满足项目中所有利益相关者的需求。
我不认为它的邪恶,但我认为它可以误用。 想到两个例子。 如果您在过去10年使用stream畅使用瀑布的成熟产品工作,我认为Scrum的好处不值得在一个新stream程中对所有开发人员进行再培训。 我也认为,如果没有适当的团队或培训,Scrum将会失败。 如果团队中有许多经验丰富的开发人员,那么如果pipe理层购买了Scrum,那么Scrum就可以工作。 试图用实习生和Scrum方法开展一个新的项目,虽然没有很多的培训,实习生也没有足够的经验,在不断的监督下完成任务。