作者:Game_over 来源:博客园 酷勤网收集 2008-02-28
从毕业到现在,已经两年半了,大大小小的项目也做了八九个了,最大的一个项目规模是大约170人月,耗时半年,最小的项目也就是三四个人,做了一个月。幸运的是,从来还没有做过失败的项目,于是,我就想当然地认为:怎么可能会有失败的项目呢?
究竟怎么样的项目才叫失败呢?项目组成员的辛苦加班,算不算项目失败的一种呢?
我这里暂且认为无法交付成果物,或者是交付的成果物无法满足客户需求。
我曾经旁观(没有参与其中)过一个项目,这个项目可以说是完全失败了。先说一下最终的结果:
代码量:客户端、服务器端、数据库PL/SQL等,总计大约是120W行。
周期:开发大概是4个月,测试三个月。
结果:单体测试、结合测试合计发现Bug数近7000个。
这个项目由于到结合测试后期,发现Bug在不断的增多,而且每修改一个Bug,会引入至少一个的另外的Bug,于是项目宣告失败,项目组成员解散。
我当初不在这个项目组里面,不了解为什么会有这样的结果。
很优秀的程序员,天天加班,那么辛苦,换来的却是失败的结局,搞得从上到下没有人愿意再谈论那个项目。
那已经是很久之前的项目了,前不久跟一个朋友聊天的时候说起,然后那个朋友(曾经参与过)就对我发牢骚,总结起来,也不过是以下几点:
1)项目周期紧,每个过程的时间太短。上面说过,开发过程四个月,需求分析、基本设计、详细设计、编码,每个过程大概是不到一个月,而最终的代码量是12W行,产出/时间,这个比值太大,这样就有很大的风险。时间紧,很多的工作都不够充分,比如WT、CodeReview、项目审查等,这些工作没有做,造成这个项目的质量得不到保证。
2)需求分析阶段,没有充分理解业务,造成了业务逻辑的人为复杂化。那个朋友负责一个画面的一部分,为什么是一部分呢?整个画面100多个控件,关联到40多个表,完成画面的雏形代码量是15K,这个只是画面部分,这个画面整个技能的代码量在30K左右,这样的代码量足够完成一个小系统了。如果在需求分析的时候,把业务逻辑理清,就可以把大画面分割为多个小画面,这样不管从设计还是编码测试的角度来说,都会在很大程度上降低风险。
3)项目管理不善。整个项目在每个阶段开始的时候,没有给出相应的CheckList,于是每个成员写出来的成果物风格不一,中途有项目组成员的离职,给别人理解这部分成果物带来了很大的困难。详细设计的文档风格不统一,跟别的模块接口没有商榷,代码风格极差,测试力度不够,一个很简单的例子,那个项目组中竟然有类似的声明:ArrayList list01。前面说过,由于周期短,CodeReview没有进行,造成了代码质量差,直接影响了测试Bug的修改。而这些事情项目负责人没有很好的控制,本来就暗藏危机的项目更加雪上加霜。
在测试的时候,以上的危机全部爆发了,Bug越测越多,数量与日俱增,最后到了无法维护的地步,代码没有人敢去修改,更没有人敢提出在设计上修改。于是,项目无法交付,宣告失败。
在做类似项目的时候,有什么办法可以避免上述情况吗???
评论:
代码量当然是通过工具数的了,每个项目都要做这种统计吧。
推荐一个:SourceCounter。
--------------------------------------------------------
要重写的话,这就说明其设计出问题。
个人认为,如果这样子的话,还不如重新设计更合理。如果继续这样,那么,日后的维护和修改也会出现上述同样的问题!
随风逝去: --引用--------------------------------------------------
--------------------------------------------------------
要重写的话,这就说明其设计出问题。
个人认为,如果这样子的话,还不如重新设计更合理。如果继续这样,那么,日后的维护和修改也会出现上述同样的问题!
--------------------------------------------------------
#5楼 2007-12-01 20:13 | 怪怪
怪怪: 4个月120W行? 不失败不可能的...
--------------------------------------------------------
应用在现在的行业里太适合不过了
我头两年都不到两个完整项目。
以前有个做主管的朋友问以前项目失败率是多少?70%
代码没有人敢去修改
--------------------------
对这句话深有感触,道最后是看了就头大。
老刀把子: 两年半就做了7,8个项目,真多。
我头两年都不到两个完整项目。
--------------------------------------------------------
我算算也差不多哦.第一个是一年都点的时间,标地过了两千万.目前这个也过了千万,还没完全结题.还是楼主强.
我也是跟其中一个朋友聊天才知道的,然后我们就分析了一下,然后拿出来大家讨论一下,这种情况任何人都有可能遇到的。大项目的管理是相当的困难的,更何况文中那个先天不足的项目。
一天一万行..., 如果10个程序程序员, 每个人都只能埋头写代码了, 如果100个程序员.., 那让项目走上正轨所要求的时间更接近于0了...
怪怪: @Game_over
如果100个程序员.., 那让项目走上正轨所要求的时间更接近于0了...
业界比较厉害的公司 ,每人每天人均代码量约为10-20行左右
如果让这些公司作,估计你们项目四个月完成的话需要600个人干四个月了
只能说你们公司的人太“牛“了
况且要是超能力完成,一天尚可一星期勉强,几个月就……
#27楼 2007-12-02 21:53 | 游客 [未注册用户]
不过你1200K的代码量让人生畏
所以,客户方,或者说发包方,对项目的把握能力一定要非常强,否则发包方的一点问题,可能给接包方造成很大的麻烦。
1。找专业的咨询公司检查设计。
2。购买现成的类似框架产品进行2次开发。
3。自己公司的项目负责人是专家。
以上3种方法都可以从项目开始就走对方向。
我也是毕业至今两年半,经历过的项目都是中小项目,有的项目甚至就我一个人搞定(需求设计编码测试,文档也有)。失败的项目居然为0。
不过印象的一个项目,完成了80%左右,停了2个月,之后再继续,这个比较头痛,还好挺过来了,期间包括陪客户在宾馆封闭3天3夜的验收过程。。。
之前的公司最后一个项目,完成了2/3,我辞职了,接手我工作的那个同事以前是好朋友,互相之间比较了解,后来问他头疼不,他说:“别提了,那个项目几乎重新来过,因为换oracle数据库了。”我晕。。。
2.代码计算不是以你每天写了多少算的啦,应该把需求分析等非编码时间也算进去做平均,算下来一个一天也就几十行而已;
3.貌似做了一个团队能力与项目规模/难度不成比例的项目.或者说项目经理能力所不能及的一个项目;
...
国内的项目是用人头来算钱的,一个人头一个坑,跑了几个就可能会有一个人头两个坑,三个坑,坑坑洼洼的项目到基本都是失败告终的,好的项目经理可以控制场面,和客户一起协调,预期工程量,把风险降到最低。差的项目经理只顾着数自己腰包里的钱,打一枪换一个地方,失败的项目对开发人员是一种打击,对管理级别的就像搔痒一样。
用刀的项目都有风险预算,评估的比较紧,一般不会出现把工作压力集中在个别开发人员的身上的情况,少数被包了几次的项目除外
我有80%的把握说lz谈的项目失败的原因是:团队中有几个不会写代码的人,但是他们写的代码量占到整个项目的50%以上。而且有几个会写代码的人对于关键的技术把握并不是十分的牢靠,他们平时自顾不暇更不会去协助做相关的codereview了

