怎么找同城快餐啊_本地同城附近200元_700元三小时不限次数品茶_全国各地可约可空降

您现在的位置是:首页 > 数字化转型 >

[原创]十年反思 探索敏捷开发真正价值

2010-09-21 18:37:00作者:郝峥嵘来源:

摘要“有一种方法,能让软件项目缺陷率降低一半,时间缩短三分之二,投入减少一半?!比绻幸桓鋈硕訡IO这样说,相信没有几个CIO对这种神奇的方法不动心。...

时光荏苒,十年前的2001年,软件开发史上发生了一件里程碑式事件——ThoughtWorks首席科学家Martin Fowler等业界权威了发布了敏捷宣言。十年过去了,作为敏捷开发的实践者,有什么样的反思和总结呢?近日,ThoughtWorks在北京新世纪日航饭店重庆厅举办了 “敏捷十年——软件开发大变革”为主题的新闻发布会,反思了敏捷开发诞生的十年间,软件开发行业发生的翻天覆地的变化,分享了敏捷开发的真正价值所在。

敏捷开发的本质是什么?

“有一种方法,能让软件项目缺陷率降低一半,时间缩短三分之二,投入减少一半。”如果有一个人对CIO这样说,相信没有几个CIO对这种神奇的方法不动心。

这种神奇的软件开发方法,就是敏捷开发。对于敏捷开发与传统软件开发方法,Forrester的一个分析师进行了对比分析,得出了一个报告。报告认为,在使用敏捷开发方法之后,软件开发项目的缺陷率降低了63%,核心的缺陷率降低了79%,整体投入减少了62%,开发时间缩短了69%。

这是不是就是敏捷开发的本质?是不是就是敏捷宣言所希望达到的目的呢?ThoughtWorks 中国区总经理郭晓说:“这个报告发布的数字,非常有震撼力。然而,这是我最痛恨的报告之一。为什么呢?作为一个敏捷开发的实践者,如果有CIO跟我说敏捷的目的是为了提高生产效率,是为了减少缺陷率,那我认为他是没有前途的CIO。尽管从某种角度讲,这是正确的。但这只是敏捷开发的副产品,而不是敏捷的核心,它没有思索软件开发的本质、敏捷开发的本质。”

那么敏捷开发的本质是什么呢?郭晓有着自己的独到理解。

郭晓认为,缺陷率、生产效率和交付时间都是衡量一个软件开发团队或者组织的标准,但这些数字都是结果,能达到这个结果需要的是管理方式、软件开发方法、需要对软件开发的本质做出更深入的思考。比如一个企业,从管理学角度来说,利润是企业要追逐的结果。但实际上,大多数管理学流派都认为,如果仅仅衡量利润的话,企业实际上会走很多弯路,做很多错误的事情。作为一个企业,应该思考的是如何为客户带来更大的价值,怎么更好地让企业持续的发展下去,利润只是结果,是企业创造价值的副产品,不应该是企业直接追逐的目标。因此,CIO、CTO等软件项目负责人,应该思考的是如何用敏捷开发使他做出更有价值的软件,而不仅仅是成本降低或效率提高。

在郭晓看来,创造更有价值的软件,才是敏捷开发的真正价值,才是敏捷宣言诞生的使命。

颠覆瀑布式开发方式

“软件工程的概念,是对软件开发的扭曲。”郭晓在谈及软件开发的本质时如此说。他坦承,这个说法是比较极端的。但他认为,软件行业里很多人,不管是敏捷实践者,还是不采用敏捷开发的,都有一个比较清晰的认识。那就是,软件作为知识产业,跟制造业有着不同的性质。制造业追求的是生产效率,追求的是怎么能提高生产效率,更快地生产出产品。为了提高生产效率,制造业完全可以把流程分解成很多微小的步骤,每个工人只负责其中的一个步骤,这就是所谓的流水线生产,这也是福特对人类做出的巨大贡献之一。这种流水线的生产方式,把人固定在非常小的环境里,重复进行某一个操作,变得非常有效率。

流水线这种制造业生产方式,对软件开发产生了很大的影响。在上个世纪四五十年代,软件开发刚刚出现的时候,程序员非常像牛仔,基本是自己写一段程序,在卡片机上运行一下,然后自己修改,基本没有任何流程控制可言。其结果是,一个软件开发的项目,没有任何人能预测什么时候能做完、质量怎么样、需要多少钱。这导致商务部门非常恼火,为什么不能制定一个计划?针对这种思潮,在60年代末,有人提出软件工程概念,套用传统工业生产方法,把软件开发分为需求分析、设计、编码、测试、维护等几个阶段,这就是所谓的瀑布式软件开发。

然而,流水线式的瀑布式软件开发,并不是一种成功的方式。郭晓认为,实际上这种瀑布式开发方式,完全是对软件开发的一种扭曲。跟工业化大生产的制造业工人相比,软件开发工程师作为知识型劳动者,其工作方式完全不一样。软件开发是一种创造性的、高附加值的、要发挥人主观能动性的一种工作方式,根本不能借用制造业生效效率提升的模式——只需要一个人把某个步骤的效率提高。

软件开发本身也是跟制造业完全不同。制造业劳动者的价值在于生产了多少产品,而软件生产者的价值并不在于多长时间内生产多少代码或者做出多少份软件,软件的价值在于给业务提供了什么价值,在于给他的客户提供了什么价值。软件的价值并不是以软件本身衡量的,而是使用软件的最终客户得到什么价值。

郭晓举了个例子来说明,软件开发的价值并不在于生产了多少软件。某家软件公司很注重生产效率,公司对软件开发工程师一个很重要的考核指标——代码行数。郭晓说:“所有写软件的人都知道,代码行数没有任何意义。我可以重复拷贝,写很多代码,但可能没有任何价值。所以说,并不能套用工业生产的方法,来考核软件开发人员”

二十世纪,人类最掌握的核心技能是量产,而二十一世纪,人类需要掌握的是定制,软件是大量定制的过程,定制出有价值的软件。而敏捷开发的本质在于,帮助开发出更有价值的软件。


(本文不涉密)
责任编辑:

站点信息

  • 运营主体:中国信息化周报
  • 商务合作:赵瑞华 010-88559646
  • 微信公众号:扫描二维码,关注我们