1. 关注软件持续交付的软件生产技术。这些技术被统称为“敏捷”。它们的一个关键特性是更容易适应变化,并且使任何以后可能会被废弃的大型设计或架构所需的投资最小化。这些技术极大地减少了产品上市所需要的时间。
2. 管理软件持续生产和发布的软件开发管理过程。精益管理来自于制造业,早期被称为JIT(Just-In-Time)。精益管理关注反馈周期以及利用不同训练等级的工作者来更快速地交付更高质量的产品。一般而言,精益管理过程能够降低50%的制造成本,降低事务性流程(订单处理)90%的成本。
3. 将所有(或者几乎所有)的重复劳动自动化,包括软件产品的生产、测试和集成。把计算机的能力应用到这些事情上,在缩短反馈周期的同时使工作者把精力放在生产性任务上。比如在传统开发过程中,可能一个月会将所有软件模块集成一两次,但是在敏捷项目中,这样的构建过程每天都要做很多次。
敏捷和精益过程所产生的影响是极具震撼性的。人们分析了一系列的敏捷项目,其结果表明,产品上市时间平均减少了69%,成本降低了57%。此外,质量也同样令人印象深刻: 致命缺陷平均减少了80%,普通缺陷减少了60%。这些结果与精益管理过程取代传统方式方法时所取得的进步是一致的。既然结果如此令人振奋,或许大多数人会认为敏捷方法应该早被广泛采用了。事实并非如此,主要原因是支持敏捷的软件开发技术和语言直到近十年(Java、C#)才出现,同时,制造业的JIT式生产过程还没有往其他领域移植,让过程自动化的大规模计算能力还不存在或者因为太昂贵而在应用上受到限制。此外,敏捷和精益过程需要引入完全不同于瀑布模型的组织结构和运作方式:
1. 瀑布模型中的进度是分阶段标记在甘特图上的; 而敏捷中的进度则是通过当前实际开发的软件来度量的。
2. 瀑布模型的管理关注大化每个工作者的最生产力; 精益管理则关注优化整个过程的产出。
3. 在瀑布式开发过程中,发现问题的办法通常是在过程中添加额外的检查或权衡; 而在精益管理中,问题是通过缩短反馈周期或者去除冗余步骤来发现的。
4. 瀑布模型鼓励发展出超级专家(比如,Web UI 架构师); 而精益管理推崇能有效率地完成多种任务的工作者,在不同任务之间来回移动以优化整体产出。
5. 瀑布模型鼓励创建和管理专业化的部门,每个部门负责流程一个阶段的所有工作; 敏捷和精益管理则鼓励创建跨技能领域的工作环境,让所有工作者都可以在其中学习所有必要的技能。
从瀑布模型转移到敏捷和精益管理的影响是重大而深远的。这种改变需要时间,特别是对于那些瀑布式分阶段模型已根深蒂固的组织而言。但这种改变是不可避免的。由于自身令人窒息的组织结构而不采用敏捷和精益管理的印度企业,将会面对世界上那些采用了敏捷和精益管理方法的公司的激烈竞争。
中国特色的软件发展之路
印度软件企业是以瀑布式过程来组织的。它们设立与此模型相适应的工作职责和组织结构,采用与瀑布式过程相一致的形式化过程(CMM5),并通过推销瀑布模型、CMM以及可预测的交付获得商业上的成功。
中国应该追求并效仿印度的软件公司吗,比如把它们的组织结构和做事方式都照搬过来?这里的建议是“不”。印度的软件业建立在外包业务的基础上,而中国软件企业有一个更为广大的内需市场。相比用完全可预测的提前计划来保护自己的既得利益,中国更为重要的应该是为快速发展的中国经济提供适应变化的IT支持,从而创造更大的价值。
正在日益发展壮大的中国软件公司应该拥抱敏捷的开发方法和精益管理的行事方式以及一种不同于以往的软件开发者能力模型。笔者相信,通过采用敏捷与精益,这些公司将有能力更快速地交付低成本、高客户满意度的软件产品,并在市场上凸显出中国公司的与众不同。这也是一条可以同印度软件公司竞争的发展之路。