本人曾在一家软件外包公司干了六年,从程序员干到技术经理再到事业部经理,然后跳槽到现在公司的互联网项目部担任研发经理,谈谈自己在外包公司的经历和感受。
当时不知道做软件外包和做软件产品有啥区别,只要有个工作干着就行了。在第一家公司主要是做政府软件开发、政府和国企的网站开发等。我进去时应聘的是互联网工程师,做的是各种定制网站,定制的投票系统,报名系统,业务工作系统等等,反正有啥做啥,而且时间压缩得比较紧,加班加点那是常有的事,因为跟客户签定的合同都是有期限的,到期完不成,不仅整个项目的利润要受影响,一堆子人的奖金都要受影响,开发线上的人压力都是蛮大的,当时我们基本上都是一个项目做完马上做下一个项目,想重构一下代码,想整理下工具类,想总结一下业务知识和项目经验,根本不会给你时间。这不能怪公司,因为外包公司的盈利模式就是得靠不停接项目才能生存,项目越多,利润才会多,压缩开发周期才能使利润最大化,至于软件质量,我知道的就是能用,能满足功能,至于好不好用,代码好不好维护、规不规范,软件性能之类的,用大脑想一想就知道了,这得额外设多少个岗位,增加多少时间呀,甲方没有独立的第三方公司帮忙评估和验收的话,谁愿意花这钱?
软件外包公司又分为两类,第一类是项目外包(接各种各样的定制系统开发),第二类是人力资源外包(比如中软件国际就长期为华为招聘驻场人员,华为那边一个人开3万,中软给求职者1.5万,公司1.5万)。
软件外包公司和软件产品公司如何区分呢?主要是看该公司有没有核心产品,开发人员的主要精力是在升级完善产品,还是在接各种项目,盈利模式是靠不停的接活还是靠卖软件赚钱,当然有基于核心产品做一些定制开发的公司,这种公司我愿意称之为软件产品公司。
那么软件外包公司能不能学到技术和经验呢?以我之前所在的公司为例,刚毕业的底子好的同学可以独立实操一些小项目,这些项目的难度都不大,能收获的东西也就是巩固下语法,找找各种业务场景的数据库设计和代码操作的感觉,在界面上呈现数据,提交表单,做JS验证之类的,至于GOF设计模式,领域驱动设计、面向对象设计、面向接口编程、AOP、IOC、多层架构这些东西即使你听说过,你也很难理为什么要用,也很少有机会用。因为外包开发的软件的生命周期对公司来说,交付客户就结束了,不像产品一样需要不停的升级和迭代,所以你很难体会到大牛们所说的扩展呀,灵活呀之类的好处了,况且要设计一个扩展性且架构良好的面向对象系统,花费的时间和精力都是巨大的,而且好的架构都是演化和重构而来的,你从事的工种决定了你很难有机会经历系统的演化,入驻甲方一起办公的,别人会有核心的框架,即使框架再强大,你干的也只是脏活累活,更不用说接触到互联网行业里海量高并发处理的技术了,这也就是很多做互联网的攻城狮看不起外包公司技术人员的原因。而且你就算有那个能力,公司也很难会认可(公司需要的是开发速度快),你的客户更不会认可(客户需要的是按时交付他要的软件),你很难只靠工作时间来提升你的技术水平和技术修养。我个人的建议,如果的公司没有设立核心技术小团队的话,你又不善于沟通,不喜欢写方案,不适合走管理路线的话,你要么在外派甲方时就给对方留下好印象,积极争取留在甲方的机会;要么顶多操练两年就去软件产品公司或互联网公司,跳槽之前,建议去网上找几个代码质量比较高的开源系统看一看,不管有多难,都要啃下来,绝对会进步飞速,让面试官刮目相看,不会因为你软件外包公司的出身就嫌弃你,否则只是做一般的技术人员待下去很容易浪费青春,以后外包公司没那么多项目了,再出去做技术,你会的太浅,又不甘心跟刚毕业两三年的拿一样工资,别人精力比你旺盛,能加的班比你多;做领域专家吧,你接触过的业务虽多,但是不精。
接下来谈一谈软件外包公司的薪资待遇。据我了解的大多数软件外包公司的薪资结构都是由基本工资+项目奖金构成。我在成都这边,09年入职时工资是3000元,然后加上项目奖金的话,大约一个月能拿到4K多接近5K的样子,今年4月面试过一个外包公司跳槽来的哥们,他是一般开发人员,各种收入加完能拿到7K左右,他们公司是四川某上市软件公司下面的子公司,另一外包公司的项目经理大约能拿到10K左右,外包公司的项目奖金会有很大的风险性,得等项目回全款时才会发,如果项目没有做完或未回款时就离职,这个奖金基本上就是打水漂,很多公司都会找理由不给,一个项目的总奖金会由多个人来分(项目经理、设计师、开发和测试等等),很容易产生矛盾。就一般的软件外包公司来说,涨薪空间不大,薪水也不具备想像空间,因为业务模式决定了他不能像软件产品一样具备可复制性,也不能像互联网平台一样具备海量用户,有多种变现渠道,公司想赚更多的钱就得接更多的项目,接更多的项目,就需要招更多的人,没有更的利润来涨薪,而且老板也会觉得性价比不划算,所以我在之前待得最久的公司做到了事业部经理时还是离职了,离职后接到国内某大型外包公司成都分公司的电话(某软国际),让我去面试技术总监,他们薪水能给到15K以上,回顾了下30岁前的职业生涯,实在不想再忍受很多软件明明有优化空间,却只能束之高阁,很多工位干几个月就换面孔了,然后断然拒绝了,一入外包深似海,只剩两行泪,劝君三思。