IT外包作为信息技术越来越成熟和社会分工不断细化的产物,由于IT外包服务供应商相对于一般的公司,在IT服务行业有着非常强的技术优势和极其丰富的经验,通过这种优势,IT外包服务提供商为客户提供的IT外包服务应该说是非常高质量、高效率和全面的。在19世纪,当时非常有名的经济学家亚当?斯密写了一本著作,名字叫《国富论》,在这本书里面他认为社会分工和专业化能够在很大程度上推动生产的发展。如果把这种思想推广到现在,IT服务外包(IT Outsourcing)不就是IT服务的一种专业化和社会细分吗?随着信息技术越来越成熟和社会分工的越来越细化,为了让客户得到全面且更高质量、更高效率的IT外包服务,通过IT外包服务供应商的强大的技术资源和丰富的经验,IT外包市场正在变得越来越大,客户的满意度也越来越高。从有关统计我们可以看出,IT外包服务在提升客户企业的信息服务能力和质量大约15个百分点的同时,可以让客户节约大概9个百分点的预算。
笔者所在的公司就是这样一家为客户提供IT外包服务,特别是客户沟通管理系统开发的公司(以下简称X公司)。X公司是全球领先的客户沟通管理解决方案供应商,为全球 3000 多家不同行业的知名客户提供创新的软件解决方案,帮助他们尽可能地提高顾客资料的价值,提高利润,增加效率,增强顾客关系,简化邮件业务操作。X公司的客户管理解决方案让企业能够直接获取不同系统数据源中的有效数据,并且从这些数据中挖掘出具有高质量、高附加值的商业信息,除了能够有效提高企业与他们的客户直接的沟通效率和质量,这些信息还能够成为个性化营销服务中不可或缺的资源,大大支持了企业的业务高效发展。此外,更加重要的是X公司的客户沟通管理解决方案,能让企业在整合和挖掘其数据资源之后,让这些数据能尽快有效地落地形成个性化的可阅读的信息内容,并通过不同的非常针对性的渠道分发出去。这样的话,这些个性化的信息内容就能够转变为针对性的商业广告,从而将数据成功转变为客户的真实的消费行为,增加了企业的销售收入,提高了企业的利润,同时降低了企业营销服务的成本。
随着公司的发展,公司一般都会不断遇到新的问题。首先,客户要求定制外包的IT系统的开发周期越来越短,但是应用到的软件产品价格和开发人员的成本却越来越高。这使得X公司的项目实施总监更关心项目前期的计划,以确保在项目开始之初就控制并降低风险。其次,由于公司较多接受的客户内部的IT系统的外包项目,因此外包项目的特点决定了需要项目组和客户公司之间的沟通必须顺畅,这样才能降低项目的风险,确保项目按照计划的进度顺利进行。
- X公司IT外包开发项目的管理现状
X公司作为一家集核心产品研发和IT外包项目开发于一身的企业,其在公司内部的管理上将外包项目开发独立成一个部门,部门内人员和资源按照项目进行管理。公司的外包客户采用这种模式开发的目的一般都是从利用公司的技术力量、降低成本的角度出发,但是由于软件开发中有可能存在的一些不确定性因素、软件产品的无形的特性,IT外包服务开发项目通常可能存在以下一些问题,可能造成最终IT产品的瑕疵、并且影响客户企业的今后的使用效率。X公司也不例外,根据笔者的总结,其开发项目管理中经常存在以下问题:
(1)客户的需求定义准确性、全面性、充分性不够
一般的软件开发的需要都是应一些具体业务引起的,因此一般都是由具体业务部门的人员根据本部门的需求提出,经常发生的情况是项目相关部门有多个,但是这些部门之间的人员由于不在同一部门而没有沟通,造成的结果就是需求的准确性、全面性和充分性远远不够。这样的话,在X公司的实施中,外包开发项目前期就确定的需求在开发接近尾声、甚至到试运行的阶段业务部门还在提出变更的需求,最终的结果就是由于系统在开发时频繁地修改造成程序结构混乱,系统也不能完全满足需求,业务部门也不愿意使用,使用效率低下,既浪费了开发成本,也影响了企业信息化的进程。
(2)系统归口管理机制的缺失
客户的IT系统和软件在开发的过程中经常会出现这样那样的问题,这个是正常现象,但是由于企业内部的业务和技术人员不熟悉系统,而IT外包开发商(X公司)则考虑到自身的商业利益,遇到不负责任的项目负责人,就能混就混,抱着不负责任的态度,对没有暴露出来的问题,即使有所了解或者知道有隐患,也不告知客户企业,甚至会故意把问题藏起来。这时候,如果客户企业内部没有熟悉项目、业务和技术的人员,对项目没有反馈和跟踪制度,就又可能造成外包开发系统的设计隐患和潜在问题。
(3)测试的不完整
在IT外包系统开发的过程中,客户企业没有详细的测试计划,测试工作都交给X公司,对X公司开发的软件系统的测试往往在具体使用时才进行,有时只有对部分主要功能有具体、详细的测试,对次要或不那么重要的功能则不进行测试或测试很少。而实际使用的业务部门则由于IT知识的缺乏,可能都不懂得如何进行测试,测试也就不完全了。在这种情况下,系统一旦上线,刚开始阶段系统问题可能层出不穷,造成大量的返工,对系统的实际实施进度和质量会造成很大的影响。
(4)、项目文档、项目知识交接不全面
在外包开发商系统开发阶段、测试修改阶段和完工系统移交业主的过程中,有些没有经验的外包开发商会对撰写必须的文档资料不够重视,文档资料只提供合同中明确写出的那些,而且撰写的文档资料可能又不够详细,使得最终开发好的系统的如何使用、如何维护的知识只由那些参与了系统开发的企业或外包开发商的人员所掌握,但是由于没有形成文字的资料,本该显性的知识变成了隐性的知识。由于人员的变动,就有可能对所开发的系统的后续的维护和使用造成重大的困难。X公司不可避免的也部分存在这个问题。
笔者分析这些IT外包软件开发企业(包括X公司)项目管理的问题,不难看出其形成的一些主要的原因:
(1)、企业内部各部门的沟通和配合不够完善
由客户的技术部门负责主管的项目,这在具体业务部门看来是“技术活”,业务部门普遍认为和软件系统相关的事情都是纯技术的,和业务部门的人员基本没有关系,由此导致的结果是具体业务部门需要而且主管的软件项目,技术部门有对软件应用系统的开发不积极配合,抱着多一事不如少一事的想法。此外,最直接和业务相关的业务操作人员对系统的看法又不能直接传达到项目开发团队的耳中,造成最终的系统不能符合操作人员的有效使用。
(2)、企业缺少复合型的人才
专门的应用系统软件的外包开发,项目的负责人不但要掌握项目的管理技术,还要了解客户企业内部的流转流程,同时还要对系统开发中需要用到的关键技术了如指掌,这样的复合型人才才能胜任项目的负责人的位置。但是对一般的外包开发企业来说,复合型人才非常稀缺,经常是懂软件系统开发的人却完全不懂企业内部流转流程,熟悉企业内部流转流程的人却不熟悉软件的开发,拥有项目管理技术的人,又只懂技术,对企业内部流转流程又不了解。而外包软件开发商往往只对客户企业内部的流转流程了解部分,但是却又不完全,而且在项目开发过程中由于要抓紧进度,对项目的质量又疏于进一步的管理。
(3)、不够重视知识的转移
很多人认为,开发一个软件信息系统,只不过就是找些程序员写写程序而已,其实这种思想大错特错,除了程序的编制以外,项目开发的同时必须编写一套完整的文档资料,用于系统正式使用之后的日常应用和维护工作。这套完整的文档资料应该与软件信息系统的开发是完全同步的,同时里面的内容也应该与程序的编码一一对应。项目的开发人员在开发完成后可能不会再负责系统的维护,那么对于系统今后的维护人员,这样的技术文档就是非常珍贵的,不然可能在维护过程中发现无从下手。如果文档资料没有同步编制或者编制得不完整、质量不高,则对系统使用过程中的维护工作带来重大的影响。在实际工作中,有些不负责任的IT外包开发商都不太重视技术文档的编写,而且如果客户企业内部的相关业务和技术人员也对此也认识不足的话,可能发生的后果就是在系统正式上线后,能够使用系统的人员非常少,而且只能通过师傅带徒弟的方式手把手地传递使用方法,对信息化的推广带来了不利之处。
(4)、科学、有效的管控机制的缺失
一般的客户企业,由于其对信息技术领域的经验不足,很可能没有制定软件项目开发管理的标准,对软件项目的管理比较随意。那么这样的企业如果由外包开发商来帮助开发信息系统时,可能就会对外包开发商不能进行的有效的控制。而对于外包开发商的软件开发人员来说,如果责任心不够或项目负责人不能好好管理的话,又可能因为赶进度或者成本节约的原因,常常采取权宜之计,设计时只考虑当时的状况,而对未来不作通盘详细的考虑,这样开发出来的软件系统虽然能够满足当下的业务的需要,但是稳定性、扩展性和兼容性都相对比较差。
- X公司IT外包开发项目进度管理中存在的一些问题
基于以上的一些分析,笔者认为在IT外包开发项目的进度管理层面,X公司也存在如下一些问题:
(1)、由于制约因素多造成的管理不到位
在项目在实施过程中,影响进度的因素很多,比如自身的管理水平、员工的技术水平、人力资源需求状况等等。有的时候,X公司对这些问题并没有什么积极有效的措施,往往是一个因素影响了就会产生一种“共振效应”带动其他因素的影响。在事前没有很好的进行分析,制定应急计划,等事情发生了才手忙脚乱不知所踪。管理组织上不能够保证进度目标的实施,人浮于事,重关系轻能力现象严重,导致执行能力很差。项目成员只关汁自己是否得利,而不管项目目标是否顺利实现。
(2)、对工作量的估计不足
出现这种情况,大多数是由某个项目的制定者的专业素质不够和项目实践经验少所造成的。在X公司的项目开发中,往往因为成本以及其它一些原因,项目经理的位置上很难找到行业内具备较高水准的人员。因此需要有项目经验非常丰富、对业务又相对熟悉的人员来制定项目的计划和工作流。
(3)、没有把握好进度、成本、质量之间的关系
项目的进度和成本、质量之间是相互联系的,可以说在理论上大家都知道成本与进度之间的关系是加快进度就要增加成本。因为要采取赶工措施要花费一定的费用:进度与质量的关系是加快进度会影响到工程质量的高低,由于人员的高强度作业改变了施工条件,可能就会影响到项目的质量,可是在实际的施工过程中,X公司的项目管理者有时没有花费心思去思考怎么样使这三者之间的关系达到一种均衡。要么重质量要么抓成本,要么赶进度,总之是没有把这三者综合考虑。
(4)、在项目实施过程中的监控力度不足
有了合理的项目计划,却不能按计划实施,那么肯定是执行力的问题。为什么会产生这个问题呢?
① 项目经理的进度管理能力不高,组织及协调能力差,也不能实现工作的良好分解,应变能力也差一些。很多项目经理是技术人员出身,可能对具体的编程非常擅长,但是对于项目的进度的控制能力则有待于提高。
② 没有形成良好的计划执行监管机制。对项目的管理笔者认为是一种反馈系统。首先是输入,即项目计划的制定;然后是项目计划的分阶段实施;再后是每阶段的项目计划执行结果显示;最后是针对该阶段的输出结果进行考评,然后与原计划对比,进行纠正。这就像是一套循环反馈的系统。如果没能按照项目的计划执行(当然前提是计划是合理的),那么往往是这个管理机制出现了问题。试问一下,你们的计划是分阶段拟定的吗?你们拟定了每个阶段要完成的里程碑了吗?安排相应人员针对不达标的标准进行纠正了吗?项目的进度需要分阶段的来监控。
③ 对于意外情况的处理
意外是肯定会发生的,有句老话,叫计划赶不上变化。一般的处理方式是提前打好时间上的富余量,在做计划时尽量考虑可能会发生的意外情况,提前做一下准备。考虑的越全面的计划,其可行性就越高。这是由参与制定项目计划的管理人员水平所决定的。
-X公司IT外包项目进度管理改进措施
1. 设置项目进度控制专员
如果要对项目进行进度控制的话,最重要的是一定要有进度控制人员,并且确定项目团队之内或之外的这些人员的组成,同时把详细的进度控制管理任务明确到个人,因此笔者在X公司内部提出了设定进度控制专员的想法,并且得到了实行。此外,要确定项目进度信息的管理制度,这些制度就包含了信息的报告和反馈,由进度控制专员具体负责。另外一点就是要选择恰当的项目进度统计和预测分析的技术以及相应的工具,以此确定项目进度的控制法。
提到项目的进度控制,我们首先想到的是必须对项目进行有效的计划,同时要取得项目一线的最真实的信息,有了这些信息,我们可以把计划的数值和实际的数值进行横向的对比,从而能够检查、分析项目的进度,最终作出符合实际的评价。我们可以通过以下这些方式,例如沟通、批评、奖励、肯定、惩罚等,来监督项目的进度,并对项目进度的发展进行影响。如果在这其中发现与,计划值发生了偏差,就要通过改进纠正偏差,同时我们也可以通过相应的工具预测可能的偏差,从而预防偏差的出现。
项目进度控制专员一般由部门的领导和具体项目的负责人组成,或者由项目负责人指定明确的人员负责,部门的领导来参与项目进度控制的工作,主要是考虑到部门负责人一般对项目成员能够进行直接的考核,同时和成员的升职和事业发展息息相关。部门领导参与进度的管理才能使得进度管理更加有效,同时也能通过项目更深入地了解成员的工作能力。
2.完善项目进度管理的内容
在X公司的外包服务团队中,我们把项目进度管理的内容主要分成这几方面,比如项目的技术管理、项目的信息管理以及项目的组织管理。
项目的技术管理,其最重要的部分是对项目参与人员的管理。IT外包项目的开发过程中难免会碰到一些棘手的技术难题,可能一般的技术人员无法解决,在这种时候就需要一些资深的、经验丰富的、技术能力较强的项目成员参与其中,他们的作用可能不仅仅是解决这些技术难题,更重要的是对这些技术难题的出现或者规律作出总结归纳,并提出相应的流程来预测下次出现难题的可能,同时制定相对应的解决方案。对项目进度控制的能力其实也能从很大程度上保证项目实施进度的按计划推进。
项目的信息管理指的是在项目的开发过程中,项目的开发团队一般不负责合同方面的事物,企业都会设专门的合同管理部门,合同管理部门主要对项目的合同期进行控制,并协调项目的进度计划。项目的负责人则需要经常从合同管理部门得到项目计划进度,并将其与项目的实际进度进行横向的对比,从而得出项目是否延期,并实施相应的措施保证项目的按计划进行,同时项目负责人也要定期把项目的进度报告提供给客户。
IT外包开发项目的进度控制的信息管理,最重要的部分在于如何掌控项目进度制定和调整时的资料信息。这些资料信息主要包括预测信息、统计信息和决策信息。预测信息是指在项目进行中预测各个子项目和不同阶段的作业的工作量、先后关系、风险系数和工作难度。决策信息则是在发生不在计划内的突发状况时积极应对,并提出相应的决定。对于外包开发项目而言,决策人员一般包括企业的部门经理、项目负责人和客户的项目负责人等。所谓的统计信息,在外包开发的项目中,一般由参与实施的外包开发方的人员来负责具体收集,收集之后由专门的统计人员进行检查核算。而项目的进度报表则是通过对这些统计信息的分析和整理,在此基础上完成的,一般的进度报表可以以按日、按周或者按月的时间跨度来统计和分析。进度报表是开展进度控制必需的条件。
而对于组织管理,主要包含这些部分:
(1) 项目的负责人对项目的进程进行监督,并在必要时进行控制;
(2) 项目负责人分析对项目的进展有影响的原因并找出可能的风险;
(3) 项目的负责人要确定如何协调项目的进展,并定期组织会议进行进度的协调。
a)、优化项目进度控制的手段
为了控制项目的进度,作为X公司的各个外包项目组的负责人,一般会采取以下一些措施,例如制定项目的计划书,撰写项目进展报告,绘制项目甘特图等方式。
项目经理或者说项目负责人是负责制定项目计划书的主要人员,项目计划书是控制项目的进度的标准和根据。制定出项目计划书以后,则由项目的进度检查人员依据它来在项目的进展过程中检查和控制项目各阶段的完成状况,如果项目节点的完成因为这样那样的原因提早或者滞后,项目的负责人则应该根据进度检查人员的反馈结果提早做好项目计划的变更。如果项目的进度发生超前或者滞后,项目负责人必须对进度的超前或者滞后的原因进行分析,并且提出如何消除这种进度差的应对的策略且付诸于实施,争取以最快的时间把实际进度和项目计划之间的偏差消除。当然,如果在项目的实施过程中发现项目的计划不符合实际,则应该尽快由项目负责人对项目计划进行修改,以保证项目计划作为一种项目执行标准的有效性。
项目负责人向项目的业主或者公司管理层定期提交项目的工作报告,或者也称作项目的进展报告,该进展报告一般在预先确定的时间点提交,根据项目的不同,X公司的报告间隔可能是每星期、每两个星期、每30天、每60天、每90天、每半年或更长时间段。该进展报告作为例行的文档,由项目负责人在与项目的参与人员或者相关方面人员沟通(会议或电话)后,由项目负责人撰写并提交。其主要内容一般是项目进展中发生的问题、项目上一时段实际实施情况、项目下一时段的计划工作安排、主要的问题解决方式、需要管理层或者相关方协调的事物和资源、其他未包含在以上内容的情况等。进展报告会由公司相关人员进行归档,并作为项目的重要资料备用。
在X公司的各实际项目实施中,经过笔者的建议,项目大多的是使用甘特图比较的方法,把检查实际进度中收集的信息,经整理后直接用横道线并列标于原计划的横道线一起,进行直观比较。
同时,在实际项目进行中,使用跟踪甘特图的方式,对项目实际进行的状态与项目计划不断进行比对,同时采取必要措施,把项目的实施进度与计划之间的差距不断变小,从而保证项目的按计划完成。
总而言之,在X公司的实际的项目实施过程中,以下几点内容可以帮助我们更好地执行项目的计划:
(1) 、随时监控,确保得到项目进度实际的第一手资料。这实际也是对项目掌控能力的一种反映,项目的负责人如果无法得到项目的实际进度,则对于项目的实施会带来重大的影响。同时,这些项目进度的信息必须由专人记录下来,并作好统计,项目的实际进度信息对项目的总结以及提高今后项目计划进度的编制能力有着非常重要的意义。
(2)、项目的实际进度信息经过统计后,项目负责人应该将其与项目的计划进度随时进行比对,分析项目的进展是否过快或者过慢,以及过快或者过慢的原因。其实这也是项目负责人对项目计划的定期检查的有效方法,从而起到监督项目实施的作用。
(3)、如果项目经过进度检查,发现其实际实施与计划之间有所偏差,这时项目负责人必须考虑补救的方法并且需要马上将这些方法付诸实施。补救的实施必须及时,否则这些偏差如果累积的越来越大,则可能需要更多的资源进行补救,因此在偏差在可控范围内时就将其弥补。同时补救的方法必须符合实际的情况,不能以牺牲项目今后进展的方式来实现。如果发现这种偏差是由于项目的计划制定引起的,在计划制定时就没有考虑周全,或者由于客户的原因需要增加或者调整需求,从而引起了执行的偏差,这时项目负责人应该与管理层和客户协商,重新调整项目的计划进度以保证项目实施进度的健康。
b)、分阶段实施项目进度控制
如果我们把项目进度控制从时间上来分的话,IT外包开发项目的进度控制应该可以分为以下这些部分:(1)项目前期准备的进度;(2)需求分析和系统详细设计的进度;(3)实际实施阶段的进度,X公司的各个项目的进度控制也就是从这些方面入手的。
在项目前期准备的部分,这个阶段最主要的任务包括了解客户对项目的预期,向客户介绍项目的情况,与客户一起确定整个项目的总体目标,同时在这个阶段,还要完成项目总体进度计划的编制。
在需求分析和系统详细设计的部分,这个阶段最主要的任务包括制定与客户定期交流的计划、设定需求分析设计的进度、设计项目详细的工作进度,同时还要严格执行这些计划控制。
在实际实施进度的部分,这个阶段的最主要任务是根据制定好的项目实施进度计划执行并且严格遵照其步骤来进行工作。同时项目开发方和客户直接要定期沟通,保证双方都按照事先确定的计划进度执行,如果发现偏差,需要协调后同步调整,以保证目标的按计划完成。增强项目各个方面的协同工作的能力,能够保证在项目的进展过程中,及时地发现项目中出现的各种情况,并且尽可能快的解决它们。因此协同工作的重要性也从中看出,它是实现项目计划的非常重要的一环,它能使项目能够顺利地实施下去,并且适应项目进展中的各种变化。
c)、进度落后时的“赶工”措施
在一般的公司中,如果外包开发的项目进度发生了滞后,普遍的应对方式基本上包括了增加开发人员、让开发人员超时工作、增加物质奖励、提高开发人员待遇等方法,这些方法虽然在一定程度上能够起一些效果,但是会白白增加企业的资源投入。举个例子来说,如果某项目发生了进度滞后的情况,项目经理不加分析地增加开发人员,有时可能适得其反,反而更加拖延项目的进度,这是由于一般情况下新加入某个项目的开发人员,对于项目的基本情况可能都不甚了解,对项目的背景和环境不能和原先的开发人员一样熟悉,这样就会大大增加项目开发团队的各成员之间的交流,老开发人员可能需要花费大量时间和精力来为新开发人员转移项目知识,造成成员工作效率的下降。同时,如果开发人员超时工作,同样会由于精神和体力的疲劳造成工作效率的下降,提高开发人员的待遇则会大大增加项目的成本。在X公司中,这些方法也不是完全不能使用,但是项目经理需要统筹考虑,并且在使用上要适度,最好的方式是项目经理应该有自己的分析,到底是什么造成了项目的进度延迟,例如在X公司的一个实际案例中,客户对需求的不断修改造成了工作量的上升并造成了项目完工的推迟,这时项目经理就及时和客户进行了沟通,要求增加项目的开发时限并增加项目预算,只有这样才能保护项目开发人员,让他们不需要疲劳工作,同时也提高了工作的效率。