`
greemranqq
  • 浏览: 966470 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

项目,你总结了吗?

阅读更多

 

为期8个月的项目,已经接近尾声,在此我仅对项目期间出现的问题,进行总结,为以后的项目减少此类错误,让我自

勉,也提供一些经验,让新加入的攻城狮们,分享~.~欢迎提议,请别喷我!

项目背景:此项目是一个财务系统的分支,主要为了完成项目的详细费用的预计,项目产生费用明细数字,让财务和

 

领导监控项目进度,以及项目的费用,以便于统计该项目的完成情况和收支情况。

开发模式:由于该系统数据会依赖于另外的系统,客户对该系统的详细需求也不明确,只说明了一些主要的功能模块,因此,选择的迭代开发的模型。

开发系统:ubuntu 11.04

开发工具:eclipse 3.0

开发框架:本公司自己的 基于SSH 框架

开发数据库:mysql 5.1

开发团队:12个developer,1个business,3个test, 1个teamLeader,1个manager 

 

1.关于需求:

由于该系统需求细节不明确,导致数据库,以及后面的设计扩展性不够。其次对另一系统的数据不很了解,加之项目

催得比较紧,草率开工,没有相对精确的计划,以及可能发生问题的一些措施,为后面的开发埋下了隐患。

1.1改进方案:

对用户的需求需要多进行沟通,对为他们考虑,而不仅仅是为需求而做项目,我们立足点应该放在用户身上,假设你

是用户,拿这些模块干什么用?怎么用着方便,多沟通。

 

2.团队确认:

需求拿到之后,经过主要人员的分析和简单设计,然后进行团队的确认以及分工,由于大部分人员都是新人,对需求

了解不够,对该系统或者该模块到底要做成什么样子,具体程度不够,导致对个模块的设计,以及数据库的确认,以及人天的估计都不准确,也为后面的开发造成困难。

2.1改进方案:

首先拿到需求设计之后,要对各个模块进行详细的分析,和确定,尽量的考虑全面,并且留下改动的余地,既然

是迭代开发,还要涉及到我们不熟悉的系统,那么对人天估计上就要稍微延后,留下一定的缓冲时间。其次,对需要做的模块,站在用户的角度去考虑,想清楚这模块到底是为了干什么,怎么做让用户用的方便,这样设计是否合理,是否以后扩展方便等等。不能一味的用户说什么就做什么,甚至有时候连用户都模糊的知道需要什么,然后面不停的改动,造成了很多不便。

 

3.关于开发:

理论上说,一个好的项目,代码开发时间应该是较少的,但是我们这个项目的coding 时间很长。原因:1.需求精确度

不够,导致设计不够详细,设计文档的实用性不够。2.开发人员欠缺经验,盲目的仅为完成功能,对变化,以及人天估计,以及coding  经验不够,设计混乱,一旦需求变化,改动很大。3.对整个开发团队的实力估计稍高,导致有延期现象。

3.1改进方案:

1.需求明确,设计文档应该更加详细,多为初级程考虑一些开发细节,这样能对模块和代码进行严格的控制,这样的文

档才具有实际意义,文档是为了指导和为后面维护做基础,而不是面子工程,是先于开发,而不是开发了再去补文档,这样只会浪费时间和人力。2.其次,对于初程(junior programmer)来说,多考虑程序的变化,不要只为了完成当前功能而写死板的代码,也要学会设计代码,提升自己,多和需求人员沟通,反馈问题,不然会做很多无用功。要有思想的去工作,而不是为工作而工作。3.对团队实力和团队人员性格多了解,多沟通,尽量让每个人都做自己合适的东西,高效,保质的完成。

 

4.关于测试:

测试这里我就谈两个方面,1.开发人员的Test:对自己模块的测试,以及写的测试用例覆盖面不全,只是测试了主要

的功能,对一些边界,以及一些异常情况没做测试,或者根本没做处理,所以当数据发生异常的时候,页面经常报错。对于

异常数据来说,由于以前的系统已经运行7年了,人都换了几批,数据不完整等等问题,是很有可能了。2. 测试人员的Test:

相对来说,他们更加全面和详细,但是由于经验原因,测试点不够,甚至连测试用例都没走完,当然有些特殊模块测试点非常多,时间和人员配备不够,也是一方原因,但是经过测试的的点的边界,以及异常都应该测试到位。

4.1 改进方案:

1.开发人员对自己的程序要有足够的了解,测试不光是正常数据的测试,更多的是异常情况,对各类型容错要有清晰的

思路,对测试过程中出现的错误,一看就能知道是什么问题,这表示对自己程序的把握,以及错误的处理比较到位。2.测试人员同样,不光正常流程,还需要对异常情况进行处理,压力,环境,浏览器等各种情况进行判定,测试用力例尽量详细,即使多花时间都行,一般来说测试时间应该比开发时间要长。

 

5.关于沟通:

相信项目开始,团队之间的交流是非常频繁的,大家都说已经沟通过了,也很即时了,但是我认为很多沟通不到位。

比如:团队中出现业务人员拿需求给开发人员,然后开发人员开始进行,没有经过太多的思考,知道需要完成什么功能,而不知道为什么需要完成这个功能,这个功能是否可行?是否合理?是否有变通,或者更好的方式去实现等等,都需要多次,反复的着业务人员,找客户进行商定。结果沟通不到位,导致后面开发过程中发现很多问题,有些业务不明确,有些功能点是否需要,这样多到底对不对? 等等 各种问题,耽误项目周期,改动也比较麻烦,反复反复,很不好。

5.1改进方案:

沟通是必要的,也没有人不会的,但是关键在与“会”,至于会与不会,就看沟通的技巧,以及沟通之后能不能达到你需

要的结果。沟通一般是多人的,所以要对对方的性格性情 有一定了解,可能有些人性格内向,你就需要多主动去交流。有的人性格火爆,那么语气你就不能也火爆吧,那沟通和吵架也没分别了。也许有的人当天心情不好,那就多体谅,等等。也许有人觉得我说的不属于项目开发里面,但是我认为这是团队沟通很重要的一环,人与人和睦了,才能把事情说好,不然一切都是空谈。

 

 

6.关于合作

团队合作方面,一个项目肯定会分很多模块,模块肯定有一个人或者多个人完成,模块与模块之间的耦合,或者同一

模块之间的处理等等,都需要合作才能完成。项目期间经常会出现:当需求来了,需要A B (C) 完成,但是A觉得这个让

B去处理好,B 觉得让C 去处理,我这边处理不了,然后就出现了分歧,时间就会拖延。另一方面:当A的任务完成了,B正在不知何去何从的时候,A 就休息玩儿去了,最后B 发现有些问题和A 的模块关联很深,只能从A那边解决,这又耽搁了时间。

6.1解决方案

团队合作,要明白其意义,我们是一个团队,有一个共同的目标(将项目做好),而不简单的是完成自己的任务,一

切以团队目标为重。在任务分配出现分歧的时候,要分析谁做能做好,花的时间最少,并且要有足够的时间,而不是单方面的想,这个不应该我做,或者我不想做。其次,队员实力肯定有一定差异的,先完成的人可以帮助还没完成的人,提供一些方法或者经验建议,不然到时候项目没完成,最后还是会分摊到团队上,也许还是会由你完成,相互帮助相互学习,也能更好促进团队氛围,加强交流。记住:你们的目标是社呢么。

 

7.关于心态

项目期间发生了很多问题,有人是感情上的问题,有人是身体上的问题,有人是家庭朋友的问题。有些问题可以避免

,但是有些问题必然会影响项目,这里我只能说要调节。比如:男女朋友闹矛盾了,和父母关系闹僵了,尽量不要把情绪带到工作上来。如果确实比较严重,那么可以请假休息2天,我相信你的上司也不是那种很XX的人。(如果没有人性化,建议就别干了~.~)。其次在项目期间,出现了由于任务没完成好,受领导批评的事情,甚至这件事情根本不是你的问题,这时候也不用一天抱怨,处理好心态,至于如何做,我也不细说,每个人都有自己的方法,我相信对于初入该行业的人来说,这种事情经常发生。你要明白一件事情,领导没那么多时间关心细节,他只会关心这个东西做好,还没做好。那么请你汲取教训,下次做好不就行了,对自己要有信心。其他的事情,我就不举例了,心态能决定大部分事情的发展。

 

8.关于基础

我是搞JAVA,目前发现SSH 使用很广,但是很多仅限于会使用上,对里面的90%的东西都不明白,这样的对你来说有

意义吗?你仅仅想做一个只会使用工具的程序员吗?那么我再问一句:OOP 和OOD 你确定了解了吗?MVC 和三层架构 这些都知道并且会用吗? Math.round()正负值为什么结果不同吗?这点我没资格说什么,因为我对这方面也谈不上精通,但是我知道基础的重要行。对我来说软件开发,实际上是思想的开发,或者展示,先要拥有了基础和理论知识才能去创造,而不是一个仅仅会使用工具的程序员。只有当你基础打好之后,那些所谓的高深武学到你手里,你会发现不过如此,甚至都创造武学。(这是从小说里面领悟到的)

 

9.关于提升

关于程序员的提升,我没多少发言权,但是我想说的是:对于自己的目标一定要明确,你是想做个混饭吃的程序员,

还是想做一个受人膜拜的大师,有或者你仅仅是做两年,想还工作?对自己的目标清楚的人,我相信会找到自己的路,无论任何行业,只要你目标,敢想敢做,将基础打扎实,总会有功法自然的一天,这是技能上的提升。关于其他:比如自己的素质,品格方面的,这些我就不多说了,但是我认为是很重要的。还有就是自己的眼界和思想,不要仅陷于某一个小领域,比如软件行业的发展,技术前沿,未来的一些走向,也要多关注。老师有云:“你可以不会,但你不可以不知道!”知道了,你才有会的可能。

 

10.关于健康

我们的健康一直是很大的问题,身体健康,心态健康。google 为什么有那么好的环境? 因为他相信他的员工能为他创

造更多的价值。同样的,我们拥有更好的身体,才能创造更多的价值。很多程序员30岁就不行了,太劳累了,但是30岁我认为正是我们的高峰期,这时候垮掉对不好啊。也别告诉我30岁不能当程序员,可能你的职位变了而已,我相信一直走在编程路上的人,才真正是软件行业人才。

 

11.关于未来

现在程序员感觉到很累,身体累,心里也累,每月还挣不了什么钱,很迷茫,不知道路在何方...

就我而言,做一个行业,就必须爱上一个行业。就像女人一样,如果你确定要和她生活在一起,但你觉得没你的初恋或者梦中情人好,一味的反感她,那你的生活会美好吗? 好吧,如果你确实反感,那么请你还一个就行了,何必纠结呢。爱上了,事情就简单了,做事就有动力了,有目标了,就会有方向了,所以还是先问问你的心吧。

           对于程序员的未来,未经历,也不好多谈,有的人说转管理,有的人说做技术牛人,做管理我还是觉得不能忘记代码,做技术的我认为还得会管理,但在我看来能真正做好的很少,必然是有爱好,有智慧,有天赋,肯努力的人。而其他部分更多的是为了钱而去的,光为了钱,没有爱好和兴趣,没有对该行业的的理想,你能干的幸福,做的好吗?

            所以,对于迷茫的人啊,还是想清楚自己到底想干什么? 多了解行业的发展动态,相信总会有适合自己的。

 

 

分享到:
评论
1 楼 满手都是炸 2013-05-06  
写的很好   楼主很踏实的人

相关推荐

Global site tag (gtag.js) - Google Analytics