我想为我的web服务创建iPhone app,但是我没有程序员。好吧,我没有iOS程序员。而且,我也没钱去请一个。你也遇到过这样的情况?那么该怎么做呢?谷歌搜索到Upwork,在这个网站上找到了一家位于印度班加罗尔的公司,他们在看到我给出的合理的价钱之后,表示很乐意和我一起工作。在几个月花费了我几千刀之后,我意识到这并不像我预期想的那样。时间又过去了几个月,此时我已经在向上帝发誓,我今后再也不会外包任何软件开发给任何人了。想吃后悔药的仅仅只有我吗?NO。
开头只是一个玩笑,但它离事实亦不远矣。当然,在大企业和大项目中,故事或许会有所不同。但结果几乎都是一样的——这是一场灾难。
我说的是外包,而不是离岸开发。两者所不同的是,在外包中,涉及两个公司:作为客户的你,以及一些来自于空中楼阁的自夸“我们的代码所向无敌”的公司。而在离岸开发中,虽然你也是在空中楼阁上办公,但却有属于自己公司的管理层和员工。再次声明,本文讨论的是外包。
在写这篇文章之前,我阅读了几十篇关于为什么外包会失败的文章,我发现了很多所谓的“原因”。不过,我觉得他们都搞错了关键点,因为他们只从消费客户的角度来考虑问题。我将从双方的立场来剖析问题,告诉你隐藏其中的丑陋真相。下面,就让我们一起来探究这些原因吧。
价低不能保证质优
这里有一个论点是:“选择外包,是因为你想要优化成本,但尽管最后虽然能获取最廉价的软件却很快又会由衷地后悔”。 OK,那么有什么解决办法吗?提高支付?我不认为这可以解决这个问题:只会烧掉更多的钱。而且,我也不认为这个原因和外包有任何特别的关系。在其他任何商业交易中,“单赢”模式注定会走向失败。
文化不匹配
“你在加利福尼亚,他们在巴西:你们彼此之间不能理解。”那么这是导致成本超支,进度延迟,以及低质量代码的原因吗?我不这么认为。何况,我的经验告诉我,事实恰恰相反。我们在teamed.io上的程序员来自于超过15个国家,但是我们从来没有因为文化问题而导致任何工作冲突,尽管我们的确发生了很多冲突。
缺乏面对面的交谈
“他们在遥远的波兰,因而很少有真正的交流时间。这就是为什么经常会曲解彼此的原因。”你看,你没有见过我,也没有和我进行过面对面的交谈吧?但是我现在就是在和正在阅读这篇文章的你进行交流。所以,即使我们不能见面,也不妨碍你真正理解这篇文章,读懂我的观点。这主要是因为我做了一切可能的努力,以确保我的观点能够明确地传达给你。在外包中,问题不在于渠道,而在于主动性。请继续阅读。
没有衡量成功的标准
“你无法为海外团队简单地定义一些关于成功的明确指标。这就是为什么你们的关系最终会分崩离析。”差不多是这类的原因。我也不知道何为“衡量成功的标准”,但是有一点我要说明的是:外包到乌克兰的软件,于他们而言成功是这回事。但对你,一位消费客户来说,成功是另一回事。
匮乏的规格说明书
“大多数项目都具备良好的规格说明书是不可能的,而一份设计不当的规则说明书将会成为失败的一个原因。”没错,这是真的不能再真的真相,但是这和外包又有什么关系呢?哦,对了,他们远在阿根廷,而我们在纽约——那么如何制作出一份好的规格说明书呢?无法清晰明确说明技术要求是架构师的缺陷。学习,训练,阅读应该可以解决这个问题。把所有人一起聚集到办公室并非解决的办法。
人才流失
“离岸开发者并不是你的员工,他们永远忠于项目,因此时不时地会有人离职。”的确如此,间或可能会有人离开。但是同样的,这和他们是在哪个地方又有什么关系呢?难道说一旦他们不能和他们的CEO共用一个咖啡机,他们就会不忠于项目吗?比起仅仅只是坐在一起,还有更多其他可以促进积极性的有效手段。
原因还有很多,但是这已经足以说明问题。正如你看到的,我找不到这些“理由”的逻辑。它们只是解释了结果,但丝毫未触及真正的问题:
你只是外包公司的一棵摇钱树。
除了帮你完成期望,你们既不是伙伴也不是朋友。
你的目标和他们的目标相反。
所有这些外包失败的“原因”源于根植于我们头脑的一个根本性的困惑:我们认为,在北京的这10个程序员是我们业务的一部分。我们相信,他们是团队的一份子。他们和我们坐在同一条船上,共享相同的价值观,并且都在朝着同一方向前进。
这不是真的。
这也不可能是真的。
我差不多为一家外包公司工作了近10年(离开于2010年)。然后,告诉你一个丑恶的真相是,对于外包公司的CEO,唯一的想法就是如何确保下个月的工资,并且程序员的薪水占了90%的开支。
这就是为什么付费客户对于他们来说,就是一个好客户。不是带来成功项目的客户。不是可妥善解决问题的客户。不是优化成本的客户。不是使用最佳技术的客户。统统不是。对于他们来说,只要你愿意支付很多钱,并且按时支付,那么你就是最好的客户。就是这样。
这才是外包所有问题的根本原因。
文章的标题指出,软件外包不再起作用了。为什么说“不再起作用”?难道以前起作用吗?是的,以前是有作用的,因为那个时候在第三世界国家中的程序员的工资都非常低。例如,在2001年,我们在乌克兰有一队非常优秀的高级Java开发人员,我们支付的薪酬,高于他们的市场价格,大概每个月300美元。与此同时,我们向美国客户要价15美元每小时,也就是每个月2,500美元。看到中间的差价了吗?
正是因为利润高,所以那时的外包工作正常。我作为一个CEO,几乎不愁工资发放。我有足够的钱支付我的团队,哪怕我们最终失去了一些客户。我可以这样说:我有这个资本可以诚信地对待客户。这才是问题的根源和核心。
然而这种好时光一去不复返了。
从员工的角度看。现在乌克兰一个优秀的Java开发者的收入大约是4,000美元一个月。最重要的是,开发人员期望有医疗保险,免费的健身房会员资格,免费的午餐,带薪休假,带薪病假等等,但是与此同时,Java的工时价格并不比几年前在市场上的要价高出很多。即使你每小时收费40美元(当然这并不可能),你的收入也就6,800美元。然而,所需要支付的薪水费用接近于5,000美元。利润大大缩水了,看到了没?
此外,还有办公费用,税金,计算机,行政管理人员,团队建设活动等。由于基本上没多少利润,所以一旦你失去了一个关键的付费用户,那么可能就会面临破产。因为你支付不起这帮“坐在冷板凳”上无所事事的程序员。
因此,你唯一的目标就变成了保持资金的流入。不管是用什么方法。项目耗费的时间越长越好。代码的质量越低越好——因为维护可以让客户掏出更多的钱。电话、会议和其他浪费时间的活动越多越好。规格说明书越乱越好。不择手段地从客户那里掘金。
你这么做,并不是因为你是恶魔,只是因为你要养活你的团队。你的,团队。团队是你的。因此,你有责任支付他们薪水,但客户不是你的责任。为了保护团队,你必须违背客户的实际利益。道不同不相为谋,你们根本就无法坐在同一条船上。
总而言之,外包已经不再发挥作用了,因为你的商业利益不可能与你的外包“合作伙伴”的利益相一致。
译文链接:http://www.codeceo.com/article/why-software-outsourcing-not-work.html
英文原文:Why Software Outsourcing Doesn’t Work … Anymore
翻译作者:码农网 – 小峰