`
zhengdl126
  • 浏览: 2511579 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

西方(东方)同行眼中的东方(西方)程序员

 
阅读更多

 

最近,在国外著名的stackexchange网站上出现了一个有趣的问题,有人问:西方的程序员眼里,东方的程序员是什么样的?他描述道:

世界的东方(印度/中国/菲律宾)是西方(美国/欧洲)的主要软件外包服务提供者。

你是否有过与这种离岸外包团队合作的经历?如果有,感觉如何?

你对这些来自东方的程序员有没有一些总结性的看法和观点(比如:他们是否合作,是否能按时提交代码,写出的程序是否有质量?)。依据是什么?

读者的回复很踊跃,其中一个被顶的最高的回答是关于印度人的,回答中他说一个印度分包商给他们开发了一个组件,他认为这是他接触过的最恐怖的程序,里面最大的一个文件体积超过600KB,大概有3万多行。他向上天乞求希望自己永远不需要去维护这样的代码。这位答复者说他在印度生活了3个月,发现东方人和西方人在文化上的差异很大,印度人很勤奋,但常常却不能把事情做对。印度人里有个根深蒂固的文化,就是从不说no,他说即使你到副食品商店里要求买一条毯子,店主也会说“是,先生,稍等一会”,然后派一个小孩到外面商店把东西买回来。这虽然在生意上是好的做法,但未必适用于做软件开发。

另外一个回复是关于俄国人的,同样,他觉得这些俄国人写的代码顶多当作原型来使用,最终都会被丢掉,不能用。

我找了很久,终于在帖子的最底部发现一个关于中国程序员的回复,不过内容非常的有趣:

到现在,我在中国已经待了2年多一点时间了(我是个加拿大人),跟中国的开发人员一起共事你会感到非常的奇特。我敢说上面这些关于东方的程序员的总结都是正确的,至少对于中国人是这样的。我遇到的一起共事的大多数开发人员基本属于这种情况:

1.缺少上进心和创造性

这里我并不想说他们很差劲或愚蠢。也许更可能是一种文化。在历史上他们就有一种官本位和崇尚权威的传统。于是他们对来自“上面”的糟糕的设计从不提出疑议。同样,他们更多的是关注技术技巧,而忽略业务领域知识。我费力九牛二虎之力教他们模式和各种抽象概念,直到他们能应用这些东西到他们手头的任务中。然而,过不了多久,就像是决堤的洪水,他们竟然肆无忌惮的挑战权威,至少在技术层面上是这样的,我可不想弄得签证被撤销。

2.磨擦

前面这个问题说过,但我要强调一下。这也许是最重要的一个问题,是产生中国开发人员跟这里的海外同事(这里是加拿大人)共事时产生紧张关系的原因。通常,我在这里共事的西方人会特意的夸大跟东方人共事时东方人的一些不好的方面。我这些加拿大同事对人友好但在代码审查时极其的苛刻。如果发现这些中国程序员一个小失误或没有使用好的编写方法,他们就是发脾气、大呼小叫。但当他们自己被礼貌的要求也按照这种要求完成他们自己的任务时,他们也会发脾气、大呼小叫。

3.牺牲

中国人并不以介意使用蹩脚的二手器械。我坐坏了三把椅子后才终于要了一把稍微舒服一点的椅子。可是当我坐上这把较好的椅子后,突然感觉不是很好,因为看到这些中国人仍然坐在好像是中世纪那么原始的椅子上。然而,等我访问了这家公司的总部后,我发现这里的程序员的一张桌子就有我们4~6个人的团队的占地面积那么大,更别提他们的椅子了!

在起初,他们编写的程序并不是很好。这当然是文化上产生的裂痕,但这也是开始时糟糕的系统设计产生的很陡的学习曲线造成的。但你们知道吗,两年之后,这个系统中一些最优秀的模块都是出自中国公司。于是这就更加明显的导致了双方程序员的磨擦加剧…

坦白的说,这几年走过来不容易,以个人经验判断事情的趋势,我认为对这个问题的看法是正确的。

做为一个中国人,对于西方人对我们的看法和观点,我觉得不需要去急着找他们的论点漏洞进行反驳。你可感到到他们对东方人的不满是一种普遍弥漫的气氛,俗话说,苍蝇不叮无缝的蛋,我们应该还是先从自身找问题,有则改之,无则加勉。

 

 

======================

 

 

 

在我看来,东方的程序员如何看待西方同行是一个有趣并且重要的问题。

通常认为东方国家(印度/中国/菲律宾)是为西方国家提供外包服务(美国和欧洲)的。

你有过参与离岸开发的经历吗?如果有,你对此有何看法?

那么对于西方程序员你有哪些印象呢(比如是否具有协作精神,是否按时交付产品,或者他们的工作质量如何)?

在看完本篇后不防移步看看西方程序员眼中的东方程序员!

以下是来自东方各国程序员的答案:

一、印度程序员

Danish

身为印度人,我想谈谈印度程序员。

我觉得问题在于这里的文化,也就是人们的思维模式。自孩提时代开始,我们就被训练如何遵照流程循规蹈矩,然后进入类工程、医学、商业管理等高薪职业。创新、探索和创业在印度并不常见。

大多数人进入IT行业是为了挣钱,而不是因为他们爱好编程或是喜欢计算机领域。由于缺乏兴趣,我们中的大多数人会成为编程机器,只会执行指令而不关心它们的含义。大多数开发者从不以终端用户的角度思考问题,也不会思考他们开发的模块会为更大的系统提供怎样的价值。

在印度你很难找到发明家,但是你会发现很多优秀的工人。在这里成长就意味着收入的增加和地位的提升,知识在这里一文不值。

即使IT的领军企业也是如此。他们从学院里招聘毕业生并把他们训练成机器人。最悲哀的莫过于,他们的薪资相对其他行业而言相对较高,因此没有人愿意从这些公司离开。在印度,几乎没有IT公司会招聘真正有才能的人。

另外一个重要的因素是,大多数有才能的人都远渡重洋去美国或其他国家,在那里他们能够施展自己的才华并赚到比印度同行更多的收入。所以,如果你是一位印度开发者,只有成为流程专家而不是技术新秀才有机会成功。

尽管现在开始有所变化,我们能够看到涌现出一些初创企业,但是仍然为数很少。

更新:以上对于东方程序员的看法都是我个人的观点。针对本文提出的问题,在我看来,西方的程序员通常是以结果为导向、专注、坦率并且更加专业。我经常和来自西方的客户/委托人合作,发现他们具有协作精神、耐心、灵活而且热心。

Vinoth Kuma

我来自印度,曾为一家大型美国零售公司工作。我所接触的美国团队非常清楚自己想要做什么。正如在其它文章讨论过的那样,“印度人对政治和规章制度有这近乎宗教般的执着,但却对需要解决的问题完全缺乏认识”。

我也遇到过一些美国同事对任务的截止日期交代不清的情况。他们会说,“你只要在2月26号提交代码就可以了”,然而外包项目经理回复说,“不行,我们应该在23号之前截止”,这会让压力陡然增加。这是一种为了取悦领导而不顾实际开发时间要求的倾向。

这可能是印度社会结构造成的。

Aufather

我在印度一家跨国公司工作。尽管这是一家生产型公司(电信设备),从法律上讲印度分部也是一家独立的公司,它被美国母公司全资拥有,为母公司提供工程服务。这就是印度子公司的法律地位。

总的说来,我发现美国人反应更加迅速和直率,而印度人则更加圆滑。在我的印象中,印度人比美国人(8小时)花费更多时间(10小时)完成同样的工作,主要区别在于行动的速度。我认为这更多地是文化造成的。从技术能力上来说,我感觉几乎一样。另外一个有意思的现象是,大多数美国的程序员(占60-70%)都是印度人,在美国生活了5到15年。

我也感受到大多数平台工作(尤其是硬件设计)都在美国完成,而印度更多专注在应用程序开发。尽管现在越来越多平台软件被挪到印度开发。

另一个趋势是许多印度人在美国工作了5-20年这后开始回到印度。我个人就认识很多这样的人。与此同时,很多印度人到美国“现场”工作并学习当地的文化。因此,公司文化的差异正在逐步减小。

Kuma

我是印度人。到目前为止,除了来自东边的日本人,我曾经同美国人、英国人、澳大利亚人一起工作过。印度曾经在长达300年里沦为英帝国的殖民地。直到现在,人们还是认为西方的技术远远超过印度,包括南亚的其他国家都有这样的观点。尽管这些国家以自己的家庭观念和文化而自豪,你会发现更多的产品创新出自西方而不是东方。最为重要的一点是,我崇敬西方的程序员也尊重东方的程序员,理解印度人和数学家(当然印度的经理除外)

Rahularyansharma

在印度,大多数人当程序员不是因为自己选择,而是受到了周围环境的影响。

一个例子是,一家非常有名的公司tata咨询的雇员在KBC(印度版的谁想成为百万富翁)节目上连这样的问题都答错了。问题是:

下面的选项中那个在谷歌主页上是找不到的?

选项有

Gmail YouTube Facebook Orkut

他选择的答案是YouTube

所以你应该知道,在印度,大多数公司只是雇佣一些新人并给他们做一些日常工作的培训。所以,在日常的工作中,同样的时间做同样的工作,没有挑战,没有学习,也没有研究。

Tarun

在西方有很多年长且经验丰富的程序员,而在印度有更多新晋和年长的经理。好吧,在印度确实也有程序员。我对这种把从程序员转变为经理看做职业生涯进步的观点深恶痛绝。

Rishabh Jain

我从事软件开发行业已经有4年了。主要与欧洲的开发者一起工作,比如德国、西班牙、意大利等。与其它地方一样,这些开发者当中有优秀的也有不那么出众的。最让我吃惊的是,我发现与印度的开发者不同,他们总是会在自己的工作上努力追求卓越而且非常享受并且以自己的工作为荣。

这并不意味着印度的开发者在某些方面稍逊一筹。对于大多数印度(亚洲)的开发者,缺乏对于自己喜欢的和真正想要做什么进行思考。正如大多数人指出的那样,这是缺乏自由的父母教育和社会环境影响的结果。在印度,一个人生下来就承载了很多社会责任,冒险和失败都是不被接受的,否则将会遭到整个社会的排斥。因此,学生们会选择更加“安全”人生规划,被塑造为类似“工厂生产的产品”。

我并不是说这是非常糟糕的选择,因为它或多或少地确保了可以收到社会尊重并得到较好的收入。但从长远看来,这些人并不能真正地与自己从事的职业“心灵”相通,因为他们对自己正在从事的工作没有兴趣。一旦挣钱之后,要从这个畸形的循环从跳出来会变得尤其困难,因为他们已经在经济上被束缚了。

总的说来,在西方环境相对宽松,人们会得到一些机会允许犯错。一个人即使把事情弄糟也仍然有机会找到自己的兴趣所在,并且不会背负什么负担。所以,西方的开发者更多的是为了兴趣而不是经济和社会责任而工作,这会帮助他们成就卓越。

我也发现,西方人相对来说更加专业且宽容(他们知道人们会犯错,因为他们自己也曾犯错因而知道这其中的价值)。

我也发现,通常亚洲的项目经理会是无情、狡诈和投机。他们并不看重人的价值,大多数时候他们会把人看做资源,比如资源1、资源2,并且会不顾一切代价压制开发者的个性。他们不会放弃任何抢占别人荣誉的机会。这主要是因为他们已经在这个“工厂”里待了太久的缘故。这也减少了亚洲开发者的归属感。

西方人的等级相对更加扁平化,提供了更加自由的工作环境。

但放眼未来,情况也在不断发生变化。我相信东西方之间会出现更加相互信任并且利于创新的环境。

computer programmer

二、日本程序员

Rei Miyasaka

我来自日本。

我并不认为日本程序员真正理解西方人只需花费一半的时间完成我们整个所完成的工作。我们生活在自己那个小小的加拉帕戈斯泡沫中(与全球化隔绝),对世界上其他的事情置若罔闻。撇开科学软件不谈(仿真系统、开发工具等等),我不认为我们对学术充满热情。在日本我们将软件看成硬件的奴隶,所以创新往往出现在硬件领域。

所以,当比尔盖茨说“软件是创新的源泉”这样的话时,大多数日本人只会认为“啊,他很富有,他知道自己在说些什么”,然后接着回去不加思考地设计应用程序。

与此同时,不论我们是否意识到了这一点,对外国人的憎恶和POHAI情结已经深深地扎根于日本社会。Tron项目(一个开发性实时操作系统内核项目)的成员就是这样的例子,尽管我希望他们是非常极端的情况。

非常不幸,在散布流言的人中有日本人。这些日本人,包括其他参与散布TRON项目谣言的外国人应该更加清楚地知道,他们忽略了这样一个事实:TRON不是一个短期的商业项目,不应该以2到3年内占领某个特定市场作为评价其成功的标准。

不幸的是,这不能打消一些日本人的看法。他们真的相信微软会为匿名黑客攻击Sony的行为提供WinMoible7手机作为奖励。(也许付钱是有可能的,但是为什么他们要提供并非昂贵的手机给这些黑客呢??)

据说日本程序员似乎对可用性和UI非常感兴趣——因此可以经常看到,来自日本的UI尽管摆脱了传统,但是非常方便、直观。这一点甚至在Ruby设计风格中有所体现。

Matsumot(Ruby语言的发明者)设计的目标就是为了提高程序员效率的同时为他们带来乐趣,这一点遵循了优秀用户界面的设计原则。他强调说,系统设计需要更加关注人而不是机器……

如果我的愤世嫉俗让你感到吃惊,我在这里还有更多的阐述。


三、巴基斯坦程序员

Armir

我来自巴基斯坦。

我工作7年了。大多数时间里,我和美国的同事一起工作。我参与过的工作有:

    离岸外包
    美国公司在巴基斯坦的分支机构

这里我想分享一下我的感受。美国的同事非常坦诚也喜欢坦诚(因为只有和美国同事合作的经验,所以不好对其他国家的人进行评价)。这里我想说的是如果下周要完成某个任务,主要开发者因为各种原因需要请假,大多数情况下我会告诉美国的同事,他们会认真把请假的情况认真考虑。

然而在巴基斯坦,一般人的心理是即使自己不能完成也要试图让对方满意。他们试图把本地团队可能影响到生意的想法隐藏起来,我认为这种做法是错误的。一个现实的例子是,我最近从一个非常重要的团队协调员位置离职了,这个职位的工作就是协调海外团队和本地团队的工作。在我离职的时候,海外团队的经理在通知本地团队的时候,也通知了谁是我的继任者。但是,仅仅在我离职15天之后,我的下一任也离职了。这一次,他们没有告知本地团队并且把我继任者离职的消息封锁了起来,现在应该是别的什么人来接任这个位置。

所有这些通常都是为了避免对商业关系产生不好的影响,这一类的事情在巴基斯坦非常常见。

因此,一般对西方和西方团队的看法是,虽然比起我们没有绝对的技术优势,但他们需要高质量的工作。第二点也是非常重要的一点,他们需要诚实的工作。如果事情变糟糕,告诉他们真实的情况。毕竟,他们不会派出CIA的侦探来跟踪我们。

四、韩国程序员

Jeong

我来自韩国。恕我直言

韩国有很多程序员,但是韩国并不为西方国家提供外包服务。程序员工作有很多种类,但是大部分的群体为

    游戏公司(在线游戏产业非常巨大)
    因特网搜索公司(你可能不知道,谷歌不是在韩国不是行业的领头羊)
    产品公司(比如三星、LG……)

与西方不同,程序员在韩国不是一个“有钱途”的工作,尽管也算是不错的工作。对于程序员来说,加班也是家常便饭。我想说的是真的很常见。

所以,很多韩国的程序员认为在西方工作非常好,一些人甚至考虑出国工作。但不幸的是,与印度不同,很多韩国人英语不是很好。

最后,韩国人怎么看待西方程序员?

    有钱(也许……你就是?)
    更加自由
    热爱编程

五、孟加拉国程序员

Gulshan

我来自孟加拉,在我看来区别在于:

    技术:西方的技术总是比我们领先一步。任何技术在西方出现2年之后才在这里被采用。例如,我们到目前为止还没有在生产环境中开始使用.net4(不是框架,而是其中的特性)。也许只有在.net5面世的时候才能实现。
    知识:恕我直言,知识的最好载体是书籍。几乎所有最新的技术书籍都是用英文协作。这不是什么大问题。问题在于书籍的价格和出版的时间。在价格较低的版本出现之前,这些书籍对我们来说还是有些昂贵。即使在我们准备好付钱之后,还需要等待很长时间才能在本地书店里买到。即使订购,也需要1个月的时间才能到货。所以,西方在这一点上比我们明显领先。也许要领先个2年。希望更多的电子书能够在某些方面改善这样的情况。
    最佳实践:IT在孟加拉还是新兴产业。所以,很多非技术出身的人在从事管理。有些时候,这会造成沟通上的障碍。要吐故纳新接纳新的习惯还有很多其他障碍。所以,有时候,我们还在沿用旧的看法。我认为,西方对于变化和接纳新事物抱有更加开放的心态。
    许可证:通常与西方相比,我们没有对许可证软件/工具给与足够的重视。
    开源:我认为西方程序员在开源方面参与得比我们更多。
    语言趋势:我们这里主要从C语言开始学起,接着是C++、C#/Java或者PHP。这体现了一种趋势:命令式、面向对象而且大多数采用静态语言。但是类似Python或Rub以及LISP或Haskell这样的函数式编程语言在这里并不流行。甚至像C#语言中支持的函数式编程风格都不常见。人们把C#当成Java来用。

其中的一些只针对我所在的区域,不适用于其他东方或亚洲国家。排除经济因素不考虑,我感到这种趋势应该改变。

programmer developer at work

六、菲律宾程序员

Joset

我来自菲律宾。根据自己的理解我估计出了下面这些数字。

我敢说菲律宾70%的程序员都希望建立自己的公司并专注创新。有雨缺乏资金并受到外国企业高薪的诱惑(有IT公司也有非IT公司),程序员们为自己戴上了“金手铐”(防止员工离开公司的财务制度,比如员工股票期权等)。由于只能利用业余时间,所以果创新变得愈发缓慢。

天生追求最好这一文化传统使得在菲律宾有很多优秀的员工。这里我像要强调的一点是,程序员是以结果为导向的。这种导向的一个缺点是,因为社会文化强调友善、微笑、好客和乐观,大多数程序员特别是在和外国人相处时不是那么自信和坦率。但在工作场所这一点正在发生剧烈的变化,西方的工作文化正在取而代之。

程序员在大学里受到教育,在企业里强化编程训练,结果软件开发完全按照业界的最佳实践进行。

那些具有天赋又不想冒险开办公司的程序员通常选择出国工作,例如新加坡、美国、澳大利亚、香港和马来西亚,以寻找更好的发展空间。

在我看来,西方的程序员通常会被认为是技能熟练、更优秀、坦率、以结果为导向和专注的职业程序员。



七、中国程序员

Wondering

在我15年编程生涯中,有一半时间是和西方的开发者打交道。我曾经直接汇报给比利时的负责人,也曾经带领来自印度和美国的团队成员。

总的说来,不同国家的程序员没有什么大的区别。我见到的大多数程序员都是工作努力并且可以有创新的工作。西方人在各种编程技巧和办公室政治的处理上和东方人旗鼓相当。大多数有经验的大陆程序员英文水平不是很好,这会在交流上带来问题,而印度和美国人在这方面会有优势。也许是因为我和欧洲团队为了项目和资源斗争太多次的原因,我个人的感觉是美国人比欧洲人更容易合作。

附带说一下,我是中国人,生活在大陆。

Baobao

大家好,我是中国程序员。我想要告诉你们一些事实。

    在中国,大多数人是为了一份相对较高的收入而成为程序员。我们所需要的就是能够生存。
    以我个人的经历来看,初中的时候只是知道电脑这个东西,在大学的时候才真正使用和接触计算机。3、只是一知半解,而且是为了通过论文答辩,神奇吧?
    来到上海以后,我找到了一份用户体验工程师的工作。只是跟着感觉走,完全没有任何培训,我对第一份工作竭尽全力但是3个月后还是以失败告终。
    幸运的是,我找到了属于自己的领域,所以我开始阅读相关的书籍,比如CSS、Javascript。
    这些书籍都是我在一些免费英文电子书站点上找到的,都是英文。一本接一本,我知道了什么是程序员。不行,也许我们需要管自己叫做写代码的人更合适。
    不幸的是,在中国一些好的英文书籍在中国被当成了专业手册。
    毋庸置疑,中国人非常聪明可以拷贝所有类型的软件,我们把他叫做“山寨”。
    对所有的中国老板一定不要说“不”,无论这家公司是否在IT领域。
    关于设计和模式,那是非常遥远的事情。这里只有很多的投机商,对于他们而言金钱就是一切,实际上每个人都需要钱。
    “顾客就是上帝”,所以需求总是一次又一次地改变。不论你相信与否,这是每天都在发生的事情。

Kim

我是一个中国程序员。之前在一家中国软件公司工作,遇到了很多有才华的程序员。我的能力得到了快速的提升。

一天我加入了一家所谓的知名美企。那真的是一场噩梦。公司里的中国员工要么非常愚蠢要么整天互相斗来斗去。他们几乎不会思考、设计和编码。几乎没有其他中国本土企业会需要这样的人。每天的工作就是测试产品或者修几个无关紧要的bug。

我快速地逃离了这家美国公司进入了另一家本土企业。这家公司从德国购买软件同时也得到了德国公司的技术支持。我认为自己作出的选择非常正确而且薪水也比以前更高了。

对于讨论的这个问题,在那家美国公司我遇到过很多西方程序员,他们的工作做的很好,而且知道如何尊重下属,包括中国员工。

Matthieu

东方追随西方,体现在以下几个方面:

    标准
    态度
    所有方面

我阅读的几乎所有IT书籍作者都来自西方。

在我第一次遇到Apache Jakarta / Struts的时候非常开心。我认为它是真正的亚洲制造。

附一:新浪微博上,也有一些朋友分享其对西方程序员的看法。

@lucky_eagle:特别认真,刨根究底,问到出汗……

@锡伯小兵:亲身接触了一些,也有听同事说的。总体感觉各国大多数程序员差不多,过于自信,延期交付,推脱责任,对质量马马虎虎,能应付交付即可,工作家庭平衡力较差,偶尔勇于挑战。不过也正常,毕竟编程是对脑力要求较高的活动,而人脑偏偏不是严格逻辑的。

@張漢東:早年和美国的打过交道,也经常混迹各种技术论坛,给我最大的印象就是,不管你提出多菜的问题,他们都会耐心认真的回答你。

@Carlos_Tse想要改变自己:跟伪西方合作过,总喜欢用很前卫的技术,文档很详细,最重要的是木有dead line,随时做好随时交,不限于在公司上班干活

@彦斌:说说我们公司的情况吧。那些西方的同事工作态度比我们这边的认真多了,工作起来更喜欢沟通交流。而且年龄都比我们的大。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics