极限编程,一次反思

简介:

screenshot

本文的作者Robert C. Martin,也就是大名大名鼎鼎的“uncle bob”

在我手里的是一本很薄的白皮书,14年前,它颠覆了整个软件世界。这本薄书就是:《Extreme Programming Explained》,副标题是:拥抱变化。作者是Kent Beck,出版于1999年。

这本书不到200页,很小。字体印刷的很大,而且留白很多。撰写风格很随意,通俗易懂。章节很短。里面提出的概念很简单。

这本书的思想犹如一次地震,而且震撼至今仍无减弱迹象。

第十章,位于53页,陈列了12条软件开发实践指导,它让软件业陷入了大论战;并催生了一次革命,由此改变了我们软件开发过程的各个方面。这些实践方法是:

计划游戏:如今的SCRUM敏捷方法论的原型。核心概念是拆分软件开发任务,排优先级,迭代式增量开发。

小规模发布:主要思想是软件发布/部署应该提高频度,增量发布/部署。

简单设计:是指让系统保持越简单越好——无论将来的变化会让我们如何担忧。

测试:是指程序员,甚至客户,应该编写自动化测试程序,来验证产品代码是否是按设计的方式运行。如今我们把它称作测试驱动开发(TDD)和确认测试驱动开发(ATDD)。

重构:是指软件的内部结构可以、并且应该做持续的改进。

结队编程:是说团队成员如果各自独立工作就不能称之为团队。团队成员必须有规律的合作——在键盘上。这样,他们能充分分享团队其他成员应该知道的知识。

集体所有制:是指代码归团队共有,不属于个人。

每周工作40小时:是说经常加班的团队是失败的团队。

现场客户:是指来自业务方、负责需求的人,必须有准备的全程和开发团队保持畅通交流。

编码标准:是指开发团队要采用一种固定的代码风格,用来提高代码整洁和方便交流。

引起争议?

很奇怪,不是吗?这些看起来似乎没有任何争议呀。但在14年前,这些思想普遍受人质疑。事实上,它们是如此的受人反对,以至于有人专门出版书籍来反驳这些实践方法如何不可行,并斥责这些倡导者为乌托邦、骗钱者、从未写过一行代码的蠢货…..

哦,抱歉,我不应该让这些过去的事情控制我的情绪….毕竟,他们都消失了,而我仍在这里。

看 一下这12条实践指导,哪一个你没用过?你们大部分人,我亲爱的读者,很可能每天都在实践着大部分这些原则。夸张的说,它们已经无处不在,保守的说,它们 现在已经是主流。越来越多的没有采用这些实践方法的团队正在试图拥抱它们。这些实践方法成为了一种目标,一种愿望,而不是当初被人谩骂的异教。

风云变幻

这 14年来事情发展的有些意外。敏捷开发运动——在极限编程大讨论中诞生的运动——迅速爆红,随后被一些什么身份都有、唯独不是程序员的项目经理们视为圣 经。我们看到了这场运动的诞生,广泛接受,以及可以预见到的理想与现实的落差。我们看到了人们采纳“计划游戏(planning game)”方法(例如SCRUM),但却忽略了其它11个实践方法;于是我们看到了实施中的失败——这被Martin Fowler称之为气虚的Scrum。由于理论和实践的分裂,我们爆发了各种的口水仗,导致Kanban,Lean,以及其它新名词相互竞争。我们看到了软件工艺运动的成长,也看到了敏捷思想的淡化和蜕变腐蚀。

但是,尽管有人在炒作,有人失望的离去,这12条软件开发实践指导却从未离去。有些名称上有了小改动。每周工作40小时变成了可持续性比率(Sustainable Rate)。测试变成了测试驱动开发(TDD)。比喻(Metaphor)变成了DDD。小规模发布编程了持续集成和持续部署。尽管有这些变化,这些实践方法仍然基本保留着它们14年前第一次被写出来时的主旨。

我们也看见了极限编程这个词慢慢完全淡出了人们的视野,不再被人使用。现在只有为数不多的人知道这个术语。有一些人还在用它的简称XP;但对大多数人来说,这个词已经蒸发殆尽了。我已经听不到有团队把他们的编程方法描述为极限编程——即使他们是完整按照这12种指导实践的。名称变了,实践方法没变。这些实践方法论永存。

争议,炒作,恐吓,大话,唱衰。这种乱象一遍又一遍重演。混杂着人们的贪婪,热情和骄傲。不管怎样,这些实践方法论永存。

坚实的价值基础

我是这些实践方法论的信徒,因为我知道它们有着坚实的价值基础做支撑。Kent Beck在他的书里的29页第七章里把这些价值描述为:

交流

简化

反馈

鼓励

我想去解释为什么我们的软件开发需要这些;但我想它们已经不言自明了。没有哪个软件行业的人会拒绝其中的任何一条。没人哪个软件人不在努力将这些价值体现在他们的工作中。它们是软件开发艺术的核心价值。

成功

极限编程是成功的!它比那些最具幻想精神的拥护者的想象里的还要成功。因为它经受住了考验。因为它甚至比它自己的名字活的更长久。

极限编程的成功类似于结构化编程的成功。没有人还会去想结构化编程——他们从来都是使用这种编程方式。没有人再去想极限编程,我们一直都在这样实践着。

这才叫成功!真正的成功是一种身形不在,但它的精神已经融入到我们每个人的日常生活中的成功。

回顾

今天,让我们抽出一点时间回顾一下1999年。那一年,Kent Beck写出了一本旷世之作。一本改变一切的著作。请记住:极限编程,并且要知道,它正是我们如今的人平常认为的“优秀软件开发实践方法”的核心。

[英文原文:Extreme Programming, a Reflection ]

文章转载自 开源中国社区 [http://www.oschina.net]

相关文章
|
3月前
|
设计模式 安全 C语言
软件工程师,全面思考问题很重要
软件工程师,全面思考问题很重要
51 9
|
3月前
|
项目管理
技术探索的心得与反思
在技术的海洋中,每一次深入都如同揭开未知领域的神秘面纱。本文将分享一些个人在技术领域探索中的感悟和反思。
|
6月前
|
Devops 测试技术 持续交付
软件测试中的敏捷实践:从理论到应用
在软件开发领域,敏捷方法论的兴起已经彻底改变了项目的开发和测试流程。本文将深入探讨如何在软件测试中实施敏捷实践,以及这些实践如何提高产品质量和团队效率。通过引用最新的行业报告、科学研究和统计数据,文章旨在为读者提供一套清晰的指导框架,帮助他们在软件测试过程中实现敏捷性。
93 0
|
测试技术 API 微服务
《软件测试52讲》读书笔记 —— 互联网产品的测试策略
《软件测试52讲》读书笔记 —— 互联网产品的测试策略
267 0
《软件测试52讲》读书笔记 —— 互联网产品的测试策略
|
前端开发 JavaScript API
最近一个项目的反思
 大约在三个月前,也写过一篇这样的文章,最近也在忙一个项目,最近几天有时间,所以就来这里发发牢骚。   这次要开发两个产品,为期两个月,包括两个APP和三个后台。与上次开发的项目相比,规模要大很多,功能点也要多一些,难度也要大一些。
最近一个项目的反思
反思
最近写的文字很多。但我读了后发现很多是在写自己。 一个不成功的自己有什么好写的? 以后每个月无营养的杂记不得超过五分之一。 也就是说,五篇带代码实践的文章之后才能写一篇杂记。 那些不成功的过去,就过去吧,不要在恬不知耻的回忆来回忆去。
956 0
|
程序员 C语言 C++
C++的反思[转]
最近两年 C++又有很多人出来追捧,并且追捧者充满了各种优越感,似乎不写 C++你就一辈子是低端程序员了,面对这种现象,要不要出来适时的黑一下 C++呢?呵呵呵。 咱们要有点娱乐精神,关于 C++的笑话数都数不清: 笑话:C++是一门不吉祥的语言,据说波音公司之前用ADA为飞机硬件编程,一直用的好好的,后来招聘了一伙大学生,学生们说我靠还在用这么落后的语言,然后换成C++重构后飞机就坠毁了。
1508 0
反思,惶恐
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396721 离开现在的职位,还有更好的公司要你吗。
860 0

相关课程

更多