很想谈这个话题好久了,在这些年的工作中,首先经历的了项目成员,也担任过项目经理。经历过大项目,也经历过小项目。算不上久经沙场,但也有资格说,有一些项目开发的经验。
首先,说一下什么是项目。说到项目,就要说到甲方和乙方。项目需求的提出方,一般是甲方,而项目的实现方,一般是乙方。有的时候,也存在外包,就是说乙方中标了甲方的项目,然后乙方外包给丙方来做。这里为了简化,需求方就是甲方,实现方就是乙方。一般甲方的人,都是很牛逼的,给人高高在上的感觉,但是有些甲方的人也是挺好的,能够体谅和理解乙方的辛苦和不易。而乙方,一般都是开始的时候会派一些公司比较厉害的工程师去做需求分析和设计,到项目进行到一半的时候,由于其他项目的启动,抽一些人,参与到新项目。有的时候,一个人参与好几个项目,也是正常的。一般来讲,一个项目都有好几个人,甚至好几十人。总不能这些人都与甲方的人进行沟通吧。这样也不太好,一方面体现不了乙方的专业水平,另一方面也不方便统一管理,这样就有了项目经理的角色。有的甲方对项目经理是有要求的。而乙方也会安排有经验的人担任。所以项目经理与项目成员的区别之一就是项目经理要经验丰富很多,这里要说明一点的是,并不是说技术特别厉害的人,才可以担任。项目经理的一个重要的职责就是沟通和协调的能力。要与甲方沟通,整理需求;与项目成员沟通,安排开发计划,协调成员之间的接口等。
一个项目能不能成功完成,首先需要一个能够有整体意识和能抓住重点的项目经理,然后在就是根据项目的需要,选择合适的项目成员。这里要强调的是,并是说项目组的人个个都是牛人,一个项目就可以顺利完成。技术牛人,可能都有点个性,这些人在一起做事和合作,不一定就是最高效的合作。合作是需要相互的配合和联合行动。有的项目还涉及到其他第三方公司的接口,这样的项目涉及到的不确定因素就要更多一些了。
有了项目经理和项目成员,那基本上项目组就有了。但在项目过程中,根据项目的进度,人员还会变动的,或增加或减少。曾经负责的一个项目最多的时候达到10多个,最少的时候是4个。一方面是根据进度,一方面是根据组员的情况,有些事情,2个人做不一定比1个做效率高。这个就要看项目经理的判断。人员确定后,项目经理就要制定项目计划。对于一个新的项目,也许项目经理不能做到很准确的评估,包括需求的理解、进度的预算等,但是要有一个大概的出来。并根据情况作调整。要不要加班?如果进度严重滞后,加班也是不可避免的。当然,在项目过程中,也存在着组员离开的情况,这种情况在我的项目中也出现过,我觉得不要卡这个人,不要因为安排他的事情没做完,没做好,就不接手工作,拖延交接时间,没这个必要。所以,在项目过程中,项目经理承受着各方面的压力,来自甲方的,来自公司领导的,来自项目组员的。有的甲方也会要你写项目计划;公司领导也会催什么时间可以完成,组员也回来找你协调接口的事情,或者需求相关的问题。有一个项目,我那段时间基本上一天休息4到5个小时。那段时间,基本上是这样的,每天早上给组员发送计划和存在的问题;白天基本上是与甲方的人谈业务流程和组员之间的沟通;晚上看完成的情况,并找到有没有问题;最后就是来做自己那块的开发任务,一般什么时候做完,什么时候休息。这个项目从开始到上线,经历2个月。到1个半月的时候,版本基本上稳定,之后我们就相对轻松好多。而期间,基本上1到2星期,我会跟公司申请一批费用,带着兄弟们吃大餐,打台球等。我觉得人都是需要放松的,就像气球,吹气到一定的程度,就要先把气放了,才可以再吹,否则会爆炸。项目开发也一样,结果1,2周的紧张,人基本上到了崩溃的边缘,如果这个时候,暂时放下手里的工作,抽2,3个小时,适当的放松一下,那肯定是有好处的。这个项目我收获还是挺大的。在项目过程中,也遇到项目组员不配合的情况。有一种人,是技术型的,什么意思呢,就是讲究把技术研究透,但项目的时间不允许,这个就与我的目标相冲突。一般我会先找他谈谈,如果还是不配合,那就只好平衡一下工作任务。有一种人,是混日子型的,就是那种什么都可以跟你扯,但是做出来的东西,这有点问题,那有点问题。严重的基本需要重做。在这个项目中,就有一个,还是公司请的专家,听说从华为出来的。开始1个星期,我也把他当成专家对待,客客气气的,还是很信任他。然后,在测试他的功能的时候,10个有8个有问题,哪天我火了,然后用电话跟技术总监,3,4个人一起讨论,问题如何解决。最后,总监说,项目的事情你来定,其他人全力配合你。哪天晚上,我们都去吃饭了,他还在那里修改他的问题(这是他自愿的),我们吃饭回来,叫他去,他都不去,我只好安排人去帮他买吃的回来。那天有一个问题,改了10个版本,还有问题。从那以后,他再也不装逼了。其实,我倒不是要为难他。做事,首先要有责任,有了责任,就会认真对待,就会用心去做,不会没关系,可以找人讨论。项目经理需要对整个项目负责,组员需要对各自安排的任务负责,这样,项目就有可能成功的完成。
当然,在项目过程中,随着项目的进行和对需求的理解,有些前期的工作,有可能白做。这个是不可避免的。前期可以当做是一个预研或者热身,经历了这个时期,进入冲刺期,这个时候,组员和经理都要百分百的投入,而对进度和完成质量那要求也是必须严格的。一般来讲,如果当天或者2,3天的任务完成了有一些问题,就需要加班解决掉。否则随着项目的进行,问题越积越多。最后,造成项目不能按期完成。
在项目过程中,最有效的沟通就是会议。一般来讲,一周2次会议是不可少的。一个是讲一下进度情况,一个是讲一下存在的问题。而有特殊问题需要讨论,那是随时有问题,随时讨论。
项目经理在项目的实施过程中,可以不写代码,但一定要对代码进行核对和测试。这样才可以准备的把握项目的信息。组员在汇报进度的时候,有的时候也是自己跟自己测试,或者涉及到交互的部分写模拟数据测试,这样的测试可能不充分,所以需要验证,有的公司有测试部,并安排测试人员参与项目,这个当然是好的,可以配合项目经理进行测试。没有的话,项目经理就需要自己测试了。
另外,在项目的前期,有的公司要求写设计文档。我个人理解是这样的,项目经理写个需求分析、总体设计;各块技术或模块写一个概要设计就好。而有些业务和逻辑比较复杂的,可以一起讨论,并确定。这样可以节省一些时间。
总之,一个项目中的项目经理和项目组员,最终目标就是完成整个项目。而项目的关键是项目经理,项目经理要负责任务的分配和计划,进度的把控,测试,验收;然后,就是项目组员各自完成模块功能。
在项目成功上线后,项目经理还要对项目的真实情况进行监控,一般来讲,项目上线后的3个月是验收期,没有问题的话,甲方会打尾款给公司。在公司收到尾款后,项目就结束了。
在项目实施的过程中,项目经理也难免会出错,在出现错误后,已经要及时纠正,不要觉得面子过不去,而一拖再拖,这样会影响整个项目进度和组员的情绪。另外就是,项目经理对自己不熟悉的技术,不要不懂装懂,更不要在负责这块的组员面前指手画脚,这样会引起组员的怨气,甚至对你产生抵触的情绪。而作为组员,也应该理解项目经理在项目过程中一些疏忽的地方,这里指的是疏忽的地方,不包括哪些前面这样说,后面那样说的情况,更不包括项目经理说这个简单,那个简单,很快能搞定的不负责的情况。一个简单的事情,也要看是什么样的要求,比如写个通信服务器和客户端,这个应该是很基本的技术了,但是你是要做个简单的demo,还是要做个支持及千万用户并发的?作为项目经理还要帮助组员考虑如何可以更高效的进行测试?有的人喜欢把测试用例写在代码里,这不是一种好的做法,如果这种数据来源于数据库,我建议可以自己在数据库里插入测试数据;如果这些数据来自服务端,可以自己写个模拟的服务端,进行测试,这个服务端性能等不要求,只要能够接收和处理消息就行。
项目经理和项目成员之间的事,远不止本文中提到的这些,先说这些吧,有机会把本人参与的项目以及项目中一些事情都写出来,与大家分享。这个可能需要较长的时间之后。
转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/13162201