译者注: Bob大叔14年后再次谈论极限编程。极限编程经历了14年的风风雨雨后,Bob大叔将会给它怎么样的定义那?
在我手中拿着的一本白皮薄书,在14年前彻底的改变了软件世界。这本书的标题是解析极限编程,副标题是拥抱变化。作者是Kent Beck,出版时间为1999年。
这本书很薄,不到200页。排版很宽,间隔很远。写作风格即自由散漫又平易近人。章节不多,概念简单。
但是其影响却像地震一样,甚至至今震动仍未平息下来。
起始于第53页的章节10,列出了12项实践,引爆了行业内的大辩论。并催生了一场革命,改变了我们编写软件的所有方式。这些实践是:
计划游戏:当今被成为SCRUM。此观点认为软件应该按照任务列表中的优先级循序渐进的开发。
小版本:应当频繁和渐进式地部署软件。
隐喻:该概念最终在Eric Evans编写的《领域驱动设计》一书中明确化。系统结构应当建立在针对问题域的简单的智力模型之上。
简单设计:任何时候都要保证系统尽可能的简单,不用考虑对未来的担心。
测试:程序员和客户一起编写自动化测试来验证产品代码的行为与预期一致。当今我们称之为测试驱动开发(TDD)及验收测试驱动开发(ATDD)。
重构:软件内部结构能够并且应当被持续改进。
结对编程:如果团队成员各自单独工作,那么这称不上一个团队。真正的团队需要经常通过键盘进行合作。这样可以相互充分的分享知识, 正是团队成员的义务。
集体所有权:代码归属于整个团队,而不是某个个体。
每周工作40小时:经常加班的团队是失败的团队。
现场客户:在团队中加入一名真正的客户,用于对需求负责,开发团队能够始终轻易的接触到他。
编码标准:团队应当使用一致的编码风格保证代码整洁,易于沟通。
争议?
很奇怪是不是?是不是并不是所有实践都有争议?但是14年前引起了疯狂争议。确实,整本书出版时,人们争议书中的描述不可能应用于实践,争议所有拥护者是如何的必躬屈膝,不听劝解,甚至是一行代码没写过的傻子……
呃,我不应当让这些过去的感受压倒我。因为,毕竟它们早已消失不再,而我们依然存在。
看看这12项实践,你没有践行其中哪项?我温柔的读者中的大多数可能长期的践行大多数实践。如果说它们已经被普及肯定稍显夸张,但是更不夸张的说,它们现在已经成为主流。更重要的是,还未践行这些实践的团队至少在尝试它们。这些实践已经可以被完美的落地实施,而不再是一个被唾骂的异端。
崛起
过去的14年已经变得陌生。极限编程论战催生出来的敏捷运动,飞速成功,随后被项目经理接受,但是将程序员排斥在外。我们已经看到了确定性的、疯狂的成功,以及相应的(可预见的)无力的认证。我们看到了只采用了计划游戏(例如SCRUM)而忽略其他11个实践的策略失败了。这种策略被Martin Fowler称为无力的Scrum。我们已经经历了咨询师和作者分离的持续的推动,以及看板、精益及每一个新的项目管理方法的竞争。我们已经看到了软件工艺运动的发展,以及敏捷基因被慢慢的退化和稀释。
在所有的炒作和翻腾中,这12项实践依然留存,只是其中一些名字有稍微改变。一周工作40小时变成了可持续增长率。测试变成了TDD。隐喻变成了DDD。小版本变成了持续集成和持续部署。但是尽管名称改变,但是这些实践依然和14年前描述的差不多。
我们也看到极限编程这个名称几乎完全不用了。极少数人现在还使用这个词。一些人仍然使用XP这个缩写,但名称的大部分都已经消失。如果听到一个团队描述他们正在做的是极限编程,甚至正在践行所描述的这12项实践,我会觉得非常罕见。名称变了,但是实践未变。这些实践是持久的。 在翻腾,炒作,争议的咆哮和胡言乱语中,在人类争夺一个又一个位置的风雨中,在人类的贪婪,激情和骄傲的杂乱中,在所有的政治中,这些实践依然留存。
稳定的价值观
我相信这些实践这么持久是因为他们基于稳定的价值观这个坚实的基础。Kent Beck在他的书中第7章第29页描述了这样的价值观:
沟通
简单
反馈
勇气
我可以尝试论证为什么这些价值观是正确的,但是我他们自身已经论证了这些。软件工匠能够拒绝这些价值观中的任何一个吗?软件工匠能够不努力争取在工作中保证这些价值观的展现吗?这些价值观正是软件工艺的价值观。
我可以尝试辩论书中这12项实践拥抱和体现了这些价值观,但是这些实践的持久性足够证明,尽管围绕这些实践的名词和运动已经消散。
成功
极限编程已经成功了!它成功的超越了其支持者的最疯狂的梦想。它的成功是因为从诞生时的争议中幸存下来,在不可避免的倡导者的流失中幸存下来。它成功了是因为它活的比自己的名字更久!
极限编程的成功正像结构化编程的成功。甚至没人再会考虑结构化编程,因为他们一直在使用结构化编程。我们正在尝试达到没人再会考虑极限编程的目标。
这就是成功!一个想法从这场运动诞生一直存活到成为我们日常生活的一部分,这就是成功!
回顾
所以现在,2013年的最后几个星期,我花了些时间回顾1999年。那个时间Kent Beck写了一个突破性的书。这本书改变了一切。回顾并谨记:极限编程。简单的说,请承认它是:
优秀的软件实践的核心
原文出处: http://blog.8thlight.com/uncle-bob/2013/12/10/Thankyou-Kent.html, 作者Uncle Bob Martin。