技术开发 频道

我的敏捷之路

【IT168 分析评论】

    我第一次接触到“敏捷”(Agile)这个词,是在1997年,距今天正好是10周年,比西式《敏捷宣言》的发表早4年。那一年我有幸参加了企业并行工程集成框架软件的研制项目,当时所了解的“敏捷”还是相当粗浅,听到的一个印象深刻的例子就是波音777的全过程无纸化设计和制造。与“敏捷”这个词一起,当时我还学到了一个词,叫“精益”(Lean)。上世纪90年代正是国际化“敏捷制造”、“精益制造”热兴起的时候。 

    那时,曾经闪过一个念头:像777这样如此复杂、庞大的系统开发,居然完全可以由工程师们用电脑软件,采用数字化方式来设计完成,太了不起了!那么,软件开发本身应不应该敏捷,软件业的“敏捷设计和制造”又该是什么样的呢?我们应该向制造业学习,学习敏捷设计、柔性设计和精益设计的方法。所以,5年后,当我第一次看到国外敏捷软件联盟发布的《敏捷宣言》时,一点都不感到意外,可以说是完全在意料和期待之中。当然,我也感到很好奇,国外的软件大师、专家们究竟是如何做到敏捷的?因此,我倍加努力地去学习这些新方法。 

    事实上,敏捷软件开发方法及其思想,乃至Agile这个词,都来自于一个源头:敏捷制造,或者说制造业的牛人们比我们先想到、做到了Agile!敏捷思想、精益思想并不是我们软件人的专利。有一些2002年以后毕业的大学生、新新人类,他们似乎不能理解,为什么咱程序员的敏捷软件开发会和“丰田汽车”、“精益制造”、“消除浪费”等等联系起来。这里,我给他们的建议是,多了解一些历史和传统,会使自己的视野更开阔,思维更完善。 

    10年前,对于什么是敏捷制造的敏捷过程,它们有哪些特点,我了解不多,但有一点,记得非常深刻,就是整个产品、系统的研发流程、各个阶段、科目(discipline)的工作不是串行的、线性的(类似于传统软件开发的瀑布模型),而是首尾重叠、并行的(concurrent)。所以,当我在1998、1999年开始研究UML和RUP,看到RUP的那张非常经典的软件开发生命周期模型的时候,发现这个模型除去 Rational公司的软件工程术语外,和我当年看到的敏捷制造、并行工程示意图极其相似,我的第一感觉是:RUP不正是软件开发的并行工程吗?这不就是敏捷吗?采用RUP的这种迭代开发方式,可以显著地降低风险,提高开发效率(因为多工种、多科目的并发)。 

    现在回顾一下历史,张恂的敏捷实践,其实是从1997年开始的。在2000年以前,早在国内的CMM热、UML热出现之前,在张恂的带领下,我们的研发团队当时已经做到了软件版本控制和配置管理、变更控制、特性驱动开发、需求管理、架构设计与UML 建模(包括白板建模)、自愿性任务分配(volunteer tasks)、递增演进式开发、频繁性构建、里程碑管理等等。 

    其实张恂的敏捷思维和实践,与一些图书、名著有着不解之缘,可以说直接受到了它们,以及它们背后的那些大师、专家的启发和影响。最早的一本大概就是Michael Cusumano教授的《微软的秘密》(Microsoft Secrets)。从《微软的秘密》中,张恂第一次学到了“软件特性”(Feature)这个词,对软件版本控制与配置管理、里程碑式开发、每日构建与冒烟测试以及微软程序员与测试员1:1 的配比等等“敏捷做法”留下了非常深刻的印象。当时,软件行业还没有引入“敏捷”这个词,只是觉得微软这么做确实是非常高效的。作为一家世界上最伟大的软件企业之一,微软的成功绝非偶然,当然也不是靠忽悠,我们作为后来者当然应该虚心学习。 

    后来的一本,大概就是Steve McConnell的名著《快速软件开发》(Rapid Development)。

0
相关文章