初识Agile

初识Agile是在2007年底。当时还以为是什么新的东西,后来才知道,Agile在IT业以外的领域早已有了广泛的应用,而在IT业(确切的说是软件业)很多前辈早在91年也就开始实践Agile了,只是那时时机尚不成熟.

可想而知,17年前,软件业刚刚兴起,能有瀑布模型(Waterfall)提出来已是大大的规范了生产流程,提高了生产效率。而且,那时模型越是厚重,越容易让人们相信它确是可靠的,所以Agile自然不能成为当时的主流。

而后,软件业逐步走上正轨,RUP这一系统而科学的开发模型便横空出世,尤其是迭代(iterate)等概念和实践的引入更让人耳目一新。Agile中的迭代虽然与RUP暗合,但Agile对迭代速度要都太高,当时的软件业在技术上达不到这样的标准,所以,当时的Agile只能是曲高和寡了,而且看起来好像和XP基本没什么区别.

如今,软件业已经步入成熟阶段。从技术上来讲,成熟的设计模式,便捷的开发语言和工具、build工具,自动的测试手段(Automation)等都让Agile成为可能。最重要的是,市场的成熟,客户的成熟让Agile成为必须。RUP及以前的时代,软件市场上的竞争只是有和没有的竞争,而今天的市场除了继续创新以外,客户满意度的、效率、质量的竞争更成为焦点。于是,在供大于求的市场环境下,以高效、高质满足客户需求为主旨的Agile开发模型终于开始崭露头角。现在看来,Agile时代到来的条件确实应该算成熟了。所以,我们和Agile的相识虽然有点晚,但看来也不算太晚 :-) 初识Agile,最想知道Agile是什么东西。如上所述,Agile是众多开发模型中的一种,就像Waterfall,RUP,XP......, 当然, 它还有更广阔的含义。 这里有一个我公司的给Agile的定义:“Uses continuous stakeholder Feedback to deliver high-quality,consumable code through use cases (user stories) and a series of short,stable,time-Boxed iterations”。可以开到里面有4组关键词,“continuous stakeholder Feedback”,“high-quality,consumable code”,“use cases (user stories) ”,“short,time-Boxed iterations”。第一次看到这个定义,你可能会有点发懵,因为关键词背后的故事太多了,我以后会慢慢的跟大家说明。 其实,不同的人对Agile会有不同的期待和理解。 市场的人往往会认为它是“nothing but business”. 项目管理的人也可以当它是优化了的流程(Process),角色(Role),交付内容(Delivery)的定义. 技术人员就当他是几门新技术,几种新的开发、管理工具也未尝不可。 还有一些比较有趣的理解 最乐观的想法是,Agile是有多少人干多少事的开发模型。 最悲观的想法是,Agile是资本家剥削员工的新工具。 还有些专家的定义很简单:"Show me your stakeholder,show me your automation. If not,you are not on Agile." 其实这些想法都从不同的角度诠释着Agile的特性,说的都很有道理。我对Agile的理解是这样的:“Agile是软件开发发展历史上的一个里程碑(MileStone),他是许多软件开发中最佳实践(Best Practice)的新集合”。就像Waterfall和RUP都是这样的里程碑和最佳实践集合。 这种看法使我不会认为我们抛弃了Waterfall 和 RUP,而是使我相信我们在软件开发水平上又获得了重大的进步。其实,Agile也确实是继承了这些模型的优点,比如,继承并光大了RUP的迭代。同时Agile博采XP中的轻量开发,测试驱动,结对编程,趣味开发等核心思想;容纳Scrum, Crystal,DSDM的项目管理精华;拓展同stakeholder沟通,以及软件应变市场变化的能力;在Automation, Continue Integration,TDD 等技术上也了有大幅提高。 听起来好像有点老调新唱,但我不得不佩服这些把老调归纳、整理、拔高,并应用到实践当中的人们就在这点滴的工作之中升华了软件开发的境界! 综上,我也试图给软件开发中的Agile做一个定义。 Agile是一个软件开发最佳实践的集合。它以准确满足客户需求,快速适应市场变化为核心目标;以敏捷的项目管理流程行动指南;以日趋完善的敏捷新技术为依托;使软件开发人员在自主、平等、愉快的环境下为Stakeholder高质高效的交付开发产品。

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...