我眼中的中美印日四国程序员的特点

最近以裁判的身份参加了公司举办的编程大赛,发现高手云集,对公司内部的程序员能力也有了更深入的了解。我觉得编程能力对程序员而言,虽然很重要, 但并不是全部。那么作为一个程序员,到底应该具备什么样的能力呢?这个话题显然太大。不过我觉得可以看看其它国家的程序员,也许可以得到一些借鉴。我有幸 和中国、美国、印度和日本四国程序员有比较深入的合作过。虽然他们不一定有代表性,但我觉得他们的共性还是比较明显的。以下的比较纯属个人见解,欢迎指 正。

日本程序员

他们的特点是非常仔细。我认为很主要的一个原因是日本公司的需求非常细致。细致到在网页上,连一个像素都不能偏差的地步。另外,日本人的执行力非常 强,对老板的承诺比命还重要。一个项目可以做到连续3个月天天加班,每天只睡4个小时。然而,高执行力背后的代价是低创造力。在日新月异的互联网今天,很 少听说日本工程师发明了哪些重要的技术。与其说这些特点是日本程序员的,不如说是大部分日本人的。因为在日本文化中,追求品质和遵守等级制度是根深蒂固 的。

另外,技术领域中的很多专业词汇是外来语,以英语(论坛)为主。这些专业词汇往往会被翻译成片假名。而片假名的发言有时候和英语大相径庭, 导致沟通的困难。比如病毒一词在英语中是Virus,发音为歪儒斯,而日语的发音是味鲁斯。再例如服务器(Server)一词在日语中的发音是萨巴,和英 文发言简直风牛马不相及。因此与日本程序员沟通是比较痛苦的,除非你懂日语。

印度程序员

我所接触的印度工程师都是在美国工作的。虽然他们和印度本地的工程师肯定有区别,不过相似的地方应该更多一些吧。我觉得他们的普遍优点就一个:流程 做得好,文档写得好。但是他们写代码的能力,我个人的观点是一般般。我想这里面有两层原因。一是有相当一部分在美国工作的印度程序员是半 路出家。转行做程序员是为了生存而已。二是印度程序员在算法,数据机构等基本功方面的水平明显低于中国程序员的。这就导致他们写的很多代码逻辑性不强和性 能不优(以我的标准来看)。不过这两个问题在一定程度上被大量的文档和高性能的硬件设备弥补和掩盖了。在沟通方面,印度人的英语发音对西方人而言几乎没有 问题,但很难被中国人听懂,甚至往往被国人怀疑他们是不是在说英文。

从某种意义上讲,日本程序员和印度程序员十分相似。他们都很敬业,都能让领导比较满意,但不要过多地期望他们能做得更好,因为他们的目标就是完成领 导指派 的任务。日本程序员让领导满意的方法是不折不扣的执行和狂热的加班。而印度程序员让领导满意的方法是通过大量的文档来告诉领导他们的工作意义重大,流程严 谨,资料齐全,而且成本很低。夸张一点地讲:日本程序员善于做领导想做的事,印度程序员善于说领导想听的话。

美国程序员

美国程序员千奇百怪,好像很难只用几个词来定义他们。可能是因为美国是一个移民/国家吧,本来就千奇百怪。但大部分程序员有一个共同的特点:喜欢技 术,甚至崇尚技术。这点在硅谷尤为突出。这就导致每个技术领域中都有一些人会废寝忘食地钻研。其实这和打游戏一样,如果你着了迷,自然会忘了吃,忘了喝, 拼命地玩。我所认识的美国程序员还有一个特点,才艺能力都不错。以前在波士顿工作的一家公司中,几十位工程师居然可以组成一个交响乐团。有小提琴、大提 琴、小号、竖琴、打击乐等各种各样的西洋乐器手。而且这些哥们姐们还不是一般地玩玩,周末都有自己的固定乐队,经常参加社区的表演。

更有甚者,在硅谷工作时的一位同事,白天写程序,晚上在自家的车库里练习乒乓球,竟然代表美国参加了悉尼和雅典的两届奥运会。说起写文档的能力,美 国程序员绝对 不亚于印度人。但是美国人写文档不是为了老板,而是为了自己,为了分享。因此他们的文档往往读起来很有趣,很实用。当然,这会让老板有时候很头疼,因为程 序员不那么“听话”。他们不是给老板交差,而是要实现自己的想法,自己的设计,自己的完美。说白了,就是美国程序员有时候想法多了点。

中国程序员

和其他国家的程序员相比,我觉得他们的特点还是比较明显的。他们的算法能力普遍高于其它几个国家的。这可能是我们的教育体制导致的,比较注重理论知 识。反过来,实践能力就相对差些。我们的程序员执行能力并不差,但在解决问题的能力上明显不足。往往需要把任务分解得很细以后才能完成,独立解决问题的能 力不够。另外在表达能力上也相对差些。相信大家一定见过技术水平很高,但表达能力很差的工程师。最好笑的是,我见过不少工程师拿着一支写不出字的白板笔 (我们的白板笔质量也确实不咋样),有模有样地在白板上写字。仿佛听众可以看得到他/她写得是什么。因为他/她完全沉浸在自己的逻辑中,完全不去体会听众 的感受。不过我认为这些缺点并不严重。

因为这些是属于技能和经验方面的东西,是可以通过实际工作或者培训来提升的。我认为国内程序员最大的问题还是所处的环境不利,导致相当一部分人比较 浮躁和 急功近利。真正能够沉下心来钻研技术,热爱技术的是凤毛麟角。我在面试的时候,常常发现工程师知识面还挺广,但深度几乎没有。这样的人很难在技术领域有所 作为。我希望找到的人是,敢于承认自己不会的地方,但是只要会的东西,哪怕就一样,就要一定比别人理解得透,钻研得深。我相信一个人如果在某一个问题上比 别人做得好,在其它问题上也一定有能力超越别人。

虽然比较下来,看到中国程序员不少的问题。但作为群体,中国的程序员可能是全世界最聪明的工程师群体。因为环境的原因,使得他们不得不想法很多,顾 虑很多,无法最大程度地将聪明才智发挥在技术上。改变这种状况首先要从公司的管理层开始。只有技术负责人热爱技术,追求卓越,才可能为技术人员创造环境, 激励他们钻研和创新。技术负责人需要深入项目,和工程师们一起讨论技术设计,从而通过具体问题来提升工程师的能力,同时也防止自己的技术能力滑坡。在技术 管理 上,很多国内的公司把工程师简单地作为资源,过于强调流程管理和资源管理。我的观点是:工程师不是高级蓝领,不能以管理生产线的方式来进行管理。优良的环 境只有靠大家一起来创造。中国工程师一定可以成为世界上最优秀的工程师群体。

====================================分割线================================
文章转载自 开源中国社区[http://www.oschina.net]

时间: 2024-10-24 06:13:15

我眼中的中美印日四国程序员的特点的相关文章

揭秘IT人才特点:中美印日四国程序员比较

最近以裁判的身份参加了公司举办的编程大赛,发现高手云集,对公司内部的程序员能力也有了更深入的了解.我觉得编程能力对程序员而言,虽然很重要,但并不是全部.那么作为一个程序员,到底应该具备什么样的能力呢?这个话题显然太大.不过我觉得可以看看其它国家的程序员,也许可以得到一些借鉴.我有幸和中国,美国,印度和日本四国程序员有比较深入的合作过.虽然他们不一定有代表性,但我觉得他们的共性还是比较明显的. 以下的比较纯属个人见解,欢迎指正. 首先是日本程序员 他们的特点是非常仔细.我认为很主要的一个原因是日本

java-android中这种方法是程序员自己写的,并不是系统自带的,这种理解对吗

问题描述 android中这种方法是程序员自己写的,并不是系统自带的,这种理解对吗 android中这种方法是程序员自己写的,并不是系统自带的,这种理解对吗 如图所示 解决方案 你把鼠标移到方法上,绿色小圆点就是系统的,红色小方块就是自己写的 解决方案二: 看你这段代码应该是自定义的类方法的. 解决方案三: 快捷键 F3 看看来源于哪里 .

为什么你的设计团队中需要一名程序员?

一 名优秀的设计师应该会编程吗?有关这个问题的争论每天都在博客上.Twitter 上,以及公司召开的会议中不断上演,永无休止.人们更多地关心设计师本身有没有编程的能力,却没有考虑到是否应该在设计团队中直接引入一名程序员.这真的 是让人遗憾的事,甚至会为他们的争论感到着急.因为对于一场有关产品设计的讨论中,程序员其实能够起到非常重要的作用. 但令人遗憾的是,许多设计师对于他们的工作来说都有一种「精英主义」,觉得只有他们才能打造出专业的.符合潮流的设计.可是事实上这并不正确. 事 实上,每个人都有能

致敬程序员日,盘点云计算的天才程序员

10月24日是程序员日,在这个特殊的日子里笔者为大家盘点几位云计算技术背后的天才程序员.在过去的大半个世纪中,计算机科学界涌现出了一批不世出的天才:阿兰·图灵(Alan Turing).高纳德(Donald Knuth).艾兹赫尔·戴克斯特拉(Edsger Dijkstra),这些振聋发聩的名字背后是建立了彻底改变人类生活的现代计算机工业,这些人的影响力是如此之大,不但改变了整个世界,同时也赢得了全球的尊重. Martin Casado,人们往往尊称其为软件定义网络之父,当然除此之外,Marti

《程序员的修炼——从优秀到卓越》一一1.8 管理中要有信任

1.8 管理中要有信任 程序员的修炼--从优秀到卓越 Marco Dorantes在2005年的一篇博文中提到了另外一篇极好的文章,名为"Why Big Software Projects Fail"(为什么大型软件项目会失败).这篇文章的作者是Watts Humphrey,他曾经参与过IBM OS/360项目.在文章的一开始,Watts即对自2001年以来软件项目完成情况的数据作出了分析. 上图展示了按照项目的规模统计的Standish1数据.当以这种方式查看的时候,我们会发现:一半

程序员理想中的工作环境

1. 弹性上班制 程序员群体是一群怀有Geek情结的家伙,追求相对的精神自由,在自己的时间安排上也喜欢自由自在.无拘无束.灵感来时,可以废寝忘食.疯狂Coding:思维乏术时,则可能漫不经心.无所事事,这时不如早点结束工作,放松心情,触发下一次的灵感. 常规企业的朝九晚五上班制度,说实话并不适合程序员一族,因为这种制度一定程度上扼杀了这个最需要差异性的群体的差异性,把程序员的Coding灵感等同于工厂流水线上机械手臂,希望按钮一按下,灵感发动,按钮再一按下,灵感结束.这是一种一厢情愿的想法. 所

程序员成长规划

引言 我的程序员成长之路 程序员的成长经历往往很相似,大部分的人走过了最前面相同的一段路,而有的人则走得更远.总结自己这些年来的历程,这也许能让年轻的程序员少走一些弯路,成长得更快:或许更好一些,能让大家从中得到一些启发,早日进入优秀程序员的阶段,实现梦想,释放激情. 第一阶段,最初是在学校里学习计算机基础知识,学习经典的程序设计语言,编写测试用的小程序.这个过程可以说是对计算机和程序设计的入门阶段.这个阶段主要是培养了自己对计算机软件的兴趣,打下了良好的计算机基础知识. 第二阶段,而后参加工作

程序员编程工作应该避免的一些坏习惯

良好的编程习惯是每个程序员都应该具备的工作素质,在我的软件生涯中屡屡发现一些程序员的身上总有这样或者那样的坏毛病这些毛病在一些从业时间不是很长的程序员的身上表现的特别突出.1. 搭棚子   搭棚子顾名思义就是拿到一个任务的时候,既不做更详细的需求分析,也不作详细设计,一开始就打开编程工具,噼里啪啦的定义了一堆的模块,我不说是定义类,是因为这样代码里根本就找不到对象,然后就在这些模块的基础上进行工作,结果整个程序看起来就象胡乱搭起来的棚子,虽然有个程序的样子,而且似乎也实现了所要的功能,但是这样的

想成为一个JSP网站程序员吗

js|程序|程序员 任何Web开发人员需要必备的技巧主要有以下这些技术. 开发Web应用程序的技术已经变得更成熟.更复杂了.现在,构建一个Web应用程序不仅仅需要简单的HTML技术了.数据库访问.脚本语言和管理都是一个Web程序员需要具备的技术.让我们来看看要成为一个市场上受欢迎的Web开发人员都需要些什么技能吧. 自从CERN(欧洲粒子物理研究所),日内瓦附近的高能物理研究中心,在1991年发布了Web以来,Web技术已经从静态的内容和Common Gateway Interface(CGI)