但是,外包的曝光量很少,大家彷佛都不太关心,很少有人评论辩论。这导致许多人不理解外包到底是怎么回事。
本周,我读到 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、
第四点,也是最主要的一点,不要把小时费率视为外包成功的指标,不要根据报价的高低选择供应商。
外包给哪个供应商,常日是由公司内部对软件开拓理解最少的人决定的。低报价吸引了他们,只考虑了短期本钱和交付条件,没有将长期本钱(诸如可掩护性,可用性以及安全性之类的成分)考虑在内。由于公司的预算和业务目标总是聚焦在短期,难怪那些节制资金却不理解技能的人做出了不明智的外包决策。
廉价的离岸外包是软件行业的麦当劳。由于需求量很大,外包公司就把软件开拓做成了批量生产的产品。但如果你一贯吃麦当劳,就不是很好。你最好将外包视为均衡饮食的一部分,做出明智的决定,不要因标价低而盲目选择,不考虑要支付的实际本钱。