外包在软件业很常见,各种规模的公司都在用,每年要吸纳大量就业。

但是,外包的曝光量很少,大家似乎都不太关心,很少有人谈论。这导致许多人不了解外包到底是怎么回事。

1、

我有很多与亚洲外包供应商合作的经历。这篇文章我想来谈谈,多年来将软件项目外包到印度,中国和菲律宾的经验。

我以前的工作是辉瑞公司的软件架构师,一共干了 14 年,曾经负责过亚太地区的软件架构。

2、

辉瑞公司的软件开发策略很简单,就是将所有事情外包。

这是行业的标准做法,我因此跟亚太地区数十个软件供应商合作过,参与了各种各样的项目,范围很广,从简单的产品宣传网站到大型临床研究系统,从移动应用 App 到 POS 机的终端程序。

我对印度、中国和菲律宾的软件外包行业,接触得比较多,感触尤其深,我想讨论对它们的观察。

3、

辉瑞公司为什么要外包?

原因很简单,因为程序员很贵。你必须花很多钱,雇佣很多人来构建软件产品,无论他们是否在工作,你都需要支付薪水。而且你雇来的程序员不一定懂每个项目所需的特定技能,这意味着你还要雇佣更多的人。

外包就相当于"云程序员",你可以只在需要的时候去用它,只为所消费的东西付费,因此减轻了自己公司的负担。

4、

外包一般都选择亚洲,因为其他地方的工资太高。澳大利亚很贵,美国很贵,英国很贵,上图是世界银行的人均收入数据,这三个地区与印度、中国、菲律宾。

以我的经验,前三个国家的外包公司小时工资,比后三个国家贵 4 到 5 倍。

5、

先来看印度。这个国家已经成为离岸外包的代名词,在许多 IT 经理的心中,外包就等于印度。原因有很多。

  1. 印度当过英国的殖民地,印度人的英语水平很好。
  2. 印度拥有超过 13 亿人口,这意味着它有源源不断的工程师。
  3. 印度的外包行业很成熟,外包巨头 Tech Mahindra、Infosys、Wipro 有规范的外包流程,在这个领域进行了大量投资。

6、

印度许多程序员都是通过单项技术的强化培训而大量生产的,往往只懂培训教的非常特定的技术栈。我常常发现,他们只懂软件组件的一个独立部分,而这就是他们要做的全部事情。

这对项目带来的后果就是,最终会导致很多人参与其中。我查看工作量估算,向外包负责人提问:“为什么需要这么多人?”。里面会有初级程序员、高级程序员,专门从事 API 开发的人员,负责网站的人员,负责数据库的人员等等。有些项目由于庞大的规模,需要这样做,但即使是很小的项目,也是这个样子。

7、

印度的另一个问题是流失率,程序员总是在离开。传统的公司忠诚度在印度并不盛行,大多数人在一家外包公司不会超过一两年。程序员总是去其他地方寻求更好的机会,这无可厚非,但是这种流失率意味着项目会产生更多的摩擦。这些并不会出现在你的外包合同中。

我还发现,印度程序员对需求文档要求很高,他们始终要求真正详细的文档。其他地方的程序员也要求需求文档,但在印度这个要求更强烈,细节对印度人来说很重要。很多时候,我们假设软件应该包括的功能,事后发现这些功能被认为是"超出范围"。这可能在全世界任何地方的任何项目中发生,但在印度极为盛行。

最合适外包到印度的项目,我认为最好是一个独立的工作单元,范围有着明确的界定,文档齐全,并且完全遵循印度公司现有的模式。你要知道,那里的程序员接受的是非常具体的事情的训练,并以工厂流水线的心态在开发,你按照他们的模式,那就会走上"快乐之路"。

8、

接着来谈谈中国。

中国正在快速城市化,越来越多的人口接受高等教育。他们是一个非常精通技术的国家,在这方面不断壮大,从新兴的硬件提供商变成现在占主导地位的厂商,比如华为和联想,也有像阿里巴巴这样的非常强的服务类公司。这些公司如今已经进入了世界舞台。如果您热衷于技术而不关心中国的动态,那么可能会错过未来几十年世界上最重要的技术创新和增长来源。

9、

对于外国人来说,中国人并不容易合作,主要原因是外语水平。中国的内部市场很大,几乎所有项目都有自己的中文服务,因此中国人接触英语的机会很有限,如果要跟他们清晰的沟通可能是一件很棘手的事情。

这意味着,你几乎总是与实际从事开发的程序员,至少隔了一层。通常会有一个具有一定英语技能的客户经理,你与他联系,他再把你的意思翻译给技术人员。这样的后果就是,当你真正需要进行详细讨论时,没法跟程序员直接沟通。中国程序员会在内部自己商量,你不知道他们在想些什么,并且很多东西在翻译过程中丢失了。

这对代码质量有深刻影响。从功能上讲,代码本身可能还不错,但这是很少或几乎没有英语技能的人编写的代码。高质量软件的要求之一,就是代码本身就是自我记录的文档,这一点很难实现。他们的代码可能无法清晰地描述软件的功能,不仅对作者也对将来维护的人,都很难阅读。

要是你愿意一直跟同一个软件供应商合作,那可能不会成为问题,但如果你收回代码或交给其他人维护,就会遇到严重问题。我的切身体会是,很难评审中国程序员编写的代码。另外,语言障碍对用户界面也有影响,那些编写代码的人由于不太了解英语,编写的​​标签和标题可能会使英语用户不适应,这意味着要进行许多意想不到的(且预算未定)的修订。

10、

我有一个习惯,一直要求供应商提供工作分解表。如果我要外包一个具有 20 个功能的应用程序,那么我想知道每个功能要花多少钱。然后,我可以评估,讨论一下每个功能的重要性,是否要通过放弃价值较低的功能来降低成本。

但是在中国,供应商无法提供这种表格,因为他们不是以这种方式核算成本。他们给我的细分,只是有多少个大三和​​大四的学生、项目经理、测试人员参与,他们每个人的花费是多少。在我看来,这根本没用,但我也没办法。

中国的另一个现象,就是工时非常高,他们会投入大量的时间。我很清楚地记得一个案例,中国供应商的报价与澳大利亚的本地供应商相同,而工时却大了一个数量级。

11、

中国现在变得越来越昂贵,根据我得到的消息,北京程序员的薪水是两位数的涨幅,有报告称,他们的年薪约为 25,000 美元,而孟买的年薪约为7,000 美元。这是一个非常重要的差异。

中国的优势之一(尤其跟印度相比)就是对需求文档的要求不高。中国有一种真正的"可以做"的态度,不管你提什么要求,他们都愿意拿起任何东西去尝试。不过,虽然他们对任何事情都会说"是",但是实际上的意思很可能是"否"或别的,这里会存在风险。但是总的来说,我发现他们的适应性非常强,这是一大优势。

我更倾向于外包给中国,因为那里更加灵活,限制也更少。不过由于语言障碍,与新的供应商合作期间,涉及的摩擦也更大。

12、

再来谈谈菲律宾。

我在马尼拉度过了很多时间,可以很自信地说,菲律宾人是你在任何地方所能遇到的最友好的一群人。由于菲律宾当过美国的殖民地,所以当地人的英语水平很出色,英语是菲律宾排名第二的官方语言。你在马尼拉的任何地方,都能毫无问题地被理解,并与当地人进行交流。

近年来,我注意到的一件事是,呼叫中心转移到菲律宾的趋势很明显。以前你打客服电话,是印度人接听,现在每次我打给电信公司,都会与菲律宾人交谈。我认为,这是他们强大的英语能力,友善的性格和新兴的科技行业共同作用的结果。另外,菲律宾的薪水比中国低得多,更接近印度。

13、

菲律宾是一个贫困的国家,到处都可以看到这一点,特别是在前往机场的路上穿过摇摇欲坠的房屋时。

这对技术领域也产生了影响,我在外包中看到的最明显的一点,就是菲律宾程序员对 PHP 的强烈亲和力。这样说并不是要贬低 PHP,而是 LAMP 技术栈的低成本造成的。辉瑞公司所使用的 Microsoft 技术栈在菲律宾很难找到市场。你随便去一家供应商,他们的默认态度总是"是的,我们将用 PHP 和 MySQL 做到你们的需求。 "尽管我们后来确实找到了可以使用 Microsoft 技术栈的供应商,但我始终觉得它们并不受到重视,这让我对他们的技术能力有些担心。

14、

在成本上,菲律宾肯定比中国低,而且经常比印度低。根据现在的趋势,这种情况大概会保持很长一段时间。

在许多方面,菲律宾是世界上最好的。除了成本,他们还有这个价格的国家中最好的英语技能,友善的性格,以及我在中国观察到的相同的"可以做"的态度。

15、

最后,谈谈我的外包经验。

首先,外包是一种不稳定的商品,因为程序员是不稳定的,尤其是在印度。我们当时与一家孟买的开发商合作,花了很多时间和金钱培训一个叫做 Avni 的程序员,让她掌握所需的特定技术。这个项目进展顺利,但是有一天,Avni 离开了。我怀疑她要去生孩子了,根据我的经验,这种情况通常会在发生几个月后才通知你。开发商跟我们说不要担心,会给你找另一个 Avni,跟上一个一样!

开发人员不是可以替代的商品。你不能简单地用一个人去替代另一个人,然后期望他们同样地工作。我经常看到外包供应商信誓旦旦地断言,他们能够像更换厨房灯泡那样简单地更换程序员。这是一种危险的不称职的信念,表明对软件开发的实际情况有根本的误解。

16、

第二点,外包软件的质量,不一定能够在项目交付时看出来。通常要花上数月甚至数年的时间,才能意识到你所承担的"技术债务"的成本。供应商开发完软件,将其移交给客户之后,如果客户以后要添加功能,发现代码难以辨认,将花多少钱才能解决?在软件产品生命周期中,长期的成本通常被忽略,因为人们争先恐后地希望立即节省短期成本。

我从未见过,外包供应商为项目编写任何单元测试!他们没有自动化测试流程,总是用人工测试确保一切正常。开发人员甚至从未听说过自动化测试这种概念,因为编写额外的代码将花费更多的金钱,一切在他们看来理所当然。所以,外包项目的长期可维护性和成本是可怕的。

17、

第三点,如果想让外包成功,最好采用混合模式。不是"将所有事情外包",而是"让我们的人与他们的人一起工作,各自做自己最擅长的事情"。

我花了大量时间,到世界各地的外包公司,培训他们的开发人员,跟他们的团队待在一起,交谈要开发的项目。我遇到了各种坏的故事,但也有一些非常积极的经历。

避免依赖外包组织中的个人,比如上文的 Avni,外包行业的人员流动性比一般情况大得多。相反地,应将重点放在让更多人一起参与,如果其中一个离开,你就不会损失太多的项目知识。

还可以多应用一些开发工具,比如代码质量检查工具、构建服务、版本管理等等,让工作过程变得更加可预测。

18、

第四点,也是最重要的一点,不要把小时费率视为外包成功的指标,不要根据报价的高低选择供应商。

外包给哪个供应商,通常是由公司内部对软件开发了解最少的人决定的。低报价吸引了他们,只考虑了短期成本和交付条件,没有将长期成本(诸如可维护性,可用性以及安全性之类的因素)考虑在内。因为公司的预算和业务目标总是聚焦在短期,难怪那些掌握资金却不了解技术的人做出了不明智的外包决策。

廉价的离岸外包是软件行业的麦当劳。因为需求量很大,外包公司就把软件开发做成了批量生产的产品。但如果你一直吃麦当劳,就不是很好。你最好将外包视为均衡饮食的一部分,做出明智的决定,不要因标价低而盲目选择,不考虑要支付的实际成本。

每天都会有更新看过的朋友可以点波关注,Java学习路线和优质资源评论点击“Java”获取

程序员的外包经验:印度、中国和菲律宾相关推荐

  1. 程序人生:程序员做外包“前途“,“技术“,“经验“如何决策

    hello,大家好!2022年新的一年,也在这里祝大家心想事成,早日实现自己的目标,走上自己最想要的人生道路:今天给大家分享下程序猿干外包的感受. 先说说对外包分析总结 1.程序员做外包没有前途,外包 ...

  2. 为什么程序员有外包经历,面试就像有污点一样的存在?是这样吗?

    作为一名IT行业的从业者,我来回答一下这个问题. 首先,目前IT行业内有大量的程序员都有过外包开发经历,外包开发也是IT行业内的一种重要业务形式,所以程序员从事外包开发是比较常见的事情,也会获得技术上 ...

  3. 你一定要知道的四个程序员接外包的网站,悄悄把技术变现!

    说起程序员接外包的网站,你在网上一搜发现数不胜数,但真正有用的却很少.然后你想快速的找到几个靠谱的网站,去看了看接外包的攻略,你会发现排雷的又数不胜数.一时间你还真不知道要选哪一个. 接下来就为大家推 ...

  4. 程序员在外包公司工作怎么样?

    今天刚刚好是周六,本来是可以好好休息的,计划好要去哪里玩的,但是天有不测风云,突然说银行领导要来检查,今天周末大家必须和平时一样照常上班,天呐!大哭 !也无奈,只能照常上班咯,谁让别人是地主呢?我经常 ...

  5. 程序员去外包的后遗症是什么

    随着现代社会的发展,越来越多的程序员选择以自由职业者.独立个体工作者的身份,到各种外包平台上寻找项目.虽然这样的方式能够带来更大的自由度和更高的收益,但同时,也存在一些后遗症. 1. 工作稳定性下降 ...

  6. 程序员杂志:联众中国龙——简晶

    程序员杂志:联众中国龙--简晶 (2001-05-09) 撰文/清水湾弯 编者按:谈到早期中文平台,我们不能忘记中国龙的历史地位,更不能忘记它的主创者--简晶:谈到希望公司,不可避免地又会想到UCSD ...

  7. 程序员接外包?老司机的经验之谈,务必收藏好哦

    对程序员来说,接外包是一件价值比较高的事:虽然会比较累,但是挣到手里的不会太少:如果项目本身质量比较高,还可以锻炼自己的技术. 经济下行之下,想找到收入还是项目本身都挺不错的外包实在是有难度:要么甲方 ...

  8. 为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要1...

    为什么80%的码农都做不了架构师?>>>    为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要10k的薪水?   由于目前国内嵌入 ...

  9. 作为一名程序员,我一直为中国的软件产业感到苦恼。

    作为一名程序员,我一直为中国的软件产业感到苦恼. 除非你完全认可中国近些年以GDP为导向的经济发展策略,否则很可能得反思一下软件行业所鼓吹的"唯快不破"策略,尤其是互联网领域. 在 ...

  10. 程序员去外包公司有前途吗?

    虽然大部分人都抵制外包,但是很多人,尤其是萌新,并不清楚外包的主要缺点.我这里简单说一下. 程序员去外包公司有前途吗? 不能说去了外包公司就完全没有前途了,主要看个人能力,外包的工作内容,大多十分碎片 ...

最新文章

  1. Linux内核初期内存管理---memblock(转)
  2. IDEA多行缩进快捷键
  3. Cordova for iOS[ PhoneGap]
  4. python炫酷特效代码_推荐几个炫酷的 Python 开源项目
  5. 【qduoj】【超级楼梯进阶版】
  6. php的用户认证(有点难度 多看几遍吧)
  7. JS设置cookie,删除cookie
  8. python判断是否为英文_Python判断字符串是否纯英文(纯ASCII码字符)
  9. linux创建裸磁盘,Linux上如何创建裸设备
  10. 百面机器学习:算法工程师带你去面试
  11. 分部积分法解决二重积分问题
  12. Broadcast之系统时间流逝广播
  13. 贪心算法--最小耗费生成树(Prim算法)
  14. 信号与系统--冲激响应
  15. 手机移动端web 禁止手机返回功能的最好方法,虽然很变态,但是很有效.
  16. js倒计时刷新页面不受影响
  17. [VB.NET]VB REDIM
  18. NO.1—Python安装与环境配置
  19. ORACLE索引的作用及用法
  20. qt Type defaults to ‘int‘ in declaration of

热门文章

  1. 413 Arithmetic Slices
  2. 简图记录-曾国藩家训 观后感
  3. 论文笔记Doubly Stochastic Variational Inference for Deep Gaussian Processes深度高斯过程的双重随机变分推理
  4. A-PDF All to MP3 Converter 2.0.0 (.wav) Buffer Overflow Exploit 分析
  5. 判断网卡MAC地址前缀
  6. php5.4.45连接mssql2000,用php在linux下连接mssql2000(转)
  7. 关于b-jui框架,datagrid传参数的问题
  8. mysql获取某个最大的值的一行数据_某一字段分组取最大(小)值所在行的数据
  9. 【BZOJ】【P3110】【Zjoi2013】【K大数查询】【题解】【整体二分】
  10. 平凡的生活,不平凡的2020