极限编程和Scrum都是基于敏捷宣言和12原则所创立的软件开发流程框架,其背后的哲学思想都是相同的,XP和Scrum分别按照这个思想设计了流程,因此有很多相似的地方,实属“同父同母的亲兄弟”。

但是再相似的兄弟也会有细节上的区别。

网上关于XP和Scrum的区别,大多来自于一篇Differences Between Scrum and Extreme Programming的文章,但是似乎对这篇文章的质疑也有不少。本文中博主只发表一些自己的看法。

  1. XP是由多种具体实践组合而成的实践集合,而Scrum并没有类似可选内容,是一个相对独立框架。打个不太恰当的比方,XP就像python中的django,各种组件配套齐全,自由选用,而Scrum就像flask,讲究小而精简。当然XP实践库中的内容,比如结对编程和10分钟构建,也可以应用在Scrum中。

  2. XP强调了持续集成,Scrum没有明确要求。XP中,持续集成背后还意味着测试驱动和自动化构建,需要足够的基础设施支持。Scrum理论并没有这样的要求,当然实际工作中应该还是会做的。

  3. XP原则上没有规定团队角色,而Scrum明确了团队角色。在极限编程中,并没有强制规定角色,而只是列出了常见的角色,包括Client、Developer、Tracker和Trainer。相对的,在Scrum中明确需要存在的角色有Product Owner、Developer和Scrum Master。从职责角度来看,大致可以这样对应:Client对应Product Owner,Tracker和Trainer对应Scrum Master,Developer对应Developer。

  4. XP中规定了Quarterly Cycle和Weekly Cycle,而Scrum中的时间周期只有Sprint。从时间跨度上来说,一个Sprint大约2到4周,介于Weekly Cycle和Quarterly Cycle之间。

  5. XP要求全部团队成员要工作在同一个开放的空间中,而Scrum并没有这种限制。虽然XP和Scrum都强调沟通交流,但XP就非常明确地指出团队要在同一个空间中工作,而Scrum并没有。

总体来说,XP是一个更完整、更重量级的开发流程框架,它对开发中多种细节都做了规定。相反,Scrum的强制性规定就相对较少。相对来说,Scrum是一个更符合自组织特性的框架,以尽量少的规则来组织整个团队的开发。然而,Scrum中没有明确指出的规则和实践,在实际工作中都是需要做的(比如自动构建、代码规范和重构),这对开发人员自身的素质要求就会更高。而XP这种充满“学院派”气质框架,则更加严谨与明确,适合大型项目的管理。