“外包”,这个词绝对可以被收录到2006年IT流行词之列,在今年的各大专业媒体上,这个字眼的出现频率出奇地高。2006年即将随着圣诞节气氛的渐渐来临而结束,盘点IT,盘点2006,业内风起云涌,变幻无穷,新技术,新思想,新动态层出不断。本文作者站在一个程序员的角度,面对业内汹涌而来的“外包”浪潮,与程序员和即将成为或想要成为程序员的读者朋友们共同探讨和分享业内形势和应对措施。
(一) 现状
全球产业结构的调整,特别是发达国家企业为了节约成本,尝试将企业的IT服务外包,促进了全球软件外包服务产业的快速发展,这也给中国创造了良机。预计2005-2009年,中国软件外包服务产业快速成长,整体市场规模将以40%的年复合增长率高速增长,2006年,中国软件外包服务产业规模(不包含嵌入式)将超过13.6亿美元。
目前,中国的外包市场呈现出以下两种特点:
“发包市场结构集中化”,即来自欧美和日本的业务,在总体中所占的比例将继续提高。国内的计世资讯研究发现,2004年,来自欧美和日本的业务占总体外包业务的83.9 %,预计2005年将增加到85.9%。一方面,随着欧美发包企业更多的在中国寻找合作伙伴,以及中国企业进一步开拓欧美市场,欧美发包市场的比例将继续提高;另一方面,日本发包市场规模仍将稳步上升,其上升步伐和2005年一样,但继续低于欧美发包市场。
“区域市场结构分散化”,即外包业务将逐步向国内二线城市转移,区域市场结构逐步分散,以大连、北京、上海为中心的东北、华北、华东三个区域市场的比例将下降。计世资讯的一份研究报告指出,2004年,东北、华北、华东三个区域市场合计的比例高达87.6%,预计2005年将下降到75%左右。随着中国软件外包服务产业的发展,北京、上海、大连等地的人才缺口进一步加剧,引起人力成本的提高。而外包产业的目的就是为了节约成本,其中最关键的因素就是人力成本。为此,国内外包企业将尝试在华中、西部等区域的城市开设分公司。
(二) 趋势
随着软件和信息服务外包产业进入迅速成长期,北京、上海、大连、深圳等一线城市已经很难满足整个产业发展所需的人才资源,产业加速向第二梯队城市转移,而天津、武汉、西安、长沙、成都、重庆等城市,有望成为外包产业发展的第二梯队。
外包产业的转移,最根本的原因在于更大程度的节约成本,软件和信息服务外包产业的形成,就是企业为了节约运营成本,而将企业IT外包所致。
一方面,外包产业的转移是由于一线城市低成本人才短缺引起的。外包产业迅速增长所需的软件人才数目巨大,单单依靠一线城市自身,很难满足。计世资讯预计2006年中国软件和信息服务外包产业增长率将再次超过40%,这对于北京、上海、大连、深圳等外包一线城市来说,是一个利好消息,但也将进一步加剧当地外包企业对低成本软件人才的争夺。例如,北京预计到2006年底,外包产业从业人员和上一年相比,将增加近一万人,而这里面绝大部分都是软件工程师和软件测试工程师,这对于软件人才本来就短缺的北京来说,难堪重负。因此,许多北京的大型外包企业纷纷在第二梯队城市开设新的分公司。2006年5月,神州数码在西安软件园的分公司开始运营,6月,北京博彦科技集团在天津新技术产业园开设了天津数据录入中心,而成都东软软件园产业区也将于今年全面竣工。
另一方面,外包产业的转移,也是第二梯队城市发展的需要。软件和信息服务外包产业,和“制造业外包”有些类似,对于人才的需求量很大,是解决当地人才就业的一个良方。另一方面,引入软件和信息服务外包产业,还可以优化当地的产业结构。因此,许多第二梯队城市纷纷出台各种优惠政策,从而吸引外包企业入驻当地软件园,开设分公司。例如,成都市就为发展软件和信息服务外包产业创造了良好的政策环境,相继出台了《成都市鼓励软件产业发展的政策意见》、《成都高新区鼓励软件企业在天府软件园聚集发展的扶持政策》,给外包企业免除部分税收,降低租金等。
通过以上的分析,相信读者朋友们已经对整个软件外包市场有了一定的了解。正因为软件外包市场正处于高速发展期,人才的缺口也越来越大。但是,目前人才市场上普通存在的供需矛盾依然存在:刚毕业的计算机专业人才到处奔波却找不到对口的工作;急需用人的企业到处搜索却找不到合适的人才。这种供需矛盾的加剧就促使了用人企业对在职人员的争夺:一方面,外包企业委托猎头到处搜罗在职人员的信息并进行游说;另一方面,在职人员所在的公司千方百计地想留住在职人员;于是,受惠的当然是在职人员了,薪金、待遇方面均有所保障;就算跳槽也可以得到不错的待遇。这也是我等程序员目前所欢欣鼓舞的事情了。
(三)如何应对
一、入门级攻略
1.心态,心态,还是心态
这包括了两部分的内容:工作性质和工作内容。
1.1 工作性质
软件外包不外乎于两种形式:项目外包和人力(HR)外包。欧美和日本的外包市场以项目外包为主,国内的外包市场以人力(HR)外包为主。项目外包开发流程和软件开发企业内部进行开发的流程相差无几,笔者想要说的是人力(HR)外包。人力外包要求接包方的开发人员要进驻发包方的开发团队,与发包方的团队一起进行开发。这里,就会出现发包和接包方的开发人员之间的区别。发包方的企业一般都较有实力,办公环境,福利待遇等方面都是较好的;但这些,接包方的开发人员享受不到。这之间的心理落差非常大,发包方和接包方人员的工作内容相差无比,但是待遇方面确有区别。笔者曾经有过这样的工作经历:因工作需要,笔者以人力外包的方式被派到了国内某大型电信运营商的项目组进行开发。上班的第一天,笔者与他们的开发人员的差别就非常明显了:笔者使用从仓库中领出来的破旧机器,机器配置差,显示器是球面的且有质量问题;他们的开发人员使用的是IBM品牌机,显示器全是清一色的液晶,且每人还配备了一台笔记本电脑。他们正式的员工可以无限制地上网查资料(或干别的),而笔者要上网的时候则必须去使用一台公用的机器并进行上网登记。种种迹象表明着笔者和他们开发人员之间的差异。通过笔者的了解,这种情况在人力外包过程中是经常出现的。发包方本着节约成本的方针需要人力外包人员进驻,当然相关的待遇不能和他们本身的开发人员相提并论了。
这种情况,心态很重要,不能因为外部环境的差异而影响了自己的工作情绪。试想,自己本身就不属于发包方的一员,又何必去在乎之间的差异呢?只要把工作做好,一切都OK了。况且,这样的情况是无法改变的,耿耿于怀也是徒劳。只有摆好自己的心态,全身心地投入到工作中去才是正道。这个时候,应该站在自己公司的角度考虑问题:发包方是我们的客户,不能因为客户方与自己之间待遇的差别而影响了之间的合作。越在乎与发包方开发人员之间的待遇问题反而会受到发包方人员的BS(鄙视);反之,则能为他们带来一种非常专业的印象。何乐而不为之呢?
1.2工作内容
大部分发包出来的项目是工作量大且相对简单的,或者是发包方将概要设计或者详细详细设计都已经制定好,只等编码了。还有一些项目就是对以前的不理想的代码进行重构。在欧美的外包项目中,文档是一块非常重要的内容,客户希望得到了一个质量有保证的项目,如何证明? 除了验收测试之外,开发过程中的所有文档都是证明。这与很多程序员期待的工作内容大相径庭:希望能亲身经历一个项目从需求分析、概要设计、详细设计的全过程,也希望项目中用到的新技术越多越好。这些都跟程序员中普通存在的浮躁心态有关。但在从事软件外包项目中,这种心态的存在会严重影响项目的进展。一屋不扫,何以扫天下?只有将已细化的工作内容做得完美,才能体现出程序员的价值。笔者的一个朋友在外包项目中只负责JAVASCRIPT部分,对于他的工作内容,我当时是不以为然且认为是毫无前(钱)途的。两年过后,出人意料的是,他已经是这方面的权威了,月薪也超过了10K,因为所有这方面的问题他都能迎刃而解。正是因为他当初良好的心态,才取得了今天这么好的成绩。
2.练好基本功
这一点,对于准备迈进程序员门檻的读者朋友尤为重要。正如以上所说,很多的外包项目都是一些简单的内容,但是,简单的内容并不代表没有什么可以着重考虑的方面。举例来说,对于新生程序员非常常见的一个情况就是在JAVA中,String和StringBuffer的使用。大凡JAVA程序员都知道他们之间的区别,但是在实际的开发过程中却忽略了StringBuffer的存在。只有在开发过程中,注意影响代码性能和瓶颈的每一个细节,才能在这样的外包项目中体现出程序员的价值。那什么是基本功呢?对于JAVA程序员来说,JDK API,异常的处理等等都是需要熟悉于心的。在弄懂这些基础知识之前,无需去熟悉SOA,EJB,事务处理等方面的问题。
3.具备良好的职业素质
什么是一个程序员良好的职业素质?每一个程序员心中都会有一个自己的答案。在外包项目中,笔者认为良好的职业素质就是具备良好的合作精神和沟通能力,以及为了项目的进度可以自觉加班的工作态度。 在开发过程中,对实际的业务逻辑不清楚是影响项目进度的重要原因之一。这就需要项目中的成员多讨论,需要的时候还要同发包方的相关人员进行确认。在人力外包的项目中,还需要与发包方的开发人员一起合作进行开发,因为发包方的开发人员进驻项目较早且对业务相对来说更熟悉,这就需要人力外包人员谦虚地向他们请教,而不是碰到问题闭口不谈只靠想象。另外,能配合项目的进度自觉进行加班,因为外包项目都有一个开发周期,如在合同规定的时间内未完成,公司要承担相当大的经济损失。在人力外包项目中,发包方有可能随时调整项目的开发进度,作为人力外包开发人员,需要积极地进行配合而不是消极地抱怨。
4.按套路来
每一个发包方都有一套自己的开发流程和规范,且都要求接包方的开发人员不折不扣地执行。但对于一些外包项目中的程序员来说,代码注释的标记和测试代码,测试粒度,测试文档等方面的问题不屑一顾,只管实现了设计文档中的功能即可。殊不知这些就是发包方衡量项目成功与否的重要指标之一。按照软件工程来说,这些都是必须也是必要的。笔者以前曾在一家印度公司供职,他们对文档的要求是几近苛刻的,所有的文档均需按照模板来编写,小至EXCEL表格中每列的列宽都有要求。就是因为这样,印度公司的业务才不断地赢得了发包方的青睐和信任。
二、发展级攻略
1.外语,外语,还是外语
外包项目中,大部分都是欧美和日本的项目。所以,英语和日语就是外包程序员的主要外语语种。外包从业人员除了过硬的专业知识之外,对外语的掌握程度也决定了自身的含金量。如今,国外著名的软件公司也纷纷进入中国并开展外包业务,这就要求作为外包开发人员的你必须能用外语同领导交流,也需同国外的同事或者发包方的人员进行交流。除了读和写之后,听和说是很多程序员的软肋。别无它法,努力提高才是提升自我价值的捷径。
2.精通业务
在外包项目中,很多的程序员负责着代码实现:仅仅根据详细设计和类图,序列图进行代码的组装工作。长此以往,在开发的过程中无需关心业务逻辑,无需关心性能问题,仅仅根据设计文档来进行开发就够了。越大型的外包项目,分工越明细,越削弱了项目对某个人的依赖。那如何才能提升自己在项目中的个人价值呢?那就是,精通业务。通过对业务的了解提高对整个项目进行掌握的程度,也便于在项目组在轻易地更换自己的角色。
3.信息收集
主要是针对人力外包开发人员而言。毕竟人力外包的利润少于项目外包的利润,所以,通过人力外包之后,如果发包方对人力外包人员满意的话,极有可能将项目外包给接包方。 作为人力外包开发人员来说,除了正常工作之外,可以充分地了解发包方的组织架构并保持相对的市场敏感度,例如得知发包方有意向进行项目外包的时候,可以及时地跟进,并通知自己的公司做相应的工作,以达到先入为主的目的。事成之后,当然就是公司的有功之臣了。
(四)综述
国内的外包市场方兴未艾,正值红火之时,这为我辈程序员们提供了广阔的舞台。抓住机遇,不断地提升自己,定能在这次汹涌而来的“外包”浪潮中尽情地展现出自己的风采!