软件项目外包到印度,中国和菲律宾的经验分享!

2024-05-26
来源:网络整理

1、

我与亚洲外包供应商合作的经验非常丰富。在这篇文章中,我想谈谈多年来我将软件项目外包给印度、中国和菲律宾的经验。

我之前的工作是辉瑞公司的软件架构师,在那里工作了14年,负责亚太地区的软件架构。

2、

辉瑞公司的软件开发策略很简单:外包一切。

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

我对印度、中国、菲律宾的软件外包行业都有过广泛的接触,有特别深的感受,想谈一下我的观察。

3.

辉瑞为何要进行外包?

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

外包相当于一个“云程序员”,你只需要在需要的时候使用,只为消耗的量付费,减轻了自己公司的负担。

4.

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

据我了解,前三个国家的外包公司每小时工资比后三个国家要贵4到5倍。

5.

首先从印度说起。这个国家已经成为离岸外包的代名词,在很多 IT 经理的心目中,外包就等于印度。这背后的原因有很多。

6.

印度的许多程序员都是通过单一技术的强化训练进行大规模生产的,并且通常只了解他们所接受过培训的非常具体的技术堆栈。我经常发现他们只了解软件组件的单个部分,这就是他们所要做的全部。

对于项目来说,这样做的后果是最终需要很多人参与。我看了工作量估算,然后问外包人员:“为什么需要这么多人?”会有初级程序员、高级程序员、专门从事 API 开发的人员、网站工作人员、数据库工作人员等。有些项目由于规模庞大而需要这样做,但即使是小项目也是如此。

7.

印度的另一个问题是员工流失。程序员总是在不断离开。传统的公司忠诚度在印度并不普遍,大多数人在外包公司工作的时间不超过一两年。程序员总是去其他地方寻找更好的机会,这是可以理解的,但这种流失率意味着项目中会出现更多摩擦。这不会反映在你的外包合同中。

我还发现印度程序员对需求文档非常讲究。他们总是要求提供非常详细的文档。其他地方的程序员也会要求提供需求文档,但在印度,要求更严格。细节对印度人来说很重要。很多时候,我们会假设软件应该包含哪些功能,后来发现这些功能被认为“超出范围”。这种情况可能发生在世界上任何地方的任何项目中,但在印度极为普遍。

我认为最适合外包给印度的项目是独立的工作单元,范围明确,文档齐全,完全按照印度公司现有的模式。要知道那里的程序员都是经过非常专业培训的,并且以工厂流水线思维进行开发。如果你按照他们的模式,你就会走上“幸福之路”。

8、

现在我们来谈谈中国。

中国正在快速城市化,接受高等教育的人口不断增长。中国是一个非常精通技术的国家,并且一直在该领域发展,从新兴的硬件供应商到现在的主导者,如华为和联想,以及阿里巴巴等非常强大的服务公司。这些公司现在登上了世界舞台。如果你对技术充满热情,却不关注中国正在发生的事情,你可能会错过未来几十年世界最重要的技术创新和增长源泉。

9,

对于外国人来说,和中国人合作并不容易,主要是因为外语水平的问题。中国国内市场巨大,几乎所有项目都有自己的中文服务,所以中国人接触英语的机会有限,与他们清晰地沟通是一件棘手的事情。

这意味着你几乎总是与实际进行开发的程序员至少相差一个级别。通常你会联系一位具有一定英语技能的客户经理,他会将你的意思翻译给技术人员。这样做的后果是,当你真正需要进行详细讨论时,你无法直接与程序员沟通。中国程序员会互相讨论,你不知道他们在想什么,很多东西在翻译过程中丢失了。

这对代码质量有着深远的影响。从功能上讲,代码本身可能很好,但它是由英语水平很低或没有英语水平的人编写的。高质量软件的要求之一是代码本身是自文档化的,这很难实现。他们的代码可能没有清楚地描述软件的功能,这不仅对作者来说很难阅读,而且对将来维护软件的人来说也很难阅读。

如果你愿意继续使用同一个软件供应商,这可能不是问题,但如果你把代码拿回去或者交给别人维护,就会遇到严重的问题。我个人知道,审查中国程序员编写的代码很困难。此外,语言障碍也会对用户界面产生影响。那些编写代码的人可能不太懂英语,他们写的标签和标题可能让英语用户不舒服,这意味着许多意想不到的(和预算之外的)修订。

10.

外包小程序开发需要注意什么_外包开发程序注意需要小程序吗_外包开发流程

我有一个习惯,就是总是要求供应商提供工作细目。如果我要外包一款有 20 个功能的应用程序,我想知道每个功能要花多少钱。然后我可以评估和讨论每个功能的重要性,以及我是否想通过放弃价值较低的功能来降低成本。

但在中国,供应商无法提供这样的表格,因为他们不这么算成本。他们给我的明细只是大三和大四的学生、项目经理和测试员的人数,以及每个人的费用。在我看来,这完全没用,但我也没办法。

中国还有一个现象就是工时非常长,他们会投入很多的时间。我记得很清楚有一个案例,中国供应商给出的价格和澳大利亚当地供应商一样,但是工时却要高出一个数量级。

11.

中国现在物价越来越高了,而且根据我得到的信息,北京的程序员的薪资是两位数的增长,有报道说他们的年薪大概是2.5万美元,而孟买的年薪大概是7000美元,这是一个很重要的区别。

中国的优势之一(尤其是与印度相比)是他们对需求文档的要求不高。中国有一种真正的“可以做”的态度,他们愿意拿起任何东西去尝试,不管你要求什么。然而,有一种风险是,虽然他们会对所有事情都说“是”,但实际上他们可能意味着“不”或其他什么。但总的来说,我发现他们的适应能力很强,这是一个很大的优势。

我更喜欢将业务外包给中国,因为那里灵活性更高、限制更少,但由于语言障碍,与新供应商合作时也会出现更多摩擦。

12.

现在我们来谈谈菲律宾。

我在马尼拉待过很长时间,可以自信地说,菲律宾人是你在任何地方遇到的最友好的人之一。由于菲律宾是美国的殖民地,当地人精通英语,英语是菲律宾的第二官方语言。在马尼拉的任何地方,你都可以毫无问题地与当地人沟通。

近年来,我注意到一个明显的趋势,即呼叫中心正在向菲律宾迁移。以前,当你打电话给客服时,接电话的都是印度人,但现在,每次我打电话给电信公司,接电话的都是菲律宾人。我认为这是菲律宾人英语水平高、性格友好以及新兴科技行业的综合作用。此外,菲律宾的工资比中国低得多,更接近印度。

13.

菲律宾是一个贫穷的国家,这种情况随处可见,尤其是在去机场的路上穿过摇摇欲坠的房屋时。

这也给技术部门带来了影响,我在外包中看到的最明显的一点就是菲律宾程序员对 PHP 的强烈亲和力。这并不是贬低 PHP,而是 LAMP 技术栈的低成本造成的。辉瑞使用的技术栈在菲律宾很难找到市场。你去找任何供应商,他们的默认态度总是“是的,我们会使用 PHP,做你需要的东西。”虽然我们后来确实找到了可以使用该技术栈的供应商,但我仍然觉得他们没有受到重视,这让我对他们的技术能力有点担心。

14.

菲律宾的成本肯定低于中国,而且通常低于印度,而且根据目前的趋势,这种情况可能会持续很长时间。

从很多方面来看,菲律宾都是世界上最好的。除了费用之外,菲律宾的英语水平是这个价位所有国家中最好的,菲律宾人性格友好,而且菲律宾人也像我在中国看到的那样,有着“我能行”的态度。

15.

最后我讲一下我的外包经历。

首先,外包是一种不稳定的商品,因为程序员不稳定,尤其是在印度。我们与孟买的一名开发人员合作,花费了大量时间和金钱培训一名名叫 Avni 的程序员,让他掌握我们所需的特定技能。项目进展顺利,但有一天,Avni 离开了。我怀疑她怀孕了,根据我的经验,这通常会在几个月后才发生。开发人员告诉我们不用担心,他们会为你找到另一个 Avni,就像上一个一样!

开发人员不是可替代的商品。你不能简单地用另一个人替换一个人,并期望他们能做同样的工作。我经常看到外包供应商自信地声称他们可以像更换厨房灯泡一样轻松地替换程序员。这是一种危险的无能信念,表明他们对软件开发的现实存在根本性的误解。

16.

其次,外包软件的质量在项目交付时可能看不到。通常需要几个月甚至几年的时间才能意识到你所欠下的“技术债务”的成本。供应商开发软件并交给客户后,如果客户后期想增加功能,发现代码难以辨认,修复需要花费多少成本?在软件产品生命周期中,长期成本往往会被忽略,因为人们都在争先恐后地节省短期成本。

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

17.

第三,如果要让外包成功,最好采用混合模式,不是“把一切都外包出去”,而是“让我们的人和他们的人一起工作,各做各的强项”。

我花了很多时间去世界各地的外包公司,培训他们的开发人员,与他们的团队坐在一起,讨论要建设的项目。我遇到过各种糟糕的故事,但也有一些非常积极的经历。

避免依赖外包组织中的个人,例如上述的 Avni。外包行业的人员流动率远高于正常水平。相反,应专注于让更多人参与进来,这样即使其中一人离开,您也不会损失太多的项目知识。

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

18.

第四,最重要的是,不要把小时费率作为外包成功的指标,不要根据报价的价格来选择供应商。

外包给哪家供应商的决定通常是由公司内部对软件开发了解最少的人做出的。他们被低价所吸引,只考虑短期成本和交付条件,而不考虑长期成本(可维护性、可用性和安全性等因素)。由于公司预算和业务目标总是着眼于短期,因此那些控制资金但不懂技术的人做出不明智的外包决策也就不足为奇了。

廉价的离岸外包是软件行业的麦当劳。由于需求量如此之大,外包公司已将软件开发变成了批量生产的产品。但如果你继续吃麦当劳,那就不太好。你最好将外包视为均衡饮食的一部分,并做出明智的决定,而不是因为价格低廉而盲目选择它,而不考虑你将支付的实际成本。

(超过)

分享