远离极限编程 (Don’t do XP)

Steve Freeman 写了一篇 blog 拥抱极限编程(Do do XP) 来反驳我的这篇文章。

我开始厌倦了和那些坚持认为Scrum离开了极限编程就不再有价值的人的无休止的论战。 Scrum 很好用 — 但前提是实施者必须从基础上理解它的价值所在和实施原则。 你应用Scrum所处的环境条件决定了你在实施过程中应该采取哪些措施。 比如,在教堂里实施Scrum和在软件开发中实施Scrum有着不同的一套实施策略。而这两种情况下的实施措施又和传统的Scrum有不同之处。

极限编程的拥护者动不动就抱怨在软件工业中Scrum没有提供很好的开发原则。 但就目前极限编程被业界采纳的缓慢进度来看,真正应该受责备应是XP的缺少实践措施的问题,XP应该为这种状况负责。

从八十年代到九十年代,随着开发语言的进步和更适合于软件设计,人们开发和测试的方式发生 了改变。 在广大的面向对象群体中,有些概念正在缓慢的、但广泛的被人们所接受。例如持续反省、限制责任、测试代码优先(TDD)、持续集成、推迟设计、编码规范、 以及结对编程等。 所谓的极限编程 (Kent Beck和他的一些同事所做的) 也就是将所有的这些好的实践方法集中到一起打成一个包,再加上Jeff Sutherland 1993年在Easel公司实践出的Scrum模式。 某种意义上说,这也就有抽象Scrum概念的第一次具体的实现。

这些都很成功。 然而他们的这些实践经验的推广和采纳并没有像他们想象的那样进行。 也许就是因为取了个极限编程的错误名称; 也许是因为主要的、嗓门最大的拥护者非要说这是唯一真理的原因; 也许是因为管理者恐惧这个新出现的异类,暗中作梗反对它; 也许是因为,说到底,XP也不过是另一种开发方法。 我不知道。 我只知道,只有很少的开发团队宣称和承认采用了XP。

然而与此同时,Scrum正在获得强大的发展动力。 并不需要多少华丽的理由,实际情况却是Scrum正在被为数不少的团队接受,正在用它来改进我们软件的开发过程。 反而是XP现在想来分一杯羹。 他们确实很饥饿。

首先,让我把问题说明白。 我十分赞同软件开发团队采用一些已知的实践指导来提高代码质量、生产更高水平的软件作品。 但为什么这么多人不愿意这么做? 我不太喜欢把十几个任务打个包直接丢给团队,也不喜欢事先指定一种开发方法让他们必须遵守。 那样做很显然违反了“people over process”和自我管理原则。 在好的Scrum实施里,团队成员应根据自身情况找到适合自身的实施策略,这样的Scrum应用过程才是与实际相结合、才有意义。 这才是我追求的进步。 有些Scrum团队一直没有找到很满意的开发方法,这说明Scrum实施方式需要改进,而不是去告诉团队成员强制实施。

我有一个问题思考:如果XP从来没诞生过,有多少团队愿意完全接受所有XP所推荐的方法? 我相信会有很多。 我相信这些宝贵的开发经验会自然而然的被程序员和团队们采用,对我来说,关心的是经验本身,而不是他们出现的形式。 我从来没有“done XP“,但我显然可以写出高质量的软件。 XP的错误就在于坚持要求全盘接受。 这并不是XP的创始人的初衷,可现在却搞成这样。 很可能就是XP导致了这些好的实践经验不被人接受。 很讽刺,不是吗?

另一个大问题是,XP论述写于12年之前,于此至今已有40多种新的语言诞生。 XP倡导者在向人们推荐12年前的、现在可能过时的经验 — 12年相当于整个软件工业年龄的四分之一。 惊人吧。 让人们去发现适合自己的开发方法,他们将会总结出最有效的开发经验,这远不是几个脑瓜好用的人在上个世纪末能创造的。

我强烈要求Scrum倡导者停止与XP的争吵,我们讨论的应该是软件艺术。 这才是我们在这个领域里急切需要的最终目标。 幸运的是,现在有一个有着自己的manifesto的软件艺术运动正在逐步为人们所关注。 最终,我们可以通过好的软件艺术实践运动重新改革我们这个领域,而不是使用那些修修补补的策略。

开发者们:Don’t do XP。 我们要实现一个通常意义上的指导框架,解决多年来的困扰,构建以人为本的核心基础。让我们重新为艺术而工作。或者从此离开这个行业。

时间: 2024-08-30 09:43:31

远离极限编程 (Don’t do XP)的相关文章

Java软件架构师所要需的东西

问题描述 作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们.一.Java编程入门类对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是"囫囵吞枣不求甚解",先对Java熟悉起来再说.用很短的时间快速过一遍Java语法,连懵带猜多写写代码,要&q

Java自学书籍推荐 程序员到架构师必看的书_java

作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们.  一.Java编程入门类对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是"囫囵吞枣不求甚解",先对Java熟悉起来再说.用很短的时间快速过一遍Java语法,连懵带猜多写写代码,要"

java 如何学习技术才能更上层!!

问题描述 学习java 一年多了,工作也快半年了,总觉着自己学的慢.java 都是自己学的.怎样学技术才能更强一点.大家给点建议!!学过ssh .没有用到真正的项目上.现在用oracle 能写一般的sql 语句.现在正在做项目,用的是公司自己的框架.估计只会用这一次.时间充足,不知道譔学什么,怎样才能提高技术.还请有经验人指教!问题补充怎么没人指点一下啊. 问题补充:这么多好心人啊..都知道分譔给谁了.. 解决方案 那些推荐的书都很不错,我自己也有过这样的感受,Java的领域太宽广,任何一个方向

java架构师要求

问题描述 本人参与工作半年不到,将来想往java架构师方向发展,请问各位大虾们,达到java架构师水准应具备什么样的知识结构? 解决方案 1. 编程功底不可以少.2. 项目经历不可以少.3. 知识积累不可以少.4. 缜密思维不可以少.5. 有创造性不可以少.6. 设计模式不可以少.首先,你可以先去看看 国家架构师考试指南,看需要哪些技能,然后一点点的练.其次,通过你以后的程序之路,慢慢的体会,总结经验.最后,要多想多做,或许别人花五年,你可以花3年.补充,在你每做一个东西的时候多去想一想,用什么

《重构:改善既有代码的设计》—第2章2.3节何时重构

2.3 何时重构当我谈论重构,常常有人问我应该怎样安排重构时间表.我们是不是应该每两个月就专门安排两个星期来进行重构呢? 几乎任何情况下我都反对专门拨出时间进行重构.在我看来,重构本来就不是一件应该特别拨出时间做的事情,重构应该随时随地进行.你不应该为重构而重构,你之所以重构,是因为你想做别的什么事,而重构可以帮助你把那些事做好. 三次法则Don Roberts给了我一条准则:第一次做某件事时只管去做:第二次做类似的事会产生反感,但无论如何还是可以去做:第三次再做类似的事,你就应该重构. 事不过

什么是Extreme Programming(极限编程,简称XP)

编程                                                什么是Extreme Programming(极限编程,简称XP)                                                       来源:chinaxp  http://www.xpchina.org     waltson     Extreme Programming(极限编程,简称XP)是由Kent Beck在1996年提出的.Kent Beck在

什么是xp极限编程

      历史:ExtremeProgramming(极限编程,简称XP)是由KentBeck在1996年提出的.KentBeck在九十年代初期与WardCunningham共事时,就一直共同探索着新的软件开发方法,希望能使软件开发更加简单而有效.Kent仔细地观察和分析了各种简化软件开发的前提条件.可能行以及面临的困难.1996年三月,Kent终于在为DaimlerChrysler所做的一个项目中引入了新的软件开发观念--XP.       特点:XP是一个轻量级的.灵巧的软件开发方法:同时

敏捷建模和极限编程(XP)

Agile Modeling and eXtreme Programming (XP) 敏捷建模和极限编程(XP) Agile Modeling (AM) is a practices-based software process whose scope is to describe how to model and document in an effective and agile manner.  On the AM home page I state that one of the go

极限编程(ExtremeProgramming,简称XP)

极限编程 求助编辑百科名片:http://baike.baidu.com/view/259207.htm 极限编程(ExtremeProgramming,简称XP)是由KentBeck在1996年提出的.KentBeck在九十年代初期与WardCunningham共事时,就一直共同探索着新的软件开发方法,希望能使软件开发更加简单而有效.Kent仔细地观察和分析了各种简化软件开发的前提条件.可能性以及面临的困难.1996年三月,Kent终于在为DaimlerChrysler所做的一个项目中引入了新