极限编程 (XP) 和 Scrum 的区别

本贴最后更新于 1798 天前,其中的信息可能已经时移世异

极限编程和 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 这种充满“学院派”气质框架,则更加严谨与明确,适合大型项目的管理。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Ahian

    昨天去 Thoughtworks 体验了一下午 XP,收获很大

  • 其他回帖
  • someone
    作者

    羡慕羡慕,Thoughtworks 是我理想中的公司

推荐标签 标签

  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 1 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 764 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 62 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 624 关注
  • 音乐

    你听到信仰的声音了么?

    60 引用 • 511 回帖 • 1 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    25 引用 • 191 回帖 • 16 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 588 回帖
  • 自由行
    10 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 709 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 2 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 641 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖 • 2 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 72 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 304 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    55 引用 • 85 回帖 • 1 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1705 回帖
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 67 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 21 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    209 引用 • 358 回帖 • 2 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 483 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖
  • V2Ray
    1 引用 • 15 回帖 • 1 关注
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 9 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    53 引用 • 40 回帖 • 1 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    86 引用 • 122 回帖 • 625 关注