现在项目处于比较空闲期,主要在测试改Bug。今年一年来,基于GIS的项目从V1.0版本开发到V3.0,期间走过不少弯路,现在系统渐趋平稳。所谓慢慢人生路,难免错几步,年底总结下,期待以后有更大的突破。
很多大型系统的开发都需经过一个剧烈的挣扎过程,少数的项目满足了目标、时间进度和预算的需求。其实,今年我们开发的这个GIS项目很大一部分都是在加班中度过的。当大大小小的问题相互纠缠和累积在一起的时候,团队的行动变得越来越慢。总结下存在的几大原因。
(一) 需求的不确定及变动
由于此项目是做个政府用的,可想而知几乎除了一些基本功能外完全不提其他功能,到末尾我想加这个功能,加那个功能,每个领导来看下系统免不了提出几个要求。这个无需多说,相当致命,代价相当昂贵,即使迭代开发也依然存在。记得采用Nhibernate+WCF框架来开发,半路杀出来要求可以离线操作 可以随时哪个笔记本操作,结果花费了一个月的时间修改底层与业务逻辑;相当致命,杯具啊! 还好最后总算满足他们要求。总之需求一定要确定好,项目边界要确定好,无止境的修改不是办法,后期修修补补打补丁也解决不了问题,会使整个代码结构混乱Bug很多。
(二) 分析人员能力问题
有时候分析人员经常单单凭自己的理解来下结论,结果做出来的东西违背了用户的旨意而且存在分析不到位,用例图、类图、数据库设计、详细设计无法提供给开发人员。结果程序员既当爹又当妈,搞得相当困惑。其实发现大部分项目的主要设计主要还是在于几个程序员之间自己运转。
(三) 团队人员配置及个人能力
最要命的是半路中人员的退出,无论什么原因无论其能力的强弱都会对项目产生一定影响。你留下的屁股,谁能帮你擦。无论多少个母亲,孕育一个生命都需要十个月,开发过程中需要相互沟通和交流任务。特别强调,团队中需要一两个介于牛A与牛C之间的人。对数据库,对技术框架,对技术难点能够很好解决。其实我一向很喜欢研究框架,之前开发试用的几个较成熟点的:三层架构,SmartClient,Nhibernate+WCF 企业级N层。大都是比较简单的还需深入研究 进行扩展,朋友们有哪些好的框架可以交流交流探讨一下。
(四) 项目经理的管理技能和驾驭能力
最怕的就是项目经理受领导的控制。领导一般无法正确详细了解项目的进展、情况、存在的问题而强加给你要求几个月完成,导致系统相当粗糙。项目经理的管理技能同样也相当重要,如何总体把关,如何合理分配任务,实现集体与个人利益的最大化,这是项目成败的关键。
(五) 开发过程中必须制定一些游戏规则
各人的编程方式、风格、爱好都不一样,如果开发之前不确定一些游戏规则到后期改起来会相当麻烦。BUG也会野火烧不尽,春风吹又生。Button长度多少,DatagridView 样式如何,代码注释、版本管理等等。
(六) 决策性问题如何解决
一招不慎,可能导致满盘皆输。对于关键性的决策问题,个人觉得开会讨论,集体解决 充分考虑可能存在的问题已经应对的措施,与领导商量签字审核做出决策。
(七) 注重细节
改BUG的日子是痛苦而已烦躁的。细节决定成败,平常一些易错的东西,必须留心记录下来,避免重蹈覆辙。单元测试、集成测试正常情况下也是必须的。当你做个页面花费半天,修改用了一天,你将会发现这样是在浪费生命。
(八) 提倡快乐编程
这点我深感启发。编程,为什么有趣?我们所期望得到的是什么快乐,当你真正对编程感兴趣的时候,你会发现编程满足了我们内心深处进行创造的渴望,还愉悦了每个人的内在情况。一天工作八个小时,我喜欢七小时做项目,一小时研究总结以及学习其他知识,方向很重要,时间很宝贵,把时间用在正确的研究方向上。
人总是在总结中不段前进!期待各位园友提出宝贵意见。