软件开发项目管理的关键点.doc
软件开发项目管理的关键点 在 IT 行业发展初期,我们经常看到一个人对一个软件项目提供 "一条龙 "服务,意即项目从立项到结束,一个人就全包干了。随着信息技术的发展,项目建设的内容不断增多,项目规模不断扩大,项目干系人对项目的要求不断提高,单打独斗的方式已经不能适应软件开发项目的发展了,项目管理专业知识逐渐受到IT 企业的重视,并逐步在软件开发活动中加强项目管理知识的应用,以提高软件开发项目绩效。 本文所讨论的主要是作者在多年项目管理中的经验总结,由于经验有限,行业面窄,因此所讨论的观点有一定的局限性,并不是所指所有软件开发项目。 1. 常见的四个症状 1.1 需求变更频繁需求变更有很多因素,概括来讲大体分为三类: 一是软件系统所要实现的管理目标、管理模式存在变化。相当于系统整个目标都改变了,相应的,相关管理模式、方法、体系也会跟着变化。一般来讲,这种变化比较少,最有可能出现的情况是客户管理层人员发生变动,其管理目标发生了变化,或者政府出台的新政策与项目目标存在冲突。这类变化虽然少,但 对项目的影响巨大,在项目中后期几乎是致使的。 二是软件系统的需求不断增加。我们人都有一种惯性,那就是总希望事情做好一点,当做得好一点的时候,会再想做得更好一点 ;出于这种心理,客户往往会要求我们把系统做得更完善一些,而这往往又会超出合同内容的范围。还有一种情况是参与需求调查的客户干系人不够多,不够全面,或者说没有抓住负责需求的关键干系人,这样调查、分析出来的需求就容易存在变化,这种变化在软件开发项目中也非常普遍,调研了半天,结果来了一个关键干系人,可能几句话就否定了之前做的工作。 三是我们容易去猜客户 的需求,去估计客户想要的,或者说是我们自己在把需求范围扩大了。这种情况也是非常多的,不管什么软件系统,总是存在需要改善的地方,本来对软件系统的改善是非常好的,但是有一个问题非常突出,我们认为先进的,客户未必接受,最要命的是我们还自以为是,认为是客户的问题。系统的提升、持续改善,是非常好的,但有一个前提,那就是符合市场需求。 1.2 进度落后进度落后的情况概括起来分为两大类: 一是需求范围变动、增加,而项目组资源却在减少,导致项目进度落后。很多项目的计划变更非常频繁,其根本原因就是项目在执行过程中存在 很多变化,所谓 "计划不如变化快 "。时间的冗余量是一个因素,但最大的问题还是计划中的工作内容发生了变化,如果此时项目组人员存在变动,进度的问题更为严重和突出。 二是资源投入不够,资源投入计划不合理,导致项目推进缓慢。很多时候,项目启动会上甲乙双方都是热血沸腾,干劲冲天,但随着项目的推进,资源的协调一致性问题慢慢显露出来。对于行业性管理应用软件来讲,软件系统是一种工具,一种引导、促进业务流程优化、管理模式改进的辅助工具,软件系统的开发、实施是一个周期性比较长的过程,同时实施过程中的冲突现象也比较明显,出现一 个冲突,就得花时间和精力解决,并且有时候还需要出台相应的规章制度,因此解决冲突比较花时间,对项目进程的影响比较大,而这种冲突在项目初期不容易预见,在系统未使用前,很多利益冲突还不能直接的看到。 1.3 成本超支 软件开发项目中的成本超支,大多数是开发商的成本超支,成本超支最为直接、最为明显的一个因素就是人员投入超支。软件开发项目绝大多数成本是人员产生的固定费用和变动费用,公用分摊也有,不过也比较少。人员投入超支最主要的两个因素是需求范围增大和人员投入低效,范围增加无疑会导致人员投入增加,而人员不能高 效利用,工作量投入没有达到预期目标,也是成本超支的重要原因。 1.4 干系人满意度低 在软件开发项目中,干系人是核心,干系人的满意度决定了项目的成功与否,我们一般都比较关注客户满意度,而项目建设参与者的满意度是重要的基础。这里的项目干系人不仅仅指甲方,还包括乙方,简单来说就是项目组成员和公司其他干系人 ;客户对项目的满意度是建立在项目目标实现结果上,而项目目标的实现则是由项目组成员完成的,项目组成员又来自于甲乙双方各个部门,与其他工程项目不同的是,软件开发项目更多是靠人的知识和经验,人的能动性是关键因素。需求范围增加、需求变动、进度落后、质量低下、成本超支、士气低落,这些因素是一种恶性循环,严重影响项目目标的实现,影响干系人的满意度。 2. 四个关键点针对前面所讲的四个症状,我们应该抓住软件开发项目中的四大关键点 2.1 项目目标管理 项目奋斗的方向:一个团队没有目标,就没有方向 ;没有方向,就没有前进的动力和信心。所以一个项目组建立后的第一件事情,就是建立项目奋斗的方向。 可量化、可分解、可达成:一是项目目标必须是可量化的,比如说,我们要成为一个成功人士,这个目标是没法量化的,什么样的人 称为成功人士 ?有什么标准 ?有什么数据可以来衡量呢 ?二是可分解,再比如,我的目标是要过通过 PMP认证,这是一个可量化的,但还需要分解,看 PMBOK,做题练习,第一个月看多少、做多少,第二个月、第三个月。。。我们需要对目标进行分解。三是可达成,定一个不能达成的目标,比如,坐宇宙飞船上火星,这是不可达成的,没用。 明确、清晰,高效传达:目标一定得明确,相关干系人都看得懂,别定出似是而非的目标,别人理解不了,理解都困难,你怎么把目标、思想传达给其他干系人呢 ?如果项目目标没有被项目组成员所理解、认可,那么项目目标 的实现极有可能存在问题。 是组织战略目标的分解:我们确定的项目目标一定得跟组织战略目标相一致。公司的经营目标是分解到各业务单元的,各业务单元又是分解到各个项目的,所以我们说一个公司的最小经营单位是项目组。相应的,经营目标分解下来,最终是到项目上的,我们确定项目目标时得考虑公司分解下来的经营目标,这样你才会得到管理层更多的支持。 为干系人接受和认可:如果一个项目目标不为项目干系人所接受,则项目计划无法执行,项目组成员不能齐心协力,势必影响到项目目标的实现。 2.2 软件需求管理 需求管理的目标 就是为了充分调查需求、综合分析、严格控制,使之尽可能的符合客户的需要,减少项目范围的变动。 需求变动是合理的:首先我们得承认,软件需求变动是合理的,因为它也是人想出来的,凡是人想出来的,都会存在缺陷,我们是在前期尽可能的预见、避免缺陷,但总会有遗漏,所以我们得首先摆正心态去接受这样一个事实。 需求的核心:管理目标,管理模式。我们在做需求调研的时候,一定要找管理层沟通,软件系统的需求是为了实现管理层的管理目标,对管理流程进行优化。一个软件系统开发、实施,就是用代码将管理思想表述出来,并且推进下去。 需求管理三要素:调查、分析、控制。没有调查就没有发言权,我们在与客户沟通需求时,应尽可能的先调查清楚各种背景,这样才有共同语言,有了共同语言才能进行充分的沟通、交流,才会避免需求的 "盲区 ",才能避免 "猜 ""估计 "客户的想法。从客户那儿调查来的需求并不全是合理的,我们需要结合历史经验进行综合分析,不断与客户沟通,最终达成一致。即使达成一致,在项目推进的过程中仍然会因为各种原因存在变化,这时候我们需要确定变更管理流程,并分析变更的合理性,使之将变更的影响降至最低。 要站得高、看得远:在实际需求调研中,我们 需要比客户站得更高、看得更远,对业务、技术的发展有一定的前瞻性,只有这样我们才能引导客户,也只有这样我们对客户来讲才会更为需要、更为重要,沟通间也更为有共同语言。 因为需求变动,用户才需要我们。在软件开发项目中,切忌不要怕谈需求变动,为什么客户需要我们,就是需要我们去解决需求变动的问题,以实现最初的设想、目标。 2.3 干系人沟通管理 干系人有自己的需求和目标:项目组是组织的最小业务单元,项目目标是组织目标的分解,而项目干系人的目标是项目目标的分解,或者说前提、基础,只有在项目干系人目标得以实现,项目目标的实现才成为可能。项目干系人的目标具有多样性、冲突性,因此项目经理必须在各种不同项目干系人之间进行沟通、协调,使所有项目干系人的目标都尽量与项目目标保持一致,或者说项目干系人的目标实现能有力促进项目目标的实现。项目经理在此的作用就是承上启下、穿针引线、左右逢源,同时还要内外兼顾。 干系人有积极和消极的影响:项目干系人对项目的影响有 积极的,也有消极的,我们必须在项目推进过程中,不断识别、分析,利用积极性推动项目,消除消极影响以避免项目受到不利影响。 需要得到干系人的接受、认可,能达成一致:经常出现的问题是,项目组自认为做了很多工作,并且成绩还不错,但一些项目干系人并不买帐。比如:之前所说的,应用新技术、添加新功能、改变操作方式,我们觉得先进,但客户不一定这么认为 ;再比如:做 A 事情对领导来讲是他最关心的,偏偏你去做 B,即使把 B 做到极致仍然没有多大用处,因为你已经与领导的目标产生了偏移 ;如果你认为 B 对项目目标来讲是非常重要的,那么你得 设法说服领导,否则你的工作不会被认可。 关注并协调干系人满意度:不管是公司内部,还是客户外部,不同干系人之间,冲突、理解偏差是不可避免的,对项目工作的满意度是从不同角度去看的 ;因此,为了避免冲突影响项目进度,你必须设法在这些干系人中间找到妥协的办法,尽可能的让所有人的利益得到满足和保证,全部、绝对的满足和保证是不可能的,但你总能在这些线条中找到交叉点。 软件项目管理的核心就是干系人沟通:软件项目管理说简单一点就是管人,管理项目干系人。 2.4 项目绩效与激励 为什么会有绩效 ?是因为我们需要用 绩效来考核我们的工作,我们必须有一个东西来衡量我们的工作结果。从图中我们可以看出,绩效是分两块来讲的,一块是临时的,是业绩,是我们当前工作最直接的保证,另一块是长期的,是投资,是一种长期的修为。如果项目没有绩效报告,项目组成员就没有成就感,因为他感觉不到做这个项目有什么意义,或者说对公司来讲有什么较好的影响。 里程碑、应收款、人月均产值、投入产出比等等,这些数字指标是直接体现项目成绩的,是可以根据公司既定指标进行考量的,大家可以直接通过数字进行核算,我们的项目是否赚钱了 ?是否为公司经营目标做出了贡献 ? 同时,我们还必须注意到有些项目不一定只是为了临时性赢利,有可能是为了长期的经营目标做的一种投资,比如说:为了抢占市场,为了扩大市场影响力等等 ;还有一种是为了开拓客户,为客户持续性建设打下基础 ;这两种情况公司一般不会计较直接利润,更在乎的是市场影响力和客户满意度。还有一种情况是为了锻炼、培养队伍,为将来发展做准备。 在项目有了绩效考核后,接下来便是需要对干系人进行激励,激励靠薪酬,而薪酬是包含两层意思的 ;工资、奖金、补贴、甚至火腿,这些物质的东西都是实惠的,是我们生活所必需的,是我们最能直接感受到的, 所以,一般情况很多人对薪比较关心。而酬则指的是精神层面的,榜样是指标杆作用,每年所评选的优秀员工、销售状元、优秀项目经理,这些都是标杆、榜样激励,物质上表现并不多,但所得者感到非常有成就感 ;表彰是指对人的一种直接、口头认可,优秀项目经理可能每年、或者每月才评一次,而表扬则是随时随地,有时候我们的工作认可需要即时兑现。情感则是指情义、感情,同生共死是一种情义,《亮剑》中李云龙打小庄战役,身为师长,仍上一线战壕视察阵地,并且这是他多年的习惯,这就是一种情义激励,与战士同生共死,这样的激励影响是深远的,多年后,你 可能记不得你曾经在什么项目中拿过多少奖金,但你可能会记得某某项目经理曾经与熬了多少夜、熬了多少通宵。提升可以理解为职位、职级的提升,也可以理解为知识、技能、经验的提升,不管是哪方面,对项目组成员来讲都非常有吸引力的。我们工作除了为了养家糊口外,我们还有我们自己的理想、目标,我们每天所做出的努力都是在为理想、目标奋斗,因此,对项目干系人最大的激励就是你帮助他在项目中得到提升。