技术开发 频道

一个项目成功和失败的总结

    【IT168技术文档】
   
在连续封闭N个月以及后来的N个月的加班后,项目终于以延期N个月的结果结束了。不管曾经出现过多少问题,不管项目是否延期,重要的是项目现在已经结束了,所有的项目成员终于都可以松一口气了。曾经在某一天和同事开玩笑说:在我经过过的失败项目中多了一个项目,以后就能避免同样类型的失败了。同事们听了,都笑了。在那段时间里,很久没有听到过同事们畅快的笑了。

现在,我以我目前的知识水平,总结一下项目中存在的问题。

1. 合理项目计划的制定
  我不是很清楚项目组是否在一开始就了解这个项目的规模,估算过项目的成本和工期,做过资源和技术的可行性研究。当我进入这个项目的时候,就被告知项目将在3个月内完成,当时项目刚进入需求调研阶段。在还没有了解项目的大部分功能的情况下,就做好了项目的时间计划,这样项目的风险性是否过高呢?这样导致项目的开发计划不是按照功能进行个人的计划安排和项目经理进行了总体把握和调整制定的,而是按照规定的时间制定功能模块的开发计划。最后,很多功能都没有按期完成,也很难按期完成。而且,为了赶进度,代码的质量也就没有得到保证。(当然,代码质量也不止是计划导致的,还包括个人的开发经验等因素。) 不合理的开发计划造成项目不但没有按照规定时间完成,项目质量也不是很好。所以,合理的项目计划对项目至关重要

2. 开发团队的稳定
  项目进入需求调研阶段,项目所要求的人员并没有按照项目的要求到位,还在招聘当中。在需求调研进展一段时间后,项目组进行界面原型的开发。此时,新招聘N人进入项目组,参与原型界面的开发,需要说明的是他们没有任何开发经验。在部分功能原型界面设计完成,项目组进入封闭开发阶段。按照项目要求,又加入招聘的N人。同时,也有N人离开项目组。项目在开发的中前期,人员一直都没有按照要求安排到位,团队也没有得到稳定,影响工作进度。而且,每次新加人员后,项目组都要安排相关的培训和业务了解,造成时间和人力的浪费。 最可怕的是,人员变更导致不同的人都接手过同一模块的现状,造成现阶段代码维护的难度加大。所以,不稳定的团队,会对项目进度造成不可预计的影响。

3. 明确的项目需求
  一是为了赶项目进度,二是对业务的不了解,三是业务人员业务掌握的差异,在没有全部或者大部分业务了解确认的情况,项目组开发人员就进行封闭开发,相关业务人员也在继续了解其他的业务。需求的不完整,以及错误理解,导致开发期间发生过N次的设计变更,程序无数次的改动。而且,在项目测试过程中都发生过业务改变的情况。明确的项目需求,对高效的项目开发是多么的重要。

4. 业务总体设计把握
  项目缺乏业务的总体设计把握,每个人都是只了解自己负责的那部分业务,其他的模块不了解,在做模块设计的时候,也考虑不到其他模块的需求。当两个模块之间有交互时,更多的是两个模块负责人之间的沟通和交流,按照要求提供另一个模块的服务。而且,模块之间的交互设计是放在各模块开发后期进行的,后面涉及到的改动也就不可避免,还造成开发管理的混乱。

5. 引入第三方技术
  引入第三方技术,是受到项目进度、业务功能和公司所能提供资源的影响,也是不得已而为之 。在经过简单的测试后,就投入项目中进行使用。值得庆幸的是,第三方技术的引入,没有对这个项目造成太大的影响。但是,不管怎么样,我们也应该清楚地意识到引入不熟悉的第三方技术和组件将给项目造成的风险。

6. 严格的单元测试
  因为每个成员开发经验的不同,所以他们所开发的程序出错的几率也不一样,不可能保证大家的代码都没有任何问题。为了节约时间,成员都会在实现一个函数后进行调用和测试,如果得到想要的结果,那就算测试通过了。但这还不够,在实际的开发中,很少进行边界测试、不合理数据输入测试等测试。最后在系统测试阶段,系统出现了很多不应该出现的低级错误,比如什么对象为空的调用、错误数据等,增加测试工作量,延缓测试进度。单元测试是很有必要的,不仅可以检测程序错误,也可以减少测试工作的工作量。

0
相关文章