如何让外包项目按时完成?
在亚太地区,绝大部分外包项目都是以一个固定价格来实施的,这种合约模式常常会给企业一个错误的观念:项目延误只会带来不便,不会影响项目投资。实际上,任何项目延误不单是带来不便,更可能会直接影响企业的运作和利益。如果一个新的业务因为软件或相关信息没有准备好而不能如期推到市场上,让别的企业占了先机,这对企业的影响有多大?或者一个项目的开发目的是为了简化内部流程、提高工作效率,项目的延误会延长目前的运作瓶颈,增加企业的运作开支。这些都能直接或间接影响企业的利益,而不单是开发投资是否增减的问题。
欧美地区的外包项目多以实际工作天数来计算项目的投资,因此项目延误会促使项目超支。在这种情况下,避免项目延误是项目经理管理能力的一个重要衡量指标。项目经理需要有效地监控外包项目的进度和风险,才能避免项目的延误,避免额外付出的开发费用。我们可以借用欧美这种管理观念来管理国内的定额外包项目,以保证项目能够在预定的时间内完成。
建立自己的项目计划
作为一个项目经理,千万不要采用外包商提供的项目计划来进行监控,以为这样可以省去项目计划的工作。纵然是外包项目,项目经理也需要亲自制定一个完整的项目计划,才能够知道整个项目的工作量、评估出跟外包商谈判项目的价格、确定好项目需要哪些技术人员、衡量外包商是否拥有充分的资源以及判断外包商所承诺的开发时间是否可行。
企业建立好项目计划,也应要求外包商在项目开始前提供一个完整开发计划。一些外包商为了避免繁琐的文书工作,往往会宣称合约签订前所提供的计划便是整个项目计划。外包商这样做只说明一点:他们并没有一套完整的开发管理体系和项目管理的机制,他们的项目管理人员是一名不太称职的项目经理。任何一个称职的项目经理都应该了解这一点:合约谈判期间所制定的初步项目交付计划并不全面,需要根据项目的实际合约内容进一步进行修改,要补充上实际的工作量、资源的调派和需要的时间才能够成为一个可行的计划。
拿到外包商交来的项目计划后,要详细地跟本企业的计划进行比对和审核,从而了解外包商对整个项目的流程、内容、估计的工作量和资源的安排是否与项目本身的要求吻合。明显的差异都需要及时澄清并建立共识。确认了外包商的项目计划后才能够正式地启动项目,开始对项目进行监控。
关注进度评估
外包合约必须明确规定外包商需要定期提供进度报告。我看过很多项目的进度报告,内容各有不同,但大部分都明确地说明已经完成哪些部分的工作、哪些工作还在进行中、下次报告期间会开展哪一部分工作以及工作是否按时完成,更有采用红、黄、绿等颜色来表示项目进度状态的。这些信息,基本上只能让管理层了解项目的概况,并不能让项目经理全面地把握项目的进度。
我认为,最好是要知道余下来的项目有哪些工作还没有完成、需要多久才能完成、哪些工作还没有开始、是否能如期开始以及计划的资源有没有变动。要是这些答案跟原计划有差异,应该马上进行反思,深入了解还没有完成的工作以及没能按计划开始的主要原因,从而跟外包商进行探讨如何才能够把项目纳入正轨。已经完成的工作,对我来说已经是历史,对项目能否如期完成已经没有多大的影响。还没有完成或者还没有开始的工作,才是项目的致命伤,才需要特别加以监控。
本人最近公司,比较清闲,请教各位大侠,怎样才能接到外包项目,比较容易一点的。
作为一个多年从事外包项目接单的软件开发人士,我想从以下几方面谈谈我的经验,希望对大家会有所帮助。
第一点, 到哪里接项目
软件团队或SOHO最为关心的一点是在哪里可以找到项目做,也就是到哪里可以找到有外包需求的客户。对于一般人来说,广交朋友然后通过熟人介绍还是接项目的第一途径,但这要求你的朋友或熟人要在企业或公司里有比效重要的管理位置,对于像那些每天只能是埋头写代码的程序员这显然是不太现实的。所以大家不能等着项目来找你,而是要主动的出击去找项目。
现在网上有很多软件外包网站,在这里你可以找到不少的软件外包信息。比如软件项目交易网(sxsoft.com)上就有大量的软件外包信,因为这里发布信息是不收费的,所以发包方挺多。不过这里每天外包的项目虽然很多,但竞争也很激烈。一般一个外包信息发出后一天内就会好几个个竞争者,所以能第一时间与客户取得联系是非常关键的。因为客户一般都是先入为主的,一般来说,如果第一个谈项目的人他觉得满意了,就会对其他的竞争者不再予以考虑,所以你要经常上网站上看看有什么最新的项目,并立即与项目的发包方取得直接的联系。其他比如软件外包网、维客网、中国软件网,还有CSDN的外包频道上也有很多外包的信息,大家可以自己上去看看。
第二点, 如何与客户谈需求
接项目最重要的一步是与客户谈需求。客户对软件的需求是项目规划和实施的根本,所以在与客户谈需求时,一定要让用户将所有的想法尽可能的阐述清楚,并把所有的要求罗列出来。这时候不应该害怕“勾引”起客户的潜在需求而增加设计开发的工作量。而应该直接明白地要客户把项目的要求一条条地列出来。这时先把条理、归纳、分析先都扔到一边去,用纸笔将用户最原始、最完整的要求准确地记录下来。假如项目在你对客户的需求没有完全了解清楚的情况下就匆匆上马,那么就会随时发生意想不到的变更,轻则使项目延期或超出预算,重则使得原来已经做好的软件要彻底推倒重来。
所以我们在实施项目之前应该深入了解和挖掘客户需求,对某些不明确的需求要与发包方反复进行讨论,对于项目实施过程中的需求变更要规定处理办法,并形成项目的最终需求。在需求分析阶段,接包方首先对发包方的需求认真分析,然后通过业务建模、会谈、问卷、需求会议等方式收集客户完整需求,形成文档,然后经过客户讨论、客户审查、文档修订等多次反复的过程。有一点需要注意,即使双方谈的很投缘,在讨论需求时也一定要详细周到,精确到每一条不能再划分的软件功能为止。
第三点, 如何合理地报价
在完全了解客户的需求后,下一步就是要确定一个合理的报价。接包方要从跟客户的交谈中尽量地了解出客户的准确意思,思考客户想要的是怎样的一个软件,项目复杂的程度多大,客户的要求有多高,客户的性格如何,能够接受的价格范围等等,这些因素对于软件项目的报价都是密切相关的。如果客户要的是一个小型的软件系统,不太苛求有多全面的功能,只要满足某一方面的需要,并且客户又是一个比较随和的人,那么项目可以报一个接近成本的价格;相反如果客户要求的是一个面面俱到的管理系统,需要有各方面的功能,缺一不可,并且客户又是那种对项目要求严格苛刻,绝不变通的人,那就要充分考虑各种不稳定的因素,报一个比较高的价格。
在很多的情况下,客户在跟接包方谈项目之前,心理都已经有一个价格底线。如果要投入的费用超过了客户的预算范围,客户将不再与你谈该项目,他会转而找其它软件团队商谈。所以跟客户谈项目的过程中要迅速地思考客户需求的真正含义,能够通过某种转换和变通,把客户对于技术的要求与自己团队的技术力量可以接受的价格相对比,从而得出一个双方都能接受的报价。在与客户的谈判当中,灵活变通是成功的关键之一。当然并不是所有的客户都可以通过变通而满足,遇到客户不认同项目费用的情况一定要处之泰然,真诚地为客户解释,把客户的需求细化为技术上的要求给他分析,让他同意你的报价的合理性。即使客户对编程技术不是很了解,但经过你的细致的分析后也会对你的报价表示认同的。