`
nannan408
  • 浏览: 1770799 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

各国程序员比较与管理先进性

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

      首先是日本程序员。他们的特点是非常仔细。我认为很主要的一个原因是日本公司的需求非常细致。细致到在网页上,连一个像素都不能偏差的地步。另外,日本人的执行力非常强,对老板的承诺比命还重要。一个项目可以做到连续3个月天天加班,每天只睡4个小时。然而,高执行力背后的代价是低创造力。在日新月异的互联网今天,很少听说日本工程师发明了哪些重要的技术。与其说这些特点是日本程序员的,不如说是大部分日本人的。因为在日本文化中,追求品质和遵守等级制度是根深蒂固的。另外,技术领域中的很多专业词汇是外来语,以英语(论坛)为主。这些专业词汇往往会被翻译成片假名。而片假名的发言有时候和英语大相径庭,导致沟通的困难。比如病毒一词在英语中是Virus,发音为歪儒斯,而日语的发音是味鲁斯。再例如服务器(Server)一词在日语中的发音是萨巴,和英文发言简直风牛马不相及。因此与日本程序员沟通是比较痛苦的,除非你懂日语。

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

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

      接下来说说美国程序员。美国程序员千奇百怪,好像很难只用几个词来定义他们。可能是因为美国是一个移民国家吧,本来就千奇百怪。但大部分程序员有一个共同的特点:喜欢技术,甚至崇尚技术。这点在硅谷尤为突出。这就导致每个技术领域中都有一些人会废寝忘食地钻研。其实这和打游戏一样,如果你着了迷,自然会忘了吃,忘了喝,拼命地玩。我所认识的美国程序员还有一个特点,才艺能力都不错。以前在波士顿工作的一家公司中,几十位工程师居然可以组成一个交响乐团。有小提琴,大提琴,小号,竖琴,打击乐等各种各样的西洋乐器手。而且这些哥们姐们还不是一般地玩玩,周末都有自己的固定乐队,经常参加社区的表演。更有甚者,在硅谷工作时的一位同事,白天写程序,晚上在自家的车库里练习乒乓球,竟然代表美国参加了悉尼和雅典的两届奥运会。说起写文档的能力,美国程序员绝对不亚于印度人。但是美国人写文档不是为了老板,而是为了自己,为了分享。因此他们的文档往往读起来很有趣,很实用。当然,这会让老板有时候很头疼,因为程序员不那么“听话”。他们不是给老板交差,而是要实现自己的想法,自己的设计,自己的完美。说白了,就是美国程序员有时候想法多了点。

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

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

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

相关推荐

    程序员专用个人知识管理

    程序员专用个人知识管理是针对开发人员设计的一种高效的知识整理与检索工具。对于程序员而言,每天都要接触大量的技术文档、代码示例、问题解决方案等信息,这些知识如果不进行有效管理,容易变得杂乱无章,影响工作...

    程序员浏览器程序员浏览器

    它可能支持自定义快捷键、多标签管理、网页源码查看、JavaScript控制台等功能,以满足程序员日常开发中的各种需求。 【标签】:“程序员浏览器程序员浏览器”标签进一步强调了这款浏览器的主要目标用户群体——...

    WINDOWS程序员使用指南 DLL和内存管理

    《WINDOWS程序员使用指南》主要涵盖了DLL(动态链接库)和内存管理这两个关键的编程主题,这对于Windows平台上的软件开发人员来说至关重要。DLL是Windows操作系统中一个核心特性,它允许多个程序共享同一段代码和...

    计算机程序员考试题

    计算机程序员考试题是程序员考试必备的复习材料,本节总结了计算机程序员考试题中重要的知识点,涵盖操作系统、计算机系统、存储管理、进程管理、设备管理、文件管理、作业调度等方面的知识。 一、操作系统 * 操作...

    WINDOWS程序员使用指南(一)----DLL和内存管理

    在Windows操作系统中,DLL(Dynamic Link Library)和内存管理是两个至关重要的编程概念,尤其对于Windows程序员来说,理解和掌握它们是提升程序效率和稳定性的关键。这篇指南将深入探讨这两个主题,帮助程序员更好...

    程序员工资程序员工资程序员工资

    初级程序员与有多年经验的资深工程师相比,薪资通常较低。随着经验的增长,程序员不仅能解决更复杂的问题,还能指导团队,提高项目效率,因此他们的价值也随之增加。 地理位置也对程序员工资产生重大影响。硅谷、...

    程序员第二步:从程序员到项目经理

    首先,程序员与项目经理虽然都属于IT行业中的职位,但他们的工作职责、技能要求、以及日常活动有着根本的不同。程序员一般专注于软件开发的具体实现,包括编写、测试和维护代码,而项目经理则是负责整个项目的规划、...

    程序员、网络管理员考试资料

    程序员、网络管理员考试资料

    大公司是如何做信息安全管理的 |程序员注意事项 |Java/Python/C语言/C++等项目管理

    大公司是如何做信息安全管理的__程序员注意事项__Java_Python_C语言_C++等项目管理

    C#与.NET程序员面试宝典

    《C#与.NET程序员面试宝典》取材于各大IT公司的历年面试题252个(包括研发类笔试及口试题目、情商及智商类题目),详细分析了应聘C#与.NET程序员职位的常见考点。《C#与.NET程序员面试宝典》主要内容包括:面试流程...

    程序员的自我管理.doc

    程序员的自我管理.doc

    vc++程序员必读vc++程序员必读

    vc++程序员必读vcvc++程序员必读++程序员必读vc++程序员必读

    程序员教程(pdf)

    教材会讲解文件操作、进程与线程、内存管理以及I/O模型。了解这些知识能帮助你在实际开发中更好地与操作系统交互,优化程序性能。 数据库是很多应用的基础,因此教材也会涉及SQL语言,包括数据查询、插入、更新和...

    程序员项目交接文档

    人事模块是程序员项目交接文档的重要组成部分,它涵盖了人事管理的所有方面,包括人事数据的存储、查询、修改和删除等功能。在该模块中,程序员需要详细记录人事数据的结构和关系,包括用户表、角色表、部门表等,...

    女程序员征婚需求分析与代码

    女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码

    程序员写的后台管理系统模板

    【程序员写的后台管理系统模板】是一个基于C#编程语言和MVC3框架开发的后台管理界面模板,适合初学者和有经验的C#程序员用于快速构建自己的网站后台系统。MVC(Model-View-Controller)是一种设计模式,它将应用程序...

    程序员记事本,供程序员保存经常用到的代码

    5. **版本控制**:允许程序员对代码片段进行版本管理,查看历史修改记录,方便回溯。 6. **共享与协作**:可以将代码笔记分享给团队成员,促进团队间的知识交流和合作。 7. **云同步**:支持云同步功能,确保代码...

    从程序员到行业专家

    在这个过程中,程序员不仅要掌握扎实的技术知识,还需要了解所服务行业的业务流程和管理知识,从而在技术实现与业务管理两方面都能够得心应手。成为行业专家需要一个长期的、艰苦的过程,期间,程序员必须戒骄戒躁,...

    最简单的程序员记事本

    《程序员记事本:高效日志管理与时间追踪》 在快速发展的信息技术行业中,程序员的工作繁重而复杂,有效的时间管理和任务跟踪对于提高工作效率至关重要。"程序员记事本"正是一款专为程序员设计的轻量级工具,它以其...

Global site tag (gtag.js) - Google Analytics