项目做完了,总结一下(上)
在连续封闭N个月以及再后来的N个月的加班后,项目终于以延期N个月的结果结束了。不管曾经发生过什么,不管项目是否延期,重要的是项目结束了,所有的项目成员都可以松一口气了。曾经和同事开玩笑说:在我经过过的失败项目中多了一个项目,以后就能避免同样类型的失败了。同事们听了,都笑了。在那段时间里,很久没有听到过同事们畅快的笑了。
现在,我以我目前的知识水平,总结一下项目中存在的问题,这些问题的出现也不是一两个因素造成的。当然,专业水平太低,也总结不出什么高深的内容。不管怎么样,也算是对项目的总结吧。这里先总结一下我认为的问题,项目值得学习的方面将在下次总结。
1. 项目计划的制定
我不是很清楚是否在一开始了解过这个项目的规模,估算过项目的成本和工期以及资源和技术的可行性。当我进入这个项目的时候,就被告知项目在3个月内完成,当时我们正在客户方做业务需求了解。(说明一下,3个月的时间是在项目开始之前公司决定的,而并没有经过项目组成员根据功能估算以及项目经理的综合制定) 也不知道了解的情况是不是这样,但不管怎么样,在还没有了解项目的功能就做好了项目的开发时间,这样项目的风险性是否较高呢?这样导致的结果是开发人员按照规定的时间制定开发计划,最后发现项目规模较大,很多功能也都没有按期完成,也很难按期完成。不但无法按期完成,为了赶进度,代码的质量也就得不到保证,某些项目组成员有推倒重写的冲动。(代码质量也不止是计划导致的,还包括个人的开发经验) 如果不是项目经理超强的管理控制能力,我想项目也不会有结束的日子。
2. 开发团队的稳定
在业务了解阶段,项目组所需要的人员还在招聘中没有全部到位。进入界面原型开发阶段,项目组新近N人。在封闭开发期间,又加入N人,同时,也有N人离开。项目在开发的中前期团队就没有得到稳定,导致工作进度和计划的不一致。而且,每次来增加人员后,都得进行相关的培训和业务了解。同时,人员变更导致不同的人都接手过同一模块,造成代码维护的难度加大。
3. 需求了解
为了赶项目进度,二是对业务的不了解,三是业务人员业务掌握的差异,在没有全部了解并消化的情况,项目组进行封闭开发。同时,相关人员也在继续了解其他的业务。这所有的情况,导致开发期间发生过N次的设计变更,程序无数次的改动。而且,在开发的后期都发生过业务不断的改变的情况。
4. 总体设计把握
项目缺乏总体设计的把握,每个人都是只了解自己那块的东西,其他的模块也不了解,在做设计的时候,也考虑不到其他模块的影响和需求。当两个模块之间有交互时,更多的是两个模块负责人之间的沟通和交流。而且模块之间的交互设计是放在各模块开发差不多的情况下进行的,后面涉及到的改动也就不可避免。现在模块之间的交互,也许是各模块负责人最头疼的问题了。(当然,这个问题也不的存在也是无奈,时间紧迫,而且业务不熟,设计也就自然存在缺陷。)
5. 引入第三方技术
引入第三方技术,是受到项目进度、业务功能和公司所能提供资源的影响,也是不得已而为之 。在经过简单的测试后,就投入项目中使用。值得庆幸的是,第三方技术的引入,还没有对项目造成太大的影响。但是,我们也应该意识到引入不熟悉的第三方组件给项目造成的风险。
6. 没有严格的单元测试
因为每个成员经验的不同,代码的质量不一样,单元测试是很有必要的。也不能说没有进行单元测试,每实现一个函数都会进行调用,如果得到想要的结果,那就算成功了。但这还不够,我们很少进行边界测试、不合理数据输入测试等,最后在系统测试阶段,出现了很多不应该出现的错误,比如什么对象为空的调用、错误数据等,造成刚开始的测试进度非常缓慢。(没办法,项目工期太紧)
未完,待续......
下班了,该回家了,总结明天继续 。