`

敏捷中的极限——极限编程创始人谈论敏捷开发

阅读更多
<!----><!----><!---->

<!----><!----> <!---->极限编程( XP )的创始人和 敏捷软件开发宣言 的执笔者之一, Ken Beck ,一直是敏捷编程的倡导者,他认为敏捷编程可以缩短软件开发项目的开发周期。近日他参加了旧金山举行的 Qcon 大会,并接受了媒体的采访,谈论了敏捷开发的相关问题。
 
记者:你能谈论一下敏捷宣言和极限编程( XP )吗?
 
Ken Beck
:在极限编程( XP )后面的基本设想是,肯定有一些对软件开发有帮助的敏捷行为。我曾经问过这个问题, 假若我们尽最大的热情来进行软件开发,会 发生什么? 这就是 极限( Extreme )一词的由来。结果证明,如果你采取其中的一些做法,例如技术上的协作、测试,并比以前更加努力的推行这些做 法,至少在一般的软件开发项目中你会获得比较好的结果。例如你的错误率会比较低,这意味着你可以更频繁的发布新版本软件。你能够以非常低的成本让项目启动 进入最佳的可部署状态,与其他风格的开发模式相比,你获得了更低的开发成本和更短的开发周期。而且如果你将这种理念融入到后续的设计中,持续的对设计进行 认真的投入,你可以在很长一段时间内以一种非常稳定的速率来继续部署新的功能。
 
这就是敏捷编程如何启动的方式,事实证明为了实现所有上述目标,无论是作为一个团队还是一个个体,你还必须学习许多新的社会技能:诚实、无私、有责任心。 在获得一定的开发速度后,接下来的目标是,如果你想更快的进入下一步,你所要做的是能够更清晰和透明的交流正在进行的开发工作。
 
记者:你提到了推动敏捷编程发展的风格:可靠性、变化的低成本、增加的投资回报率。为什么软件开发市场正在从瀑布风格转向敏捷开发风格呢?或者现在是否只有一小部分开发者正在使用这个方法?
 
Ken Beck
:是的,现在是只有一小部分开发者正在使用敏捷方法,但是我认为这一数字正在非常迅速的增长。我虽然没有明确的数字来证实我的观点,但是如果你关 注一下敏捷开发者大会的增长,你会清晰的感觉到这一点。我认为现在推动敏捷开发的因素是这种开发风格更加贴近真实环境、更透明和更有责任感,如果你的开发 周期比较短你会决定它就是你希望实现的开发方式。对于那些尊崇真实至上的软件开发,存在着巨大的潜在市场。
 
记者:为什么使用者还比较少?
 
Ken Beck
:因为它存在的时间还不是很长。
 
记者:你今天早晨提到这个问题:用户不得不自己来确认你的软件是否可以正常使用。这本来是一件理所当然的事情,但是事实并非如此。为什么会出现这种情况?
 
Ken Beck
:嗯,我认为造成这种现象的原因比较复杂,是技术和社会因素的综合原因导致了在已部署的软件中存在所有的缺陷。一部分原因是人们抱有软件天生就是 不可靠的态度,客户习惯了这种状况。开发者习惯了接受这种观点。测试者也对此习惯了。我们只是觉得它像天气一样,对它无能为力,但这不是一个负责任的态 度,因为实际上开发者有很多关于它的措施可以采取。从技术上来说,可以通过测试驱动开发、自动化集成测试、持续集成等手段;从社会学的角度来讲,端正自己 的态度,不想推出具有缺陷的软件。以及加强开发团队成员之间的交流和关系等。
 
记者:你所熟悉的这些研究也说明了现在有如此众多失败的软件项目的原因。敏捷方法能拯救它们吗?还是只是一个临时的解决办法?
 

Ken Beck
:敏捷方法是失败软件项目的救星吗?我认为许多软件项目依然会失败,问题是除非你非常深入的了解这些软件项目,你不知道会失败的是哪一个。那么敏 捷方法是它的救星吗?不。我认为它依然会失败,因为好的想法并不一定在实践中产生好的结果。敏捷开发可以带给你的一件事情是:让这些项目失败的更快、损失 的更少,因为你可以将时间和精力用于开始做下一件事情。
 
记者:对于极限编程,你提到隔几个星期进行一次迭代( iterations ),而不是六个月到一年,你如何定义这个迭代周期,以及软件发布的周期?
 
Ken Beck
:在极限编程中的基本周期,基本的计划周期是一个星期,这是非常合理的,因为它是根据人们工作的时间来定的。在每个星期结束的时候,这个软件应该比这一星期开始的时候具有更多的功能。
 
极限编程( XP )与其他敏捷方法相比如何?比如 Scrum
 
关于极限编程我比较喜欢的一件事情是其全面性。它从关于与好的软件开发一致的观点的全面讨论开始。介绍了一些基本原则,介绍了获得我们讨论的某种目标的具体的实践。因此我认为极限编程区别于其他方法的特点是它具有这种全面性。
 
记者:你能指出一个使用极限编程完成的比较突出的软件项目吗?
 
Ken Beck
:例如 Carfax
 
记者:我们曾经听过 牛仔编程( cowboy coding 的叫法,敏捷方法和牛仔编程有什么区别?
 
Ken Beck
:我偶尔会体验一下牛仔编程方式,尽管它在我的工作中不占有重要地位。在牛仔编程中,你可以像一个勇士一样去编程,你会对自己的工作感到很满意,因为你认为这个世界上再没有别人可能作出和你的一样的东西。
 
极限编程风格的开发也是需要勇气的;这一点它与牛仔编程类似。但是牛仔编程是完全不透明的,而极限编程则是透明的。牛仔编程是一种个体行为,而极限编程是一种团队行为。不仅仅是程序员一起工作,还包括用户、管理者和测试者。因此我认为它们还是有差异的。
 
在极限编程风格中,早早结束编码是因为可以更快的看到真正的用户反馈,从而继续改进。一个牛仔式的程序员也会做同样的事情。或许你刚刚介绍了一半问题的定 义,它们会说, 好的,我明白了 ,然后就去开始编程。是的,这一点看上去和极限编程团队有些类似,但是两者实际上是不同的,因为牛仔式程序员已经结束了 这次交谈,而 XP 团队则是才刚刚开始这次交谈。
 
记者:牛仔编程有成功的时候吗?
 
Ken Beck
:当然,在短期内它具有巨大的风险和巨大的成本、巨大的隐形成本。我有过使用它的经历,但是它有时候会效果不错。
 
记者:有的软件项目是由分散在不同地区的团队成员在不同的时间来进行开发的,在这种情况下的开发情形如何?敏捷方法可以解决这个问题吗?
 
Ken Beck
:是的,这就是我大多数时间的工作方式,因为我住在南俄勒冈州,出于生计,我的大部分时间仍在编程。因此我一直在进行着跨地区的开发工作。时区是 一个挑战,但是最大的挑战是保持团队成员之间的关系。这是一件非常困难的事情。如果你能做到这一点,如果你的团队之间有良好的关系,那么你就能制定出技术 的详细信息,例如谁什么时候进行了重构,谁加入了什么代码和已经作出的程序。
 
记者:对于 Java .Net ,敏捷方法和极限编程适合吗?
 
Ken Beck
:一个技术平台如果可以让你以较低的成本进行修改,它就更适合敏捷开发。你当然可以在 Java .Net 中使用敏捷方法。
 
记者:在敏捷编程中有什么比较重要的事情吗?
 
Ken Beck
:是的,那就是你在一个技术中需要的东西。在一个技术平台中它真的很有帮助。我的父亲一直在从事敏捷开发的技术方面工作,以汇编语言为微处理器编程。他使用自动化测试、增量设计,他频繁发布小版本,他写绝对可靠的代码。
 
记者:那么像 AJAX Ruby PHP 等脚本语言呢?它们适合敏捷编程吗?
 
Ken Beck
:当然。举个例子说, Ruby 来自于以人为中心的语言。你可以通过一种非常具有可维护性的风格编写 Ruby 代码,在很长时间内可以非常轻松的修改。我担心的是当你使用数据库的时候,这种修改可能会突然变得非常困难。
 
记者:和 Ruby 语言有关吗?
 
Ken Beck
:一般来说是和关系数据库有关。但是敏捷社区正在推出解决这个问题的技术。厂商也正在让数据库接受增量修改。
 
记者: Web 开发如何?它是否与敏捷开发特别适合?还是它只是另一个应用程序领域?
 
关于 Web 开发的最伟大的地方之一是其开发非常省钱。而且如果你一直在做部署的话,简单的把它放到一些服务器上就可以了。传统应用软件的刻录成光盘然后进行分发,部署的成本要大很多。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics