关于项目管理的一点体会

这段时间,一直在负责一个项目的管理与开发。在时间短、任务紧,而团队人员又大部分是没有经验的菜鸟的恶劣情况下,我带领接近40人的团队,终于在客户规定的时间范围内如期交付产品。这其中,经历了需求变更、人员变动(因为其它任务,先后有近10人离开团队)等诸多问题,项目仍然取得成功了,不能不说有几分侥幸,但此外也有一些经验与教训可以与大家分享。

项目开发方面

需求

项目应以需求为核心。一个项目是否能够成功,对需求的准确把握在成功因素中要占上60%的比例。不管系统的架构设计、团队管理有多么的成功,如果需求出现偏差,仍然是南辕北辙。由于EAS项目的特殊性,项目开发过程中能够与客户建立有效快速的沟通渠道,是项目成功的关键。

需求必须获得客户的确认。通过需求调研与分析后获得的用户需求说明书,以及软件需求规格说明书都必须得到客户的签字确认。确认的内容包括项目的目标、范围以及项目需求功能点(用例)。EAS项目在前期对需求不够重视,导致在需求理解上出现了一些偏差,从而影响了项目的进度。幸而得到了及时的纠正,在项目管理部的协助下,所有需求都得了客户或客户代表的签字确认。从而使得项目在客户验收时,有了充分的保证。

项目应确立专门的需求分析师。公司没有专门的需求分析师,不能不说是人员配备上的一大弊端。从EAS项目的开发过程中,我们就充分地认识到这一问题的严重性。需求的不断更改,客户迟迟未签字确认,原因正是在于我们没有专门的具有丰富经验的需求分析师。普通开发人员在调研需求以及撰写需求规格说明书时,总是会出现偏差或理解错误的地方。软件需求分析是一项重要且负责的技术,没有经过专门训练的需求分析师,通常会给项目带来隐患。

项目应指定各个模块的需求接口人。只有这样,才能有效地保证项目组与客户的及时沟通,快速响应客户的请求与反馈。EAS项目在开发早期及时地确立了需求接口人,在一定程度上规避了需求变更给项目带来的风险。但是,确立的需求接口人未经过系统培训,在需求调研以及与客户沟通的过程中,工作表现只能说是差强人意。

注意维护需求调研记录以及需求跟踪表。这一工作做得不够好。由于需求调研人不够专业,而项目经理以及需求分析负责人对这一过程还欠缺足够的重视,同时没有好的工具或流程来监控这一过程,使得需求调研记录没有发挥更大的作用。此外,需求跟踪也非常重要,毕竟,任何项目的需求都不是固定不变的,需求随时会发生变更,而开发人员实现的需求也可能会与客户的要求偏差。

注意维护需求矩阵。项目经理对这一内容缺乏足够的重视与理解,项目开发过程体系中也缺乏好的需求矩阵文档模板。但是在项目中后期,项目及时撰写了EAS项目需求功能列表,并结合交付版本与客户进行了沟通和协商,从而规避了需求偏差的风险。

控制需求变更。重视CCB的作用,同时应建立需求变更的响应机制。EAS项目组对于需求变更的响应还不够及时,这一点项目经理与项目管理小组要担负一定的责任。

设计

 重视架构设计。EAS项目的成功,一定程度是源于我们有个优秀的框架开发小组,我们在项目立项之初就基本确定了整个系统的架构。其中虽然发生了一些变化,但核心架构仍然没有发生大的变化。由于,我们建立了稳定、简单的系统框架,可以极大地提高开发效率,规避了对框架的重复编码。

 善于对设计作出取舍。项目开发的三要素是成本、质量与进度。在保证质量的前提下,为了项目进度不出现大的偏差,EAS项目组并没有过分强调技术,特别是在考虑进度的情况下,牺牲了系统的部分可扩展性。虽然这为系统的后期维护带来一定隐患,但却能够有效地保证项目的进度。从EAS最初的架构设计来看,我们引入了Castle与AOP,试图简化ORM以及横切关注点例如日志、异常、权限、事务等功能的实现。同时,希望采用WCF,利用SOA思想建立松散耦合的面向服务应用程序。但随着客户需求的变化,我们果断地放弃了采用WCF的构想,同时又克服了技术困难,坚持了对Castle与AOP的使用,并为此成立了框架开发小组。事实证明,在技术的抉择上我们作出了正确的决定。

重视UI原型设计。系统的原型设计与需求分析相辅相成。如果有好的原型版本交付给客户,则客户更能够理解系统的实现,促进沟通的有效性与准确性。在EAS项目中,我们从一开始就确立了原型设计小组,并在分析需求阶段,就开始了原型设计。这一做法无疑在客户沟通、需求确认、UI设计等方面都发挥了很大的作用。但是,我们在这一点上,由于缺乏专门的UI设计人员,因此,这一工作还存在很大的缺陷,甚至于UI的设计为迭代版本的交付带来了很大的障碍。在项目后期,关于UI的bug是最多。因此,我们认为在开发类似的WEB应用程序时,应尽早确立UI设计规范,以约束所有的UI设计。同时,必须培养专门的UI设计师,在开始原型设计时,就尽快完成UI交互的设计。并且,必须成立专门的UI设计小组,在需求阶段与需求分析师合作,在编码阶段与开发人员合作。

 测试

测试成员应了解需求。如果不了解需求,测试人员无法编写正确的测试用例,同时在测试过程中,也可能因为错误地理解需求,从而导致报告错误的bug,影响开发人员效率。

加强开发人员与测试人员的合作。开发人员必须及时响应测试人员提交的bug。而测试人员也应跟踪开发人员对bug的修复情况。

测试之初必须确定测试原则,对bug的严重程度进行分级。同时,必须确定修复bug的优先级别。

 项目管理

进度管理

保证项目进度不出现大的偏差的前提是制定一个好的项目计划。必须根据项目规模,成员情况,技术难度等多方面考虑整个项目计划。如果项目的deadline已经确定,则必须采用一些方法来保障项目计划的完成。首先是选择符合项目的软件开发生命周期。通常情况下,并不建议采用瀑布开发方式。最佳的办法,应该是RUP或者敏捷开发,然后结合原型法制订项目计划。这样可以规避因为需求变更产生的风险。

其次,要每日跟踪项目的进展情况。可以通过晨会、周会以及项目日报、项目周报了解项目进展情况。同时,需要为各个小组指定进度跟踪人,根据各个小组长的日报,判断实际的进度是否与计划出现偏差。
要制定项目进度偏差的应对方法。一旦项目进度出现了偏差,必须采取相应错误解决问题。或者通过加班、增加人手、申请项目进度等方法及时作出响应。

及时向项目成员汇报项目进度情况。只有让各个项目成员了解到项目现状,才能够给每个成员增加压力,不至于松懈。同时,也能够使得每个成员能有一个目标,而不至于茫然失措。

制定项目计划时,必须考虑阶段评审与同行评审的时间。这一点在EAS项目中做得不够好。其中原因也是由于项目进度本身较紧的缘故。

注意维护项目进度跟踪表与项目进度偏差跟踪表。让项目管理部以及QA及时掌握项目进度,有利于对项目进度的管理。

变更管理

变更包括需求变更、人员变更。如果不控制好,两者对项目的进展都会带来灾难性的后果。需求变更在前面已经叙述,而EAS项目中发现人员变更的情况也非常严重,因此这里重点介绍关于人员变更的管理。

如果发生人员进入的情况,那么对项目带来的通常都会是好的影响。但我们也必须注意如何让新成员更快地融入团队。整体上讲,如果需要新成员加入,发生变更的最佳时机是项目前期。如果在项目中后期加入新成员,无疑则意味着项目出现了灾难性的后果。而新增加的成员,由于不熟悉项目,所能带来好的影响也是有限的。如果不处理好新成员与老成员之间的合作关系,反而会带来负面影响。

人员的退出很多时候是不可控的,同时对项目带来的影响也是不可估计的。为了将这些影响降到最低,就必须在项目开始之初就要确立编码规范。同时,还应该重视对文档的维护与更新。而在人员退出时,必须做好交接工作。同时,还应对这种变更进行合理的评估,并及时报告项目管理部,并与客户及时沟通。如果对项目进度有严重影响,应争取最大的努力取得客户的理解,提出项目延期的申请。

风险管理

要在项目开始之初就考虑到项目过程中可能出现的所有风险,是不现实的。但是,我们必须考虑对风险的管理,尤其是在制订项目计划以及创建团队的时候,考虑这一因素。风险有很多,包括需求的风险、进度的风险、质量的风险以及技术风险等。必须制定一套完整的风险管理计划,而一旦发生了风险,则必须及时响应,组织相关人员解决风险。不能忽略任何一个小的风险,否则一个小的风险到最后会造成大的灾难。风险的把握必须要有项目经理与系统架构师把关。

成员管理

不团结的项目组是无法保证项目的成功地。项目经理与项目组长在管理团队成员时,必须时刻注意成员状况,即使处理工作出现的矛盾与摩擦,随时保证团队合作精神得到最大程度的执行。

持续地保证项目成员的士气非常重要。项目每取得一个阶段性的进展,必须告知全体成员,如此才能收获成功的信心。项目开发过程需要注意劳逸结合。一味地强制性加班,只能降低项目成员的工作效率。项目过程中,如能适当地开展一些活动,无疑能够让团队成员感受到项目组的集体气氛。在阶段实现的重要时刻,项目经理必须注意通过文字、语言等激励项目组成员。而项目经理的自信也是保证成员士气的一个关键。

必须注意了解团队成员的心理状态与工作状态。项目成员的战斗力除了是个人的能力发挥之外,一个好的领导也是至关重要的。因此,必须选择合适的项目组长,通过他们掌握整个项目团队成员的工作进展。同时,还要了解每个成员的能力,以安排合适的角色与岗位。

重视开发组与测试组以及项目管理小组的合作。项目组是一个整体,每个成员的角色不同,但大家都是团队的重要一员。

posted on 2007-09-19 17:12 张逸 阅读(4825) 评论(25)  编辑 收藏 所属分类: 项目管理

评论

#1楼  2007-09-19 17:37 徐少侠      

不知道猜得对不对

你们项目的测试工作可能是开始得比较晚

其实可以在项目需求阶段基本完成,或者UI基本定型后就可以开始了
最晚是编码开始的时候就必须开始了

开始干嘛呢?

让测试员成天座那里想应该用什么数据来测

这样可以保证编码完成后能立刻进入测试,且有着比较成熟的测试用例   回复  引用  查看    

#2楼  2007-09-19 17:40 freeliver54      

火车跑的快
全靠车头带   回复  引用  查看    

#3楼 [楼主] 2007-09-19 17:43 Bruce Zhang      

@徐少侠
事实上,测试的介入已经比较早了,不过在需求分析阶段,测试没有进入,是一大失误。此外,测试组的人员以及开发组的人员60%都是没有经验的应届毕业生,经验与技能也制约了测试和开发的质量啊!

拒绝的bug多,而修复多次的bug也比较多,不过在后几次迭代中,开始有所好转了。   回复  引用  查看    

#4楼  2007-09-19 17:53 neozhu [未注册用户]

顶,   回复  引用    

#5楼  2007-09-19 18:09 徐少侠      

原来人员也都不整齐哦
你这个经理做得辛苦的
能把这么多新手整合好了,还基本不耽误项目,不容易了。   回复  引用  查看    

#6楼  2007-09-19 18:11 Ray Zhang [未注册用户]

需求做得好,项目就做好了一大半
友情支持   回复  引用    

#7楼  2007-09-19 19:07 金色海洋(jyk)      

厉害,高手。佩服,   回复  引用  查看    

#8楼  2007-09-19 20:25 Evernory      

好文章,收藏学习了   回复  引用  查看    

#9楼  2007-09-19 21:19 jchdong      

总结的非常全面

我也提些建议吧,

业务应该找熟悉业务流程和逻辑的人来做吧;这样业务方面不容易出现偏差;

设计方面:虽然底层架构比较好,好像少提到对业务类方面的设计

项目进度管理,觉得少了代码评审这步,这对开发质量保证少有好处,特别是新手较多的情况下   回复  引用  查看    

#10楼  2007-09-20 08:53 针式个人知识库管理      

EAS:是不是kingdee产品的二次开发?
收录先!
测试组的人员以及开发组的人员60%都是没有经验的应届毕业生:说明你们还主要停留在人工黑盒测试阶段;自动化测试还有待努力!
自动化测试:下班前启动,第二天看到满幕的红红绿绿,爽!   回复  引用  查看    

#11楼  2007-09-20 09:26 半梦半醒之间      

总结的不错。

其实项目能够完成还有2点比较重要,这也是我感触比较深的地方。

第一点是对项目的整体规划。
技术不行、人员变动、需求变更基本在每个项目中都有类似的问题。但是不同的项目经理可能使用的应对策略是不同的。如果在项目早期能够做全局性的考虑,很多时候会好得多。

第二点是项目经理的可控范围有多大。
通常的情况都会有更高级别的人跑来拖后腿。人为什么变动?离职的情况不多,转做其它工作的不少。而且,时不时开个会,演示啊、汇报啊等等。项目经理需要控制在什么时候做什么。如果这些项目经理都不可控,风险就增大很多。

  回复  引用  查看    

#12楼  2007-09-20 09:34 布鲁斯南      

在发现编程的进度没有达到预期的时候,有没有做什么工作?   回复  引用  查看    

#13楼  2007-09-20 13:02 Clark Zheng      

虚心学习中   回复  引用  查看    

#14楼 [楼主] 2007-09-20 13:48 Bruce Zhang      

@jchdong
代码评审是没有时间做了,进度太紧。为了弥补这一问题,专门安排了经验较丰富的开发人员进行代码走查。

@针式个人知识库管理
EAS是我们自己做的项目,不是二次开发。

测试人员使用了QTP和Load Runner,但大部分还是手工测试。

@布鲁斯南
进度出现偏差时,首先安排了加班,另外对前期出现的问题进行了及时的总结与纠正,提高了编码人员的工作效率。   回复  引用  查看    

#15楼  2007-09-21 13:14 杨其仲      

关于 成员管理 那块, 刚近来的员工可能薪水都差不多,因为面试难度可能有一个标准,当干活干了一段时间,每个成员的水平高低就会显露出来,比如技术好的人干活干的快,效率高,干的可能会多一些. 技术差的干的慢,效率低, 那么您会根据每个人的水平而更改他们的工资待遇吗?   回复  引用  查看    

#16楼 [楼主] 2007-09-21 13:25 Bruce Zhang      

@杨其仲
新员工的薪水其实也是有区别的。入职时我们会有测试,判断他们的级别。此外,根据工作情况,我们也会对开发人员的薪资进行调整。
  回复  引用  查看    

#17楼  2007-09-21 15:03 weiyashi [未注册用户]

易虎互联 (www.easyhoo.cn)是在现有网络文化内涵的基础上,以全新的网络理念、先进的网络技术和企业管理模式建构的。本公司以多种网络经营为载体,致力于为广大用户提供:各行业各领域、“先进的 、易懂的 、实用的、 普及的”网络商务平台,是一家拥有多元化营销网络及专业服务网络的高科技公司。 2007年易虎互联深入分析互联网行业,对大量企业网站调研,针对当前企业网站的弊端,提出“营销型”网站概念,掀起广州新一轮的企业建网风暴,开创广州企业网站建设蓝海。我们的口号:00“绝不做没有销售力的网站!”

  回复  引用    

#18楼  2007-09-21 15:08 dreamsfeng [未注册用户]

EAS项目具体是指什么项目啊?在google里没有搜索出这个名词的解释。   回复  引用    

#19楼 [楼主] 2007-09-23 09:32 Bruce Zhang      

@dreamsfeng
是我们公司做的一个项目,网上当然搜索不到。   回复  引用  查看    

#20楼  2007-09-26 15:04 张子阳.      


需求没有搞清楚是最要命的。文章很好,收藏了。

  回复  引用  查看    

#21楼  2007-09-26 22:15 杰客      

谢!   回复  引用  查看    

#22楼  2007-11-29 17:18 笨→鸟(Bird)      

ZDS.PuYao.EAS
  回复  引用  查看    

#23楼  2008-03-16 14:22 木独猪      

EAS企业套件   回复  引用  查看    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接:
 

导航

公告

logo.gif
我的著作与译作

《软件设计精要与模式》

《WCF服务编程》

MVP_Horizontal_BlueOnly.png

From 03-03-2006
Counter: site stats

与我联系

搜索

 

常用链接

我参加的小组

我参与的团队

随笔分类(243)

随笔档案(235)

最新随笔

积分与排名

最新评论

阅读排行榜

评论排行榜