【IT168 技术文章】
信息技术的飞速发展使人们正在享用着众多IT项目的成果,但是多数的IT项目均以失败告终。究其原因,失败一般是由于项目管理上的不规范和认知错误造成。本文从项目管理角度得出,项目范围、项目成本和项目工期这三大变量决定了项目的成败。而其中项目工期上发生的滞后作为IT项目管理中的常见问题,也逐渐引起管理者的重视。
项目概述
项目是一个惟一的、复杂的和关联的具有统一明确目标或目的,并且必须在特定时间里、在预算内、按照规格说明要求完成的活动序列。项目的主要属性是:项目是惟一的,每一个项目都有区别于其他项目的特性;项目是复杂和关联的,存在着诸多不确定、非预期的复杂因素,同时项目的大部分活动与活动之间是相互关联、相互作用的;项目具有统一明确的目标或目的,并且这个目标是可行的,而从IT项目的角度来看,最终的目标是根据客户需求定制一个IT领域的产品或服务;项目受到时间和成本等资源限制,一个成功的项目实施应该要在规定的时间和预算内完成,时间和成本是项目实施的两个约束条件;项目实施要按照规格说明的要求,一个项目的实施应该严格按照用户或发起人的需求,明确项目的任务和范围,范围是项目实施的第三个约束条件。
项目管理是指在指定时间内用最少的费用开发可接受的系统管理过程,内容包括确定范围、计划、人员安排、组织、指导和控制。项目经理要根据项目实施的范围、时间、成本、质量等目标,合理进行资源配置,有效协调各个活动的开展,以满足用户的需求和其他利益相关者的期望。
IT项目进度滞后的关键因素分析
项目进度滞后指的是项目没有在规定的工期内完成符合规格说明和质量标准的产品或服务。项目进度滞后是IT项目执行中的常见问题。项目经理在处理项目进度滞后上通常采取的办法是,添加人力物力等资源,增加成本;或是砍掉某些步骤草草结束,等交付后再慢慢解决出现的各种问题。显然这两种办法都不是理想和明智的。如果能够找到导致IT项目进度滞后的关键因素,防范于未然,将最大限度的减少滞后发生的可能性或者将损失减少到最小程度。分析造成IT项目滞后的原因主要有两种,一是项目经理对于项目的实施计划没有准确定义;二是在项目执行过程中发生偏差或项目范围发生变更。具体来讲,有以下几点关键因素:
(一)乐观主义
IT行业的发展不过短短几十年,可是说是一个新兴的行业,从而决定了从业人员即程序员都是一些思维活跃、带有乐观主义色彩和不怕冒险的年轻人。所以项目进度安排背后的第一个错误假设就是 “一切运作良好”。每一项任务仅花费它所“应该”花费的时间。体现在项目经理对时间的估算上,往往过早的承诺和敲定项目实施的工期,而不给自己留有足够的余地。事实上,当面临大型软件项目时,业务人员之间概念的不一致性和非预期事件的发生,都将导致不出错的概率是零。由于任务之间的关联性,错误将会发生连锁效应。纠正这些错误将会耗费团队成员很多时间,使项目进度发生拖延,有时甚至对滞后的时间跨度都不能预期。
(二)不成熟的项目计划
项目计划是用来协调其它具体计划,以指导项目执行和控制的文件。一个成功的项目应该从制定正确的项目计划开始。项目计划的主要内容包括:明确项目交付物、定义工作包、估算工期、制定工作包的进度计划、资源有效性的管理、成本预算、整合进度计划和预算、定义关键绩效指示器或里程碑、明确关键成功因素。但是从目前的行业趋势来看,大部分IT项目经理是从程序员转型而来,很多人没有接受过该职业的正规培训和教育。在制定项目计划时,过多地依赖以往工作经验或直觉,缺乏数据支持,采用非阶段化方法,对系统开发原理认识不够,不能有效利用项目管理软件辅助进行项目计划的制定。估算项目工期作为项目计划中的一个重要环节,不仅会影响其他计划环节定义上的正确性和精确性,同时也会受到其他环节定义的影响。例如在工作包的优先秩序上,安排不合理使执行过程中的变更导致工期延误。
(三)系统测试
根据软件开发行业的成功经验法则,早期模块、单元测试和系统整体测试的时间应该占到整个工期的一半,当然也包括发现错误后解决问题的时间。但是系统测试却往往最容易被忽略。首先系统测试的工期要按系统出现的错误、缺陷多少而定,存在较高的不确定性,加上多数人员的乐观主义,实际出现的缺陷数量要比预期多。一旦发现的错误数量超出估计,由于这一部分工作受到任务前后顺序的牵制和对任务熟悉程度的约束,导致的进度滞后便很难扭转。另外,由于系统测试带来的进度滞后一般发生在项目末期,这时人力、物力、财力都将要消耗殆尽,筹集资源必定要付出更高的成本。更为严重的是,该项目如果是在即将发布的时候出现延误,所付出的二次商业代价也相当高昂。
(四)人月神话
人月是在估计进度安排中经常使用的工作量单位之一。例如:一项软件项目的总工期是4个月,需要的人员是8人,则该项目的工作量:4×8=32(人月)。在项目发生进度滞后时,项目经理常常会试图通过分配更多的人到项目团队中来解决问题。但是人员和时间的可替代性需要两个前提:首先任务是可以分解的;其次负责任务的人员之间不需要交流、培训。当任务由于次序上的限制不能分解时,人手的添加对进度没有任何帮助。
在任务需要交流的情况下,假设团队中由n个人员需要一对一的交流,那么交流的信道数量将变成n(n-1)/2。这时3个人的交流工作量是2个人的3倍,4个人的交流工作量是2个人的6倍。对于存在于IT项目中的交流,还包括不定期的多人讨论和例行会议,这时情况会变得更糟。
关于培训,每个成员新进入到一个IT项目团队时都需要对该项目的主旨、技术、目标和团队内部的工作条例等进行领会和掌握。这种培训不能分解,而且需要至少一名老员工对他们进行业务指导和培训。因此,这部分增加的工作量随人员的数量呈线性变化。
由于软件开发本质上是一项系统工程,其中各个任务之间的关联性和复杂性需要较大工作量的沟通、交流。如果添加人手,在新成员需要培训的情况下,任务分解所节省下来的时间将不能补偿新成员加入所导致的沟通、培训所耗费的时间。另外,任务的分解也可能使一部分已经完成的工作发生丢失,同时分解后需要进行的系统测试工作量也会增加,因此,添加人手可能会导致进一步的进度拖延(如图1所示)。在项目任务相关程度和复杂程度高的情况下,项目经理在处理进度滞后时,可以考虑在现有团队内部进行任务的重新调整和分配,而不应该盲目使用补充人力的方法。
(五) 用户需求发生变更
在IT项目的实施过程中,用户或利益相关者的需求非预期地发生变化和增长,从而造成项目范围蔓延也是导致项目进度滞后的关键因素之一。这种情况的发生可能是前期没有严格地对项目范围进行界定,分析调研人员没有正确地领会用户意图或是没有成功地引导用户配合做好需求分析,以至于产生项目需求方与项目实施方在项目界定上的不一致。另外,用户自身原因造成的需求变更也是常见因素。这种非预期情况可以通过加强实施方与需求方的沟通,改善系统启动阶段和系统分析阶段的工作绩效,同时以合同的形式对项目范围进行严格定义,明确权责,重视和加强合同管理,免除因为用户自身原因造成的需求变更给项目实施方带来的损失风险。
综上所述,盲目的乐观主义、不成熟的项目计划、缺乏对系统测试的重视程度、对于人员和时间两者可替代性的误解以及非预期的用户需求变更是导致IT项目进度滞后的五大关键因素。除此之外,当然还有其他诸多因素会影响项目进度,比如企业重组和管理人员的调整。排除这些客观不可控因素的制约,IT项目经理在项目管理的整个过程中,应该以严谨的态度进行项目计划的制定和充分考虑可能影响项目进度的主客观因素及造成的后果,加强对项目执行过程中关键环节的监控,提升风险规避意识,提高项目管理能力和项目管理技术。另外,企业应该加强在职培训的投资,力求培养高素质的项目经理和有效的项目团队,使团队能够在合理预期、合理成本的范围内完成项目任务,更好地为企业带来行业声誉与效益。