随笔-47  评论-322  文章-12  trackbacks-4

从毕业到现在,已经两年半了,大大小小的项目也做了八九个了,最大的一个项目规模是大约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越测越多,数量与日俱增,最后到了无法维护的地步,代码没有人敢去修改,更没有人敢提出在设计上修改。于是,项目无法交付,宣告失败。

在做类似项目的时候,有什么办法可以避免上述情况吗???

posted on 2007-12-01 19:17 Game_over 阅读(2857) 评论(39)  编辑 收藏 网摘

评论:
#1楼[楼主] 2007-12-01 19:40 | Game_over      
@金色海洋(jyk)
代码量当然是通过工具数的了,每个项目都要做这种统计吧。
推荐一个:SourceCounter。

  回复  引用  查看    
#2楼 2007-12-01 20:01 | 随风逝去      
--引用--------------------------------------------------

3、实在不行了,重写一遍也不会占用太多的时间和精力。


--------------------------------------------------------
要重写的话,这就说明其设计出问题。
个人认为,如果这样子的话,还不如重新设计更合理。如果继续这样,那么,日后的维护和修改也会出现上述同样的问题!

  回复  引用  查看    
#3楼 2007-12-01 20:07 | 代码乱了      
呵呵,我毕业后做的第一个大项目和你做个很类似,最后以失败告终,现在想起真是一场噩梦
  回复  引用  查看    
#4楼[楼主] 2007-12-01 20:08 | Game_over      
--引用--------------------------------------------------
随风逝去: --引用--------------------------------------------------

3、实在不行了,重写一遍也不会占用太多的时间和精力。


--------------------------------------------------------
要重写的话,这就说明其设计出问题。
个人认为,如果这样子的话,还不如重新设计更合理。如果继续这样,那么,日后的维护和修改也会出现上述同样的问题!
--------------------------------------------------------

项目小了,怎么样都容易做。如果是大项目,很多东西都在可控范围之外,就不容易管理,何况修改,重新设计呢。

  回复  引用  查看    
#5楼 2007-12-01 20:13 | 怪怪      
4个月120W行? 不失败不可能的...
  回复  引用  查看    
#6楼 2007-12-01 20:19 | 预备役中尉      
没做好分析就想当然的进入开发.不失败简直就是奇迹.
  回复  引用  查看    
#7楼[楼主] 2007-12-01 20:23 | Game_over      
--引用--------------------------------------------------
怪怪: 4个月120W行? 不失败不可能的...
--------------------------------------------------------

这个是最终的代码量,最开始应该只有30W。然后改Bug,1K的代码,一改Bug,代码是成倍的涨啊。

  回复  引用  查看    
#8楼 2007-12-01 20:40 | aspnetx      
正所谓兵熊熊一个,将熊熊一窝
应用在现在的行业里太适合不过了

  回复  引用  查看    
#9楼 2007-12-01 20:56 | title party[未注册用户]
标题党啊。。。
  回复  引用    
#10楼 2007-12-01 21:16 | 绿蚂蚁      
我也遇到过一个这样的项目,一个混乱的巨无霸。不幸的是,领导非让修改的跑起来,于是我索性离职了
  回复  引用  查看    
#11楼 2007-12-01 21:58 | Dorian Deng      
简单是一种美.....

在时间不够的情况下用最简单的方式实现,以实现业务为根本目的。

所有所谓高深架构,如果整个项目只有设计人员一个人明白的话,绝对不可以用;尽量少用花哨的东西..................

  回复  引用  查看    
#12楼 2007-12-01 22:03 | 老刀把子      
两年半就做了7,8个项目,真多。
我头两年都不到两个完整项目。

  回复  引用  查看    
#13楼 2007-12-01 22:23 | 瑞克      
呵呵一年多做一个项目。
  回复  引用  查看    
#14楼 2007-12-02 01:44 | Nathan2008      
兄弟,你幸运啊
以前有个做主管的朋友问以前项目失败率是多少?70%

不知道别的朋友,项目失败率是多少?

  回复  引用  查看    
#15楼 2007-12-02 07:29 | 林.Net      
引用---------------------
代码没有人敢去修改
--------------------------
对这句话深有感触,道最后是看了就头大。

  回复  引用  查看    
#16楼 2007-12-02 10:25 | 预备役中尉      
--引用--------------------------------------------------
老刀把子: 两年半就做了7,8个项目,真多。
我头两年都不到两个完整项目。
--------------------------------------------------------
我算算也差不多哦.第一个是一年都点的时间,标地过了两千万.目前这个也过了千万,还没完全结题.还是楼主强.

  回复  引用  查看    
#17楼[楼主] 2007-12-02 10:55 | Game_over      
@金色海洋(jyk)
我也是跟其中一个朋友聊天才知道的,然后我们就分析了一下,然后拿出来大家讨论一下,这种情况任何人都有可能遇到的。大项目的管理是相当的困难的,更何况文中那个先天不足的项目。

  回复  引用  查看    
#18楼 2007-12-02 15:58 | Jeffrey Zhao      
Why Software Fails
  回复  引用  查看    
#19楼 2007-12-02 16:13 | 阿武      
讨论一个项目的成败并不仅仅局限在是否完成了所有的需求, 这只是第一步, 最终还要看市场的运营情况
  回复  引用  查看    
#20楼 2007-12-02 17:50 | 怪怪      
@Game_over
一天一万行..., 如果10个程序程序员, 每个人都只能埋头写代码了, 如果100个程序员.., 那让项目走上正轨所要求的时间更接近于0了...

即使是30W行, 又有什么本质差别呢? 除非项目本身没有复杂度, 写30W句Hello World...

  回复  引用  查看    
#21楼[楼主] 2007-12-02 18:47 | Game_over      
--引用--------------------------------------------------
怪怪: @Game_over
如果100个程序员.., 那让项目走上正轨所要求的时间更接近于0了...

没明白什么意思。

  回复  引用  查看    
#22楼 2007-12-02 19:04 | Eric ZZ[未注册用户]
4个月的项目,代码1200K,你们真是太强了
业界比较厉害的公司 ,每人每天人均代码量约为10-20行左右
如果让这些公司作,估计你们项目四个月完成的话需要600个人干四个月了
只能说你们公司的人太“牛“了

  回复  引用    
#23楼 2007-12-02 19:33 | volnet(可以叫我大V)      
单日代码量多,估计是因为很多代码非手写吧?

核心代码要设计思考写测试……一天太多,高质量何求?
况且要是超能力完成,一天尚可一星期勉强,几个月就……

  回复  引用  查看    
#24楼 2007-12-02 19:45 | gui[未注册用户]
没有经历过失败 不一定是好事。。。
  回复  引用    
#25楼 2007-12-02 20:30 | Riancy[未注册用户]
没有绝对的成功与失败
  回复  引用    
#26楼 2007-12-02 20:44 | 张荣华      
时间短的话 真的很麻烦 我就经历过这样的事情 一定要先计划再行动。

  回复  引用  查看    
#27楼 2007-12-02 21:53 | 游客[未注册用户]
唉,俺现在做的项目也是这样,维护起来让人觉得可怕。。。
不过你1200K的代码量让人生畏

  回复  引用    
#28楼 2007-12-03 09:15 | Cure      
楼主是做外包的吧

我认为像外包项目,成败主要在客户那边,因为交流的原因,最终客户的原意到发包方,本来的意思可能损失一部分,到了BSE,又损失一部分,到项目经理,又损失一部分,到组员,再损失一部分,这样一步步下来,偏差已经很大了,所以会有很多的变更,改动。更何况,小公司的话,接到的项目可能已经倒了几次手了。
所以,客户方,或者说发包方,对项目的把握能力一定要非常强,否则发包方的一点问题,可能给接包方造成很大的麻烦。

像楼主所说的120W行代码的项目,估计能对整个项目都了解的人是没有的,这种情况下,管理和交流的工作量远远大于实际编码的工作量。这样规模的项目,楼主文中写到的问题无法避免,怎么能成功呢?只有看谁顶得住,看谁的抗压能力强。

  回复  引用  查看    
#29楼 2007-12-03 09:24 | gzj[未注册用户]
类似这样的项目避免失败的方法有很多种。
1。找专业的咨询公司检查设计。
2。购买现成的类似框架产品进行2次开发。
3。自己公司的项目负责人是专家。
以上3种方法都可以从项目开始就走对方向。

  回复  引用    
#30楼 2007-12-03 09:25 | 风海迷沙      
你的程序员人生是不完整的。
  回复  引用  查看    
#31楼 2007-12-03 09:46 | Enzo      
好事多磨啊
  回复  引用  查看    
#32楼 2007-12-03 10:20 | Clark Zheng      
整个画面100多个控件,关联到40多个表。。。

恶梦?地狱?

  回复  引用  查看    
#33楼 2007-12-03 11:50 | 西北驴      
听你这么一说..问题挺严重的?
  回复  引用  查看    
#34楼 2007-12-03 14:49 | ColdDog      
哈哈,看完文章和所有评论,的确有所震惊!
我也是毕业至今两年半,经历过的项目都是中小项目,有的项目甚至就我一个人搞定(需求设计编码测试,文档也有)。失败的项目居然为0。
不过印象的一个项目,完成了80%左右,停了2个月,之后再继续,这个比较头痛,还好挺过来了,期间包括陪客户在宾馆封闭3天3夜的验收过程。。。
之前的公司最后一个项目,完成了2/3,我辞职了,接手我工作的那个同事以前是好朋友,互相之间比较了解,后来问他头疼不,他说:“别提了,那个项目几乎重新来过,因为换oracle数据库了。”我晕。。。

  回复  引用  查看    
#35楼 2007-12-03 16:17 | 三千.℡      
1.吃一堑长一智嘛;
2.代码计算不是以你每天写了多少算的啦,应该把需求分析等非编码时间也算进去做平均,算下来一个一天也就几十行而已;
3.貌似做了一个团队能力与项目规模/难度不成比例的项目.或者说项目经理能力所不能及的一个项目;




  回复  引用  查看    
#36楼 2007-12-04 08:13 | 小哈      
系統要先開發出模組,類,系統樣式表,存儲過程等,以避免每個人在開發時再次去花費時間設計且可能會是五花八門的,增加的代碼,也不便於維護
...

  回复  引用  查看    
#37楼 2007-12-06 14:37 | A.Z|[未注册用户]
小日是用行数算钱的,这样算下来,这种xxxW行的代码就像钞票被烧掉了,可惜,真可惜。
国内的项目是用人头来算钱的,一个人头一个坑,跑了几个就可能会有一个人头两个坑,三个坑,坑坑洼洼的项目到基本都是失败告终的,好的项目经理可以控制场面,和客户一起协调,预期工程量,把风险降到最低。差的项目经理只顾着数自己腰包里的钱,打一枪换一个地方,失败的项目对开发人员是一种打击,对管理级别的就像搔痒一样。
用刀的项目都有风险预算,评估的比较紧,一般不会出现把工作压力集中在个别开发人员的身上的情况,少数被包了几次的项目除外
我有80%的把握说lz谈的项目失败的原因是:团队中有几个不会写代码的人,但是他们写的代码量占到整个项目的50%以上。而且有几个会写代码的人对于关键的技术把握并不是十分的牢靠,他们平时自顾不暇更不会去协助做相关的codereview了

  回复  引用    
#38楼 2008-02-24 14:19 | snryang      
"业界比较厉害的公司 ,每人每天人均代码量约为10-20行左右"

真想见见这样的工作和他们写的代码.

我也毕业出来一年了,只接触了一个项目,而且还是失败的项目.验收都没有通过,做这种项目确实很痛苦,


  回复  引用  查看    
#39楼 2008-05-25 22:53 | sunmoon[未注册用户]
任何一个“失败的项目”,都逃脱不了“设计的失败”
“设计的失败”看似简单其实意义深长
设计成功而开发失败的项目我还真是没见过,这么烂的开发队伍是很难凑出来并能得到领导同意的。

  回复  引用    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 979525




相关文章:

相关链接: