调查:您的项目为什么不迭代?

上一篇 / 下一篇  2008-03-27 16:14:34

张恂的调查研究发现,软件开发工艺从瀑布模型转向迭代递增式模型,是过去 20 多年来世界软件工程最为重大的一项管理和技术变革之一

不但 21 世纪的敏捷方法普遍采用了迭代方式,就连正宗的 CMM/CMMI 实施典范也采用了迭代式开发模型。当我向一些号称实施了 CMM/CMMI 的朋友们提到,CMM/CMMI 过程也应该采用迭代开发,他们竟然都感到很诧异。

迭代如此重要。可是我发现,国内很多项目团队至今仍然没有真正地理解和掌握迭代开发与管理技术,尤其是真正做到 time-boxing 迭代的团队好像非常少。(我说的很少,只是我的印象,并没有经过科学的统计)

当问到一个软件开发项目,分几步、有哪几个阶段时,我想大概国内 95% 以上的软件专业人士及项目管理人士都会回答:不就是分为需求阶段、概要设计阶段、详细设计阶段、编码阶段、测试阶段 ... 这几个阶段么,简单得很!

这是一种最为典型的瀑布思维(可见教育的力量),或错误。殊不知,早在 10 年之前,为了配合迭代模型,RUP 就已经取消了需求阶段、设计阶段、编码阶段和测试阶段的叫法,取而代之的是更为成熟和先进的里程碑划分:起始阶段、细化阶段、构造阶段和移交阶段,在每一个阶段中都有需求、设计、编码和测试这四项活动。

为什么不迭代?我分析这背后可能有许多原因。


1)很多人还不知迭代为何物,不理解为啥要迭代

这可能与落后的软件工程教育、舆论环境有关。(我说的教育是大教育,不单指学校,还包括媒体、网络社区等大环境)

张恂是一名 70 后,我不记得 2000 年之前有哪一本国内的软件工程教材非常深入地介绍和强调了迭代递增式开发的重要性,有可能是我的记性差,反正是印象远不如瀑布模型深刻。20 年来国内的软件瀑布模型得到广泛加强和应用,我想应该与这种教材和教育的普遍性有关。您还可以去查阅一下,软件开发的国家标准(GB)推荐的是哪种方式(由于大家都热衷与去搞 CMM/CMMI,GB 好像很久没有更新了)。

2000 年之后情况可能有所改善,但这方面的宣传,有关瀑布式向迭代式这一重要生产力方式转变的宣传,还是远远不够的,在人们大脑中的印象远不及铺天盖地的 ISO、CMM、CMMI、软件测试、全面质量管理 ... 之类的笼统概念和词汇深刻。

张恂对于迭代开发方式的了解大概是从 1998 年之前的《微软的秘密》开始的,2000 年之前又从 RUP 中学到了非常经典的迭代模型。

这些年,我一直向大家推荐敏捷大师 Craig Larman 和软件工程权威 Vic Basili 教授早在 2003 年就发表在 IEEE Computer 杂志上的著名文章《迭代与递增式开发简史》,有谁能想到 IID(迭代与递增式开发)竟然有近 40 年的历史?


2)很多人没有意识到:大量的项目失败原因其实与不迭代有关

毋庸讳言:不迭代的项目风险非常之大!

有些团队(比较平庸的)始终都还不能够溯源而上,理清各种因果要素之间的逻辑关系,最终找到导致项目失败的真正原因和根源,因而往往容易一错再错,屡战屡败。


3)很多人把客观条件不具备作为不迭代的借口

“客户不接受迭代方式,因此我们无法迭代。”

这句话当然有一点道理,但其实软件开发团队迭代不迭代,与客户懂不懂迭代关系不大。


4)明知问题出在瀑布,应该转向迭代,却无力而变之

这是一种值得同情的情况。作为研发骨干和中层管理者,不少人意识到了迭代过程的重要性,也尝到了多次失败的滋味,深刻体会到瀑布式或准瀑布、伪瀑布式开发的种种弊端,可是由于公司、企业原有的观念、制度、文化、考核等体系根深蒂固,高层领导又往往缺乏这样的变革意识,导致企业中的有识之士无力去改变现状。

找到问题的真正根源,总比工作在自欺欺人的环境中,整日稀里糊涂地“混”要好。张恂很乐意作为来自外部的第三方力量帮助这些朋友。

...

为什么不迭代?读者朋友,您知道还有其他什么原因吗?

TAG:

厚积薄发 引用 删除 husthxd   /   2008-04-10 22:48:22
原帖由luckybat于2008-03-29 14:11:33发表
国内软件大多是任务重、时间紧,缺乏长远规划,领导一句话就要开始干,质量要求较低,都是些项目,而不是


这个不是不迭代的理由,迭代开发更快的规避风险、给出体现用户价值的产品不是更好?
而且,质量要求较低决不是客户要求和公司高层要求的,否则整个项目的CTO会吓s人,或者干脆就失败算了。
张恂的个人空间 引用 删除 张恂   /   2008-04-02 12:11:23
原帖由pharos于2008-04-01 12:52:19发表
迭代需要很强的管理方法


是的,迭代相当于把原来的一个项目切分成了许多“小项目”,与瀑布方式相比,工作量自然增加了,反馈信息和频率也增多了。

因此,敏捷迭代的项目管理对传统项目经理提出了新的技能和素质要求。而这些投入是值得的。

“强”并不代表很难,很多,很复杂,实际正好相反。应该说迭代项目管理,比方 Scrum 方法,是更符合客观实际的、简单和有效的管理方法。
谷雨霖 引用 删除 pharos   /   2008-04-01 12:52:19
迭代需要很强的管理方法
引用 删除 张恂   /   2008-04-01 10:05:10
原帖由luckybat于2008-03-29 14:11:33发表:

国内软件大多是任务重、时间紧,缺乏长远规划,领导一句话就要开始干,质量要求较低,都是些项目,而不是产品,当然不值得迭代。


对于国内项目的普遍特点,luckybat 概括得很好:

"国内软件大多是任务重、时间紧,缺乏长远规划,领导一句话就要开始干,质量要求较低,"

不错,我得出的印象也大抵如此。看来这方面大家早有共识。

形成这种现象的原因,如我前面的分析,比较复杂。根本原因,我想还是因为我们这个行业、市场的利益相关方,尤其是客户、领导、关键决策者们,的科学观念、软件工程意识差造成的,开发人员作为弱势的一方,对此往往无能为力。

"都是些项目,而不是产品,当然不值得迭代"

认为产品开发需要迭代,而项目开发不需要迭代,这恰恰是一种国内长期以来的传统误解。

实际上,越是任务重,时间紧的项目,越是需要迭代,尤其是 time-boxing 迭代,这样才有可能保时保质完成。

不论产品项目,还是项目“项目”,其实都可以迭代。
引用 删除 luckybat   /   2008-03-29 14:11:33
国内软件大多是任务重、时间紧,缺乏长远规划,领导一句话就要开始干,质量要求较低,都是些项目,而不是产品,当然不值得迭代。
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-05-15  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 1412
  • 日志数: 8
  • 建立时间: 2008-03-27
  • 更新时间: 2008-04-28

RSS订阅

Open Toolbar