谷歌开源内部代码评审规范
2019年10月6日
敏捷合同入门(上)
2019年10月23日

极限编程是最流行的敏捷方法之一。第一个极限编程的项目发生在1996年。迄今为止的二十多年中,极限编程被全球众多不同行业、不同规模的企业采用,并成功发挥出显著的效果。

极限编程之所以能在采用它的企业中获得成功,是因为它高度强调客户满意。这种方法并不尝试一次交付所有可能在遥远的将来用到的功能,而是在真正需要时交付最有价值的软件。极限编程使软件开发者满怀信心地响应客户的需求变化,哪怕在交付项目的后期也同样如此。

极限编程强调团队协作。在一支高度协同的团队中,管理者、客户、开发者都是平等的合作伙伴。极限编程营造了简单而有效的协作环境,使团队最大程度地发挥其生产力。团队自发地组织起来,尽可能高效地解决问题。

极限编程从五个方面提升软件项目:沟通、简单、反馈、尊重、勇气。

  • 实践极限编程的程序员持续不断地与客户和其他程序员沟通
  • 他们保持设计简单整洁。
  • 他们从项目第一天起就对软件做测试,从测试中获得反馈
  • 他们尽可能早把系统交付给客户使用,尊重客户提出修改意见的权利。
  • 他们小步前进,每一次小的成功都会增进团队成员彼此之间的尊重与信任。
  • 在前面这些的基础上,极限编程的实践者们方有勇气积极响应不断变化的需求和技术。

极限编程最令人惊讶的一点是,它的规则非常简单。采用极限编程很像在玩拼图游戏,你会看到很多小片的拼图,每一个小片单独看起来没有意义,组合起来就会看见一幅完整的图景。这些规则乍一看可能显得幼稚笨拙,但在它们背后有着坚实的价值观和原则支撑。

极限编程的规则为团队成员设置了彼此之间的期望,但规则本身不是团队最终追求的目标。你会发现,这些规则构建起了一个良好的工作氛围,鼓励团队协作和充分赋权。在这样的氛围下,卓有成效的团队协作会逐渐成型,此后即便规则随着公司的需求而调整,高效的团队协作也会延续。

计划

  • 编写用户故事。
  • 根据发布计划制定发布时间表。
  • 进行频繁的小规模发布。
  • 将项目分解成迭代。
  • 用迭代计划驱动每个迭代。

管理

  • 为团队提供专注开放型办公空间。
  • 可持续的节奏。
  • 以站会开始每一天。
  • 团队开发速度可度量。
  • 让团队坐在一起。
  • 调整有缺陷的规则。

设计

  • 简单原则。
  • 设定一个系统隐喻。
  • 在设计交流中使用CRC卡。
  • 使用Spike方法降低风险。
  • 不要过度设计或过早添加不必要的功能。
  • 尽可能地重构代码。

编程

  • 客户紧密参与团队协作。
  • 遵循编码规范。
  • 优先编写测试。
  • 通过结对编程构建生产代码。
  • 一次仅限一对程序员集成代码。
  • 持续集成。
  • 选一台机器专用于代码集成。
  • 代码集体所有。

测试

  • 所有代码都必须有单元测试。
  • 发布前必须跑通所有单元测试。
  • 发现一个Bug要增加一个单元测试。
  • 经常性进行验收测试并公布测试结果。

极限编程价值观

极限编程(XP)建立于一些基础的价值观之上。我们前面探讨的规则,即是最大化体现这些价值观的自然延展和结果。XP不是一套死板的规则集,而是一种与个人价值和企业价值相协调的工作方式。基于以下所列的XP价值观,极限编程的实践者可以补充自己相应的规则,以适应实际工作中的变化。

简单

只做必须做的事,过犹不及。以此最大化投资价值。以简单、小步骤来达成目标并排除故障。创造引以自傲的东西,并以合理的成本长期维护它的发展。

交流

每个人都是团队的一部分,团队成员每天都要有面对面交流的机会。无论需求分析还是编码,大家都可以一起工作。用最好的方案解决问题。

反馈

通过发布可工作的软件来认真兑现每一次迭代承诺。尽早、尽可能频繁地演示软件,然后认真倾听、做出相应的改变。调整开发流程以适应项目,而不是僵化地遵从既定流程。

尊重

每个人在团队中都是有价值的存在,理应得到尊重、并给予他人尊重。即便是简单的热情,也是一种贡献。开发人员要尊重客户的专业性(反之亦然),管理者要尊重开发人员在工作中的权利和义务。

勇气

真实反应项目进展和状态。不要为失败找借口,因为我们的目标是成功。无需恐惧,因为我们是一起战斗。勇于拥抱变化。


接下来,你可以继续深入了解极限编程:

评论关闭了。