在讨论Scrum的全部内容时,我发现也许我完全误解了敏捷性。在我看来,Scrum(这当然被认为是敏捷过程)与管理功能,冲刺和角色以及与TDD,结对编程,CI,重构和其他以开发人员为中心的技术无关的东西无关。直到现在)都是敏捷的心脏。现在我面临一个困难!
1)Scrum不了解开发人员是否执行敏捷实践?
2)您可以在不使用自动化测试的团队中实施Scrum吗?是否不执行重构或不遵循敏捷编程实践?
在讨论Scrum的全部内容时,我发现也许我完全误解了敏捷性。在我看来,Scrum(这当然被认为是敏捷过程)与管理功能,冲刺和角色以及与TDD,结对编程,CI,重构和其他以开发人员为中心的技术无关的东西无关。直到现在)都是敏捷的心脏。现在我面临一个困难!
1)Scrum不了解开发人员是否执行敏捷实践?
2)您可以在不使用自动化测试的团队中实施Scrum吗?是否不执行重构或不遵循敏捷编程实践?
Answers:
认为Scrum等于敏捷是一个常见的错误。
敏捷遵循敏捷宣言的四个原则。Scrum是符合这些原则的项目管理流程,但它本身并不是敏捷的。XP(TDD,结对编程)是一个开发过程,也与那些原则一致,与Scrum一致,但并不是敏捷的。持续集成,持续交付,DevOps,均符合敏捷原则。
首先遵守原则。所有这些流行语只是人们已经成功地帮助他们遵循原则的方法。但是“成为敏捷”的主要部分是能够在不遵循敏捷原理的情况下随意调整您的流程。
阿利斯泰尔科伯恩(敏捷运动的创始人之一)说,这个关于晶彩(他的敏捷开发方法的一个方面):
可以使用以下单词向第3级侦听器描述Crystal Clear:
“将4-6人放置在一个配有工作站和白板并可以与用户接触的房间中。让他们每隔一两个月向用户交付运行中经过测试的软件,否则就别管它们了。”
这就是敏捷的定义,诚然,这是对经验丰富的开发人员的了解,他们知道自己在做什么,并且可以信任他们继续做下去。那么这是否意味着您必须使用CI和TDD以及结对编程以及所有其他流行的东西?简单地说...不。
敏捷不是要遵循一系列流程,而是要有效。对您而言意味着什么取决于您的团队及其运作方式,您认为对您有用的东西。如果TDD不能帮助您生成有效的代码,请停止收听那些在网络上大喊大叫并且不使用它的小灯!如果“配对编程”确实可以帮助您的团队集中精力并完成工作,那么请忽略任何浪费时间的人,并像在学校运动会上进行三腿比赛那样组织您的团队。
我很多年前就做过敏捷,所以很多时候我们甚至都没有意识到自己在做敏捷-我们每个月都会提供产品的迭代,并定期修正错误并定期添加新功能。我们进行了绝对零单元测试,因为还没有发明这种东西,也没有编写重构书。因此,是的,没有任何所谓的敏捷实践,您绝对可以进行敏捷。
Alistair也对肯特·贝克说:
当问及XP以及软件工程学院的“能力成熟度模型”的五个层次时,他回答了XP的三个成熟度:
做到一切如写。
完成之后,尝试更改规则。
最终,不管您是否正在使用XP。
最终,不要在乎是否正在使用XP ...明智的话应该提醒您不要陷入陷阱。
是敏捷开发还是管理?
敏捷是一组软件开发实践,可以满足灵活性和快速变化的市场需求(或所谓的加速交付)。因此,从总体上看,这是一种灵活的方法,它可以通过以小规模的工作方式分割工作并在2-4周的快速迭代中交付功能来满足客户不断变化的复杂需求。
但是,为了获得这种灵活性,开发团队需要实践敏捷编程实践。
Wiki关于敏捷软件开发的描述:
敏捷软件开发是基于迭代和增量开发的一组软件开发方法,其中需求和解决方案通过自组织,跨职能团队之间的协作来发展。它提倡自适应规划,渐进式开发和交付,一种有时间限制的迭代方法,并鼓励对变化做出快速而灵活的响应。它是一个概念框架,可在整个开发周期中促进可预见的交互。
1)不!!!! Scrum是敏捷的,这意味着敏捷开发实践(TDD,结对编程,CI,重构等)对于Scrum项目的各个方面都非常重要。如果您不使用这些方法,那么弄清您的团队的运转率,估算工作量,设置合适的冲刺大小等将变得更加困难。
2)是的,您可以在不遵循敏捷实践的团队中实施Scrum,但我认为这确实限制了团队的潜力。Scrum / Agile之所以如此成功,很大一部分原因是您从敏捷开发实践中获得的性能和质量提升,这些实践是为每个sprint提供前后完整功能的核心。
如果您小组中的其他人试图说服您敏捷开发实践是浪费时间,那么我认为您应该花一些时间来强调为什么Scrum以及整个敏捷总是对这些实践施加压力。他们确实的确有所作为。