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

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

本周,我读到 Troy Hunt 在2016年的一篇旧文,介绍他的外包经验。我觉得,读起来很新鲜,有启发。下面就是节选的译文,插图是我配的。

我的外包经验:印度、中国和菲律宾

作者:Troy Hunt

原文网址:troyhunt.com

1、

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

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

2、

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

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

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

3、

辉瑞公司为什么要外包?

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

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

4、

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

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

5、

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

  • 印度当过英国的殖民地,印度人的英语水平很好。
  • 印度拥有超过13亿人口,这意味着它有源源不断的工程师。
  • 印度的外包行业很成熟,外包巨头 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、

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

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

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

(完)

我的外包经验:印度、中国和菲律宾(译文)相关推荐

  1. 助力新医改 芬兰医疗信息化经验进中国

    本文讲的是助力新医改 芬兰医疗信息化经验进中国, IT技术飞速发展的同时,也无孔不入地渗透到人类生活.工作的各个领域.今天IT技术所到之处无不引发一场数字化变革.医疗卫生行业中的临床实验室发展也由于I ...

  2. 一个一直没想通的问题:为什么印度的软件外包能比中国强那么多?这应该是中国人的强项啊...

    由于工作关系,我与印度软件工程师一起工作过,最大的印象就是他们的英语发音很奇特啊,不管是和英式还是美式英语都不大搭边啊,虽然我的口语不算太好,但是我还是能明显感觉出来他们的口语比我差一截啊,这也是英国 ...

  3. 中国IT外包追赶印度机遇来临 外包业面临转型

    近日,麦肯锡在一份有关中国外包业的报告中称,尽管中国IT外包业仍远远落后印度,但近来取得长足进步,并且当前经济危机给中国在这方面追赶印度提供了机遇.对此,多家外包企业高管向记者表示,中国IT外包产业今 ...

  4. 【考研经验】中国科学技术大学软件学院考研经历及复试回忆

    原文作者   木子杨65 点击原文链接,可进入原帖. A----初试 一   写在开始: 先介绍下自己的基本情况,给大家打个底:自己是通信工程专业毕业,工作了三年的又去考研的loser,一志愿初试37 ...

  5. 一年外包经验入职字节

    写在最前 我是晨霜,于20年毕业于一所双非本科,在经历了一个月左右的面试流程之后,如愿以偿的拿到了字节的offer,本篇主要记录此次面试经历,希望能够对你有所帮助. 准备面试 机会是留给有准备的人的. ...

  6. 一年外包经验入职字节啦

    点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 写在最前 我是晨霜,于20年毕业于一所双非本科,在经历了一个月左右的面试流程之后,如愿以偿的拿到了字节的offer,本篇主要记录此 ...

  7. Lillian Shao用十年经验解读中国“公有云”落地为什么这么难?

    发表于47分钟前| 30次阅读| 来源pingwest| 0 条评论| 作者Lillian Shao 公有云Azure运维数据中心AWS 摘要:本文的作者是Lillian Shao,其在美国和中国的互 ...

  8. 李祥林:从美国经验看中国资产证券化的发展

    美国证券化市场概况 全球证券化市场目前大约有十万亿美元的规模,按照证券化产品抵押资产分类,第一大类是地产,地产中包括民用.商用:第二大类是企业贷款,这类产品近几年在国外市场受到热捧:第三大类是债券:此 ...

  9. 两年外包经验,拿到字节抖音软件测试offer,一段艰辛的求职路

    个人情况 大家好,我叫楠楠,普通本科毕业,在校期间,就自学Python.Java相关东西,也跟着老师做了一个项目,说大其实也不大,就简历上能写上的程度吧.毕业后,就进入了一家外包公司做测试(公司名字在 ...

最新文章

  1. Oracle 约束 Constraint
  2. 成功解决ValueError: cannot assign without a target object
  3. Excel双样本T检验之成对检验
  4. spring ref historydesign philosophy
  5. mysql f_MySQL
  6. 视频擦除方向研究(生成技术的一类)
  7. php yaf 教程,干货:PHP YAF框架实践教程——配置与多模块
  8. 在SQL Server中的数据库之间复制表的六种不同方法
  9. centos系统安装pycharm编辑器
  10. 37、我的C#学习笔记3
  11. 初识KnockoutJS
  12. 共同富裕指数集:31省份共同富裕-富裕度、共同度两大维度数据(2000-2021年)
  13. CAD图纸的缩放——缩放上一个命令
  14. 计算机 无法自检,电脑开机不能自检是什么原因 电脑不能完成自检解决办法
  15. 优锘|ThingJS-X零代码平台:七大智慧场景全新Demo
  16. 对Excel进行瘦身的两个方法
  17. Axure下载安装汉化
  18. jQuery删除表格中指定行
  19. 儿童用灯哪个品牌好?推荐专业的儿童护眼台灯
  20. Scrum立会报告+燃尽图(十月十七日总第八次)

热门文章

  1. java对于 进行字符串分隔_Java字符串分割函数split中以·点分割的问题
  2. IOS开发之UITouch
  3. 计算机组装与维护:显示、外设
  4. java计算机毕业设计宠物店管理系统MyBatis+系统+LW文档+源码+调试部署
  5. c语言指针藏头,中科院博士为合肥写藏头诗 本科在中科大就读
  6. 25岁创业者的剖白:做我自己的老板!
  7. 新年最该坚持的三件事:运动,读书,思考
  8. 川菜馆|文科生的python挑战(1)——字符串
  9. 窗口布局流程 - 安卓R
  10. Servlet.service() for servlet [jsp] in context with path [/loginWeb_mvc] threw exception