极限编程核心实践

迭代式开发给软件的开发过程注入了敏捷性。极限编程把软件开发过程分解成若干个短迭代,每个迭代长度为1到3周。为期1周的迭代似乎太短,但我们认为这恰好是最佳的选择,因为它能更好地加速开发与反馈的周期。不过,很多团队的能力使他们暂时无法驾驭为期1周的迭代,因此为期2周的迭代似乎是行业中更流行的做法。在一个项目的周期内,应该保持迭代长度不变。迭代周期就像项目的心跳。固定长度的迭代,使进度的度量和后续的计划都变得简单而可靠。

为了使迭代顺利进行,极限编程团队需要遵循一些核心实践。这些实践使迭代稳步有序开展,而不至陷入混乱、救火、赶工和加班。

  • 项目每天的工作从每日站会开始,团队成员在站会上对齐进度、依赖和困难。
  • 开发团队集体拥有代码,充分共享知识,避免单点依赖。
  • 开发人员两两结对编程,这种方式不仅能提高质量,而且并不会损害开发效率。
  • 在编写代码之前,首先编写测试,用测试准确框定需求范围,帮助软件设计逐步演进生长。
  • 代码有充分的单元测试覆盖,为软件提供持续有效的质量保障网。
  • 对出现“坏味道”的代码进行无情的重构,不容忍低质量的代码累积。
  • 一天多次对新修改的代码进行持续集成,保证所有人随时工作在最新版本上。
  • 促进团队内的人员流动,消除孤岛和壁垒。
  • 开发团队重视设计的简单性,保证代码可测试、可理解、可浏览、可解读。
  • 面向对象设计有助于分离关注点和小步前进。极限编程团队通常不使用重量级的、精美的建模工具,他们用类似CRC卡等简单工具进行对象设计。

这些实践并非不可改变的金科玉律,不过团队应该首先充分理解并严格遵循这些实践,形成稳定的节奏,然后再结合自身情况加以改进。