外包工作总结
一、为什么要外包,以及外包的优势是什么?
从公司业务不断的发展壮大,软件项目越来越多,而公司内部平台组软件人员较少,实在无法完成这么大的项目量,这也将面临一个较为困扰的问题,从而想到一个新的路径,用软件外包的方式来解决现有问题,并商讨后使用此方案。软件项目外包优势主要体现于对公司软件人员量需求、快速开发能立竿见影的效果、加快系统上线的周期、以及解决技术上的一些难题。
二、软件项目外包过程中需要做哪些工作?
首先需要确定客户的需求,进行整合归纳,完成设计图、及功能说明文件等,然后交予外包公司查看定价、待商榷谈妥后,走公司外包流程经领导审核确认、并签订外包合同后,开始项目开发流程。
在项目开发过程中需要及时沟通、探讨方案,跟进和督察外包项目成果及进度,定期向客户汇报我们的项目开展情况,有时需要根据客户的需求进行临时调整,对开发的设计及做以修改或改进;当外包公司遇到解决不了的问题或技术,及时探讨查找资料突破难关;经过多次测试后发现开发的Bug或与设计思路不符合的加以调整,才能发布上线给客户使用;开发完的代码首先需要进行质量检查,再合并到我们现有的整个系统中。
三、外包工作中出现了哪些问题?——情况细节阐述
生态视窗项目初期,该项目资金不多,我们根据客户的需求对本系统定义范围较小,由于后期逐渐增加很多比较强大、灵活性、特殊的需求调整和变化;类似于国家站平台开发一样,很多需求客户不能完全确定,大家都在探索怎么设计才更合适,所以开发的很多功能设计及业务都做过很多调整,而且并在原有系统上不断的增加功能,导致系统架构、逻辑、结构改得面目全非。
常见问题例1.用户操作使用时,程序出现Bug问题导致数据库删除掉不该删除的数据或者修改了其它与本操作无关数据、新增了重复数据等问题,需要长时间去核对。
常见问题例2.外包的项目基本上都是快速开发,为了完成任务式开发,未多考虑过开发的东西是否是客户想要的结果。
我们系统越来越庞大,针对新开发功能并与外包功能从设计上都需要进行整合,控制整体思路一致性;外包开发人员水平参差不齐,因此开发的功能方面会有很多问题,与实际需求思路不一致、系统整体关联性差(对功能理解不深彻)、代码质量较差、为了快速完成任务的方式开发、修改或新增功能会影响到其它功能Bug问题、系统功能响应速度慢、积累项目多问题响应效率慢,再加上我们的需求会根据客户需求变化大和需要再扩展的功能也多、有的功能临时加急修改等问题,导致外包项目质量更差,所以会导致我们需要更多时间去测试、督促和把控。
如我们平常用到的手机一个个版本的不断更新一样,融入更多的元素和内容,如软件塞班系统平台、安卓系统平台及硬件更新变化,都在不断的变化和升级;我们的客户需求也是在不断变化,要求更多更好,流程且多变,多种方式都要兼容,日常各种细节问题都要考虑,做入系统中,太多不确定,只是要灵活,交互体验等改进大、功能修改补充多;现在系统越来越庞大,修改个Bug也许会影响到其它功能等,整个项目应需求一个实力强的架构师、业务分析师才能把系统建设得更好。
之前公司软件外包的项目少,并外包项目管理比公司内部项目管理更难管理,开始不熟悉怎么管理以及标准管理流程,后面经过多次的外包合作,长期的积累,总结了一些经验及流程。
四、软件项目外包公司的通病
从这个角度看,外包公司不可能跑得很快,需要成本利润控制,当前费用觉得不太满意,你在一家很难规模增长的公司里,就很难享受到公司快速成长的红利。
外包的风险在于: 1、在转型期和以后的时期,为使外包顺利进行,与外包有关的成本太高; 2、内部信息系统的专业能力流失; 3、失去对信息系统的控制,形成对开发商的依赖; 4、外包商可能倒闭和破产;
一个成熟的软件公司,项目实施流程,包括:按照CMMI标准流程执行;要使用的产品需要经过仔细测试。
五、外包经验汇总:
一些项目经理往往认为外包开发项目与企业内部开发项目的管理没有多大分别,唯一不同是外包项目需要更多时间去沟通、协调、跟进和监控。总体来说,这种想法是对的,但事实上外包项目的管理比企业内部开发项目的管理更复杂,担负更大的风险,需要更紧密的进度和质量监控。
保障沟通内部开发项目所需人力资源大致分为两组:一是技术人员,另一组是配合技术人员的业务人员 ( 他们是所建信息系统的潜在用户 ) 。外包项目除了需要部分技术人员和用户群体参与外,更增加了一组外包商的资源。有些外包商更会指派一名联络人员负责联系与协调,而他们的技术人员只在后方负责项目的开发。这种运作模式要尽量避免,因为外包商指派负责联系的人员往往是业务人员的背景,对技术的细节不能全面把握,把有关信息传达到技术人员的时候便会有所差异。所以我们的首要任务是让外包商明白负责项目联系的人员必须是开发小组的主管。这名开发小组主管是直接参与开发项目的主要人员,如此才能够有效地进行沟通和监控。
做好计划项目经理首先需要做出一个详细的、完整的项目计划,并在计划中详细地列清楚每一件工作需要哪方面的哪些人力来共同执行。在计划中的每一个进度都需要进行确认才能继续。例如外包商在完成系统分析后,需要把分析的结果让客户理解,好让企业能够确认外包商对整个系统的理解和分析与企业本身对项目的需求和分析达成一致,这样才能让外包商进行其后的模块设计。不然设计出来的模块组合便有可能与企业的需求不太一样,存在质量和最后上的差异。这些差异也将会引发企业将来在系统维护、更新、增加功能模块、升级、集成等各方面的严重问题。避免延误要避免项目发生延误,计划中要预留足够的时间来进行上述确认工作。由于双方工作地点的缘故,原本只需一天的确认会议便可能耗费两天或三天的时间来完成。议程中所达到的共识也可能需要时间来让外包商做出适当的修改才能让企业正式确认。也只能在正式确认后才能够进一步继续接下来的工作。
经验主要有以下五个方面:
结果导向要事第一,明确核心需求,制订里程碑计划,加强沟通,保证需求与实际开发结果一致与项目成员保持良好关系随机应变,风险前置
一、结果导向
对于外包项目来说,所要的结果只有一个就是按时上线,但这里需要给自己加个要求,要保证质量按时上线。大部分人对于外包项目听起来都会有一种不屑的感觉,认为做外包的只注重钱从不在乎质量。其实不然,很多做外包项目都知道,如果你做出一个垃圾产品出来,你们整个团队可能就凉凉一阵了。
产品经理目标可大致有两个,前期,找到用户的实际的核心需求。后期,保证项目质量按时上线;项目经理则是以项目上线为最终目的。
作为你的老板想要的结果也大致有两个:
第一,成本,项目投入的人力是多少,周期多长;
第二,项目最终是否按时保质保量完成上线。
老板要根据第一点确认这个项目到底是赚钱还是赔钱,要用第二点来保障能与客户保持良好的合作关系。对于做外包项目的公司这两点尤其重要,所以产品也要注意好着两点。
二、明确核心需求,制订里程碑计划。
首先,找准核心需求,逐步完善细节。确认需求阶段,从核心需求出发。保证产品没有偏离客户的真实需求,这一点我认为是一个产品的根本。核心需求一旦确认,细节方面便可以逐渐完善,甚至在开发阶段进行完善都可以。
其次,制定阶段计划。在与开发确认完工作量之后,根据功能清单和接口清单,制定开发计划。按照功能模块,制定相应的阶段计划,无论是前端还是服务端必须保持同步。
这里说的同步是:在阶段计划的完成截止时间,必须保证前端和服务端这一阶段工作已经全部完成。
可能服务端快的话已经进行下一阶段开发了,那么测试和验收人员这时候可以进行这部分工作验收。发现了问题一定要指出来提bug,让开发在下一阶段工作进行的同时完成这些bug修改,让开发对自己做出的东西负责。
三、加强沟通,保证需求与实际开发结果一致
加强沟通主要有三个方面:
首先,要与客户进行充分的交流。需求确认阶段,确定核心需求,逐步完善细节,一定要不厌其烦。不然到了开发阶段,客户突然说,这个非常重要的需求你怎么没有加上。如果这个功能比较复杂,那么这时调整一定会对整个开发过程产生巨大影响。
第二,与设计开发和测试做好沟通,首先是产品和设计的沟通,所有的需求变更要先和设计进行确认,保证设计稿的正确,然后,产品设计内部确认之后,通知开发和测试人员,可以是在QQ群通知。
第三,与领导加强沟通,学会借助外力。有时候,客户会突然加一些需求,但你没有足够的人手。这时候你不能直接答应,而是需要找领导说明情况,争取资源,是调配人手还是拒绝有你老板决定。
四、与项目成员保持良好关系
这一点十分重要:在产品方案确认的过程中甚至是开发过程中,可能会出现争执,甚至争吵,但一定不要恶意人身攻击。其实一个项目中的成员就像一家人,大家有着共同的目标,并为之努力付出。
五、随机应变,风险前置
随机应变,没有一层不变的开发计划,这应该是互联网产品行业的共识。面对需求的变更,如何做好调整保证项目正常上线,是产品和项目经理必须要考虑的问题。
如何降低需求变更所带来的影响总的主要有三点:
制订开发计划的时候预留出一定的时间;需求变更按优先级与客户确认,需要延长开发时间的与客户提前说明,是延长项目开发时间还是暂时不做与客户商量明确。对于人手不够完成变更需求的时候,与领导沟通,说明情况,协调资源。风险前置,我亲眼见证过这样的情况,在进行一个项目的时候,前期就是一直的开发,开发,开发。测试期就拼命地改bug和开发,开发拼命的加班填坑,眼见要上线,回头一看还有300多bug,只能和客户商量延期,结果可想而知。
造成这种情况的主要原因是测试与开发过程的完全分离。把测试放到最后进行,虽然留给测试和修改bug时间超过两周,但往往是做了两周发现各种坑没填,开发并没有真正完成全部工作,结果就是测试时间变成了开发时间。
对此,我想说,要保证项目按时上线,测试验收必须要尽早加入进来。把修改bug的事情放在整个开发过程中进行,保持整个项目开发过程的紧张度,对于周期比较长的项目,开发人员很容易出现懈怠的情绪,作为产品和项目要给开发一定的紧张感。
最后,说了这么多,可能自己见解也是十分片面,关于项目管理和产品我确实还有很多路要走,望同事们共勉,一同努力,在产品的道路上越走越远。
1、把今年所有外包项目的情况介绍一下。包括:项目名称、最终客户名称、项目金额、项目开发周期、项目状态(开发中、带验收、验收完毕、最终客户验收完毕等)等等。
2、总结每个项目的残留问题以及对应措施。
3、总结项目外包给带来的好处。
4、总结项目外包的不足以及改进方案。(从公司内部和外包单位2方面进行分析)。
经典文章:
从软件工程的角度解读任正非的新年公开信