(译)Scrum和XP的不同(Differences Between Scrum and Extreme Programming)
作者Mike Cohn是Mountain Goat Software的创始人,也是Agile Estimating and Planning和User Stories Applied for Agile Software Development的作者。
Scrum和XP是一致的。事实上,如果你走进一个团队,它们正在采用其中一个,你将很难确定这是一个Scrum团队还是一个XP团队。这两者之间有细微的不同,但是确非常重要。我认为在Scrum和XP之间有如下四点主要不同:
Scrum团队通常工作在两周或者一个月的迭代(叫作sprint)中。XP团队工作在通常是一到两周的迭代中。
Scrum团队不允许在sprint迭代中进行改变。一旦sprint迭代计划会议确定了要在这个迭代中交付哪些backlog里中的项目,那么直到这个sprint迭代结束,这些项目是不能改变的。XP团队则更加灵活,只要团队还没有开始开发某个feature,那么相同大小的其他feature就可以替换还没有开始的feature。
XP团队按照严格的优先级顺序开发。待开发的feature由客户(Scrum中的Product Owner)来决定,团队被要求按照这个顺序来工作。与此对应的是,在Scrum团队中,Scrum的Product Owner也定义feature的优先级,但是团队可以决定它们的开发顺序。我还没见过一个Scrum团队不去选择最高的优先级。但是,其实这是有可能的,比如Scrum团队会选择第二高优先级的feature,因为在某个点最高优先级的feature可能不是最适合的,也许是因为某个可以开发最高优先级feature的人当前抽不开身。又或者先开发较低优先级的feature更加合理(例如使用backlog中的#10代替#6)因为团队将要开发的代码中,#10可能已经被实现了。
Scrum没有描述任何的工程实践,而XP却有。我喜欢XP的工程实践,特别是像测试驱动开发(TDD),专注于自动化测试,结对编程,简单设计,重构等等。不过我觉得这么对你的团队说是不对的“你们是自组织的,我们相信你们,但是你必须做这些工程实践”。这会使团队感到迷惑。我喜欢XP的实践,但是不会强制推行它们。我想让团队自己去发现它们的价值。
这就是Scrum和XP之间非常细微的不同。然而,它们却对团队有深远的影响。我对于团队的建议是“由Scrum开始,然后发明你自己的XP版本”。XP的实践非常棒,如果团队自己认识到这一点,而不是被强制要求,那么将是最好的结果。我通常通过问这样的问题来帮助团队提高,"如果我们采用了测试驱动开发,那这个bug是否还会发生?",“如果我们结对编程,这个错误是否还会出现?”。我发现真正的XP是一个远处的小目标。如果团队可以瞄准它,并正中靶心,那非常好。如果不是,那么可能是由于他们的行为并不规范(例如,在没有自动化测试或者TDD的情况下进行重构)。Scrum是一个目标,它通过附加的焦点和时间的迭代,带来巨大的改进。它是一个很好的起点,然后加入XP实践。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。