2 u3 a7 O+ e+ z3 b9 p* K在软件开发方面,理论上中国以及印度的便宜劳动力可以大幅度降低开发成本,可是现实中,语言能力、时差以及便宜劳动力所带来的劳动力工作能力问题使得这个计算经常是不成立的。例如在印度,那里基本上没有语言问题,时差方面也比中国要强一些,但是劳动力的工作能力实在是没法恭维,原因是那里跟中国一样,收入是严格按照级别走的,也就是具体干活的人收入很低,要想好就要做经理或者自己开公司当老板。这个问题在那些面向out sourcing的公司里尤其严重,其结果就是理论上很便宜的劳动力实际上很昂贵,原因就是基层只是养成,一旦养成就不干这个了,要么当经理,要么当老板去了,因为后者的收入要高得多。北美与此有所不同,一个是技术系列的收入可以上去,一个是你可以做contractor,其pay rate和税率上的差别,可以使你的实际收入要比你的full time老板高得多。有人可能会认为contractor不稳定,但是实际上做得好的可以很稳定,其结果就是这边的,我指的是多伦多地区,很多技术比较好的软件相关人士都在做contractor而不愿做full time。; {6 `! t; n2 z! H1 n
/ X' p2 r) y9 |
举个例子,我以前的一篇文章曾经说过一个web service在印度那边作了五个月还是有很多问题,后来我拿过来一天搞定。实际上那边不是一个人在干,而是一个三人小组干了五个月,合着一共十五个人月投进去了,出来的是这么个东西。我承认我的单位时间pay rate,我现在在做contractor而不是full time,要比那边的人高得多,可是我不相信那边十五个人月的薪水开支比不上我一天的量,原因就在于那边都是一些非常初级的人才干这个,做这个项目对他们来说是养成,于是工作表现当然没法比,那实际上是精锐的职业人士对一群乌合之众的效能对比。7 B- v1 x5 K$ r! u; E
% R0 m9 l7 V$ P3 z0 p9 D7 E
而在技术支持方面,out sourcing也一样有问题,它主要表现在可以支持的范围很窄,基本上限于使用操作一类,但是一旦涉及到软件bug的修复,那就又回到了前面的问题。原因是同样的,作技术不挣钱所导致的技术人员素质低下,于是还得北美这边来解决。 : O8 V7 r5 y* ?: z! J$ T- z" I- C3 m/ l% [/ I3 n
其次是这边,依然是多伦多地区,大公司软件相关行业full time人员的表现问题。理论上加拿大是个成熟的资本主义国家,大公司里面有着完备的绩效考核制度,但是实际上,至少在银行、金融和零售业这些领域的大公司里面,软件相关行业full time人员的表现可以堪比国内的大型国企之员工,做事效率极其低下,如果说不是负的话。为什么会这样,因为所谓的绩效考核早就成了形式,大家都在混日子而已。公司对此也明白,于是就有了两个解决办法,一个是前面提到的out sourcing,但是也发现我前面提到的问题,另一个就是依赖contractor。于是我们可以看到大群的full time雇员旁边,是相当多的contractor,前者是领导炫耀自己职业生涯成就的本钱,而后者是领导完成上级任务的本钱,二者缺一不可。于是公司就要为一件事情出两份钱,一份是给那些full time雇员的,一份是给contractor的。有人可能会说,那为什么不干脆辞掉那些不干活的full time雇员呢,回答是两个,一个是要是把他们都辞了,领导也就成小兵了,这个如何使得?再一个就是contractor从定义上是不稳定的,于是总要养一批full time雇员,希望他们能把这摊子接起来。可是这样的局面就意味着大部分的full time雇员的工作是不稳定的,因为看摊所需要的人数要远少于全面所需要的人数,其结果就是相当多的full time雇员是以敌对的态度来对待上级指示和contractor的,其原因不难理解,二者的利益是矛盾的。 $ M, O( a8 N1 @: A/ F( X+ D6 E6 K , U) _) g& a' D) s这方面的一个例子,有一个模块归一个full time雇员来做,这位干了两个多月还是做不完,可是项目工期不能无限拖下去,于是经过客户方老板批准,我接过来干,两天搞定。这位full time雇员有着十多年的相关软件开发经验,这点东西能拖两个多月,肯定不是技术和能力问题,而是情绪问题,因为他希望靠这个保自己的饭碗,结果老板不答应,模块一样拿走给别人干。 3 y) |! b0 s( r3 Q2 ?8 b. K) o7 p {# Z& |& M$ _. T; P7 [: C
再次就是合理化问题。客户有一个模块,是委托一家公司开发的,并且包给了这家公司做维护和技术支持,每年的费用是八百万。那家公司就靠这一个东西生存,并为此雇了十多个人。客户后来改主意了,想要我们把这个东西接起来,自己做维护和技术支持,原因是我们省钱,这点东西用不了一个人的全部时间,因为我们的一个人可以支持至少三个模块,而对方则要十几个人来支持这一个模块,人工成本当然要低得多了。有人可能会说那你们是不是太忙了,其实不是,因为很多时候那些模块都无事可做,于是大家并不忙,当然熟悉过程除外。客户既然提出了这个要求,我们自然会去做,反正源代码是现成的,拿来按照需要改一下程序,调试、测试顺手也就把程序熟悉了,没什么难度,也就是一个人一个月的工作量而已。0 B$ T7 F. ?4 R) Z. k& f' g7 _& s
* n, b" S( u M$ b" S r这个问题本质上是合理化问题,这样做对客户来说是省钱了,老板省钱了,经手的经理有了业绩,因此是合理的,但是对那家公司来说,则是灭顶之灾,因为他们就这一项收入,一旦不再续约那么这十多个人就得失业。我和我手下负责这个模块的同事对此感慨不已,心情很矛盾。一方面这哥们,他也是个contractor,因为这个模块而使得自己的位置很稳定,可是另一方面,我们等于砸了十几个人的饭碗。可是我们也没办法,这就是资本主义,为了生存你只好把那帮子兄弟从船上推下去,否则我们自己就得掉下去。啥叫汪洋中的一条船?
事后说一下写这篇的目的,一个是发一些感慨,一个是想说明,理论上很完美的东西,现实中经常是扯淡,甚至还不如那些看起来不怎么样的选择呢。这就是为什么我这个团队的人,全是些contractor,对理论上完美的东西嗤之以鼻,因为现实告诉我们啥叫扯淡。我们这帮子职场上混出来的软件老兵,没有多愁善感的而只有现实利益的冷静计算,因为只有这样才能够生存。4 k5 l! l4 A2 A! {7 u g# V
+ _" f, Z# t |" ]; k
这个现象,在企业是这样,在政治上也一样!
. n9 R0 S: e% C q2 x对,这里的问题是如何把本地的高水平但是昂贵的职业人士和远方的便宜但是能力很有限的新兵有效结合起来,使得其费效比最合算。 * R3 v6 J2 p4 |3 A, E* ]2 v1 V8 o0 \8 H x A
在目前,似乎只有技术支持这块中的非技术部分可以有效外迁,其余的都不成。
南非的化工设计行业走的极端了一点,干活的除了个别人,几乎全都是拿短期合同的。这样对于公司的好处在于,没项目的时候不用养多少人,节省大把成本,这帮设计师都不便宜。对于个人的好处在于,拿的时薪比全职的高,自由度大,可以随时换地方。这个圈子本身又非常小,一共就几百号人。结果就会出现,某个项目是几家公司竞标,但是无论谁拿了项目,干活的核心设计人员可能还都是那几个人。 . O- `, i, u, b. l H! E) L9 s- t/ x
南非的化工行业外包一般只是把低技术含量的工业设计阶段外包出去,给印度印尼的人来做,不过质量控制也很令人头疼,审核需要花大功夫。概念设计和基础设计阶段,那是宁可花大价钱的。4 j6 a& \- a4 t1 a
7 p$ p4 X! g& c' A" G% m/ t1 R