当前位置:首页 >> 软件 >> 2008年2月29日
[ 关键词:程序员 原文/来源链接 ]
硅谷软件工程师的平均效率比北京的软件工程师高10倍
中软国际总经理陈尚义先生演讲的主题是软件工程师的专业性问题。陈先生在美国硅谷工作多年,现在中软集团担任高层管理工作,又在CSDP培训中担任讲师,对中美软件产业都有切身体验,对这个问题理解很深。我一落座就被陈先生的话题吸引。在演讲中,陈先生提出自己的一个观察:硅谷软件工程师的平均效率(或说生产率)比北京的软件工程师高得多,其差距之大,可能达到10倍之多。
刚听到这一论断,我还是有些震惊的,因为以我从事媒体工作五年的所见所闻,中国软件工程师的“外部形象”还是不错的,很多老外都一再表示对中国工程师的天才和勤奋表示惊讶,即使我再三追问不足和建议,他们通常也就是从牙缝里挤出“经验不足”几个字。像陈先生这种直言不讳,我是第一次听到。不过转念一想,又有些怀疑,老外素以坦率著称,当真有这么大的差距,没有必要在我面前言不由衷。况且,硅谷的软件工程师中,华人亦不占少数,说中国人效率低?我有点不服。
接着往下听就明白了,陈先生指出,这种差距不是“中国人”与“美国人”的差距,而是“非专业”与“专业”的差距。无论在哪里,非专业软件工程师与专业软件工程师在效率上差距十倍甚至十几倍,这并不是什么夸大的数字。至于表现出来的北京与硅谷的差距,其原因在于中国的专业工程师数量太少,非专业工程师占主流。而硅谷地区南郭先生比较难以滥竽充数,专业程序员占主流,体现在平均生产率上,自然会有那么大的差别。陈先生并且指出,从某种角度看,中美之间软件工程师的薪酬差距之大,是两地平均生产率差距的体现,他说:“如果你是一名真正专业的软件工程师,你在哪里都应该能达到相似的收入水平,因为软件工业是真正全球化的产业。”
这是一个让我非常感兴趣的话题。我们都知道,在《没有银弹》中,软件工程的老前辈Fred Brooks提出的“唯一”能成数量级提升软件生产率的办法,就是雇用天才的程序员,所以“天才”与“普通”之间十倍甚至几十倍的效率差距,这是大家都知道的事情。但是按照一直以来的理解,天才程序员是那种脑瓜子特灵光,算法功底扎实,写程序又快又好的人精,是可望而不可求的,也没有什么有效的训练手段来成批量地产生。可是“专业软件工程师”就不一样了,这里所谓专业,是指具有规范化的价值观和知识体系,规范化的工作习惯和职业纪律,职业化的工作作风和流程,当然也具有相应的技能和经验。很显然,这样的人才,不但是每一个普通程序员都完全能够达到的,而且也是能够大规模系统化培养的。如果这种观点正确,中国的程序员们就不应该整天琢磨着要赶哪个新,逐什么潮,一会儿面向这个,一会又面向那个,左一个语言右一个框架地折腾着,而是应该踏踏实实在专业性上下功夫。
这让我想起了敏捷技术大师Kent Beck的一句名言:“我不是个优秀的程序员,我只是一个有着优秀习惯的普通程序员。”这里所谓的“优秀习惯”,应该就是“专业化”的一个重要体现。Kent Beck的这句话,实际上还暗示了传统观念中“优秀程序员”与现在所需的真正有价值的软件工程师之间的显著不同。也就是说,你不能因为程序写的好,就想当然地认为自己是合格的软件工程师,没有专业素养,你就不算是专业人。
之后的这几天里,我分别就这个问题与好几个人讨论过。他们中间有美国软件企业的技术负责人,有在国内奋斗多年的软件企业管理者,又在某些领域积累多年的专业人士,也有正在创业中激烈拼搏的程序员兼老板,有大公司的,有小公司的,有中国人,有美国人,有去过美国的中国人,也有来到中国的美国人。他们的意见,可以说是异口同声地同意陈尚义先生的观点,并且表达了对中国程序员职业性水平不足的不满。相比之下,我们中国人自己对这个问题的态度都比较激烈,倒是老外们反而比较客气,有一个人谨慎地说:“也许没有十倍那么大,但是肯定比五倍要多。”我苦笑道:“七八倍也受不了啊,长远来讲,中国人就必须一点不差才行。”
刚听到这一论断,我还是有些震惊的,因为以我从事媒体工作五年的所见所闻,中国软件工程师的“外部形象”还是不错的,很多老外都一再表示对中国工程师的天才和勤奋表示惊讶,即使我再三追问不足和建议,他们通常也就是从牙缝里挤出“经验不足”几个字。像陈先生这种直言不讳,我是第一次听到。不过转念一想,又有些怀疑,老外素以坦率著称,当真有这么大的差距,没有必要在我面前言不由衷。况且,硅谷的软件工程师中,华人亦不占少数,说中国人效率低?我有点不服。
接着往下听就明白了,陈先生指出,这种差距不是“中国人”与“美国人”的差距,而是“非专业”与“专业”的差距。无论在哪里,非专业软件工程师与专业软件工程师在效率上差距十倍甚至十几倍,这并不是什么夸大的数字。至于表现出来的北京与硅谷的差距,其原因在于中国的专业工程师数量太少,非专业工程师占主流。而硅谷地区南郭先生比较难以滥竽充数,专业程序员占主流,体现在平均生产率上,自然会有那么大的差别。陈先生并且指出,从某种角度看,中美之间软件工程师的薪酬差距之大,是两地平均生产率差距的体现,他说:“如果你是一名真正专业的软件工程师,你在哪里都应该能达到相似的收入水平,因为软件工业是真正全球化的产业。”
这是一个让我非常感兴趣的话题。我们都知道,在《没有银弹》中,软件工程的老前辈Fred Brooks提出的“唯一”能成数量级提升软件生产率的办法,就是雇用天才的程序员,所以“天才”与“普通”之间十倍甚至几十倍的效率差距,这是大家都知道的事情。但是按照一直以来的理解,天才程序员是那种脑瓜子特灵光,算法功底扎实,写程序又快又好的人精,是可望而不可求的,也没有什么有效的训练手段来成批量地产生。可是“专业软件工程师”就不一样了,这里所谓专业,是指具有规范化的价值观和知识体系,规范化的工作习惯和职业纪律,职业化的工作作风和流程,当然也具有相应的技能和经验。很显然,这样的人才,不但是每一个普通程序员都完全能够达到的,而且也是能够大规模系统化培养的。如果这种观点正确,中国的程序员们就不应该整天琢磨着要赶哪个新,逐什么潮,一会儿面向这个,一会又面向那个,左一个语言右一个框架地折腾着,而是应该踏踏实实在专业性上下功夫。
这让我想起了敏捷技术大师Kent Beck的一句名言:“我不是个优秀的程序员,我只是一个有着优秀习惯的普通程序员。”这里所谓的“优秀习惯”,应该就是“专业化”的一个重要体现。Kent Beck的这句话,实际上还暗示了传统观念中“优秀程序员”与现在所需的真正有价值的软件工程师之间的显著不同。也就是说,你不能因为程序写的好,就想当然地认为自己是合格的软件工程师,没有专业素养,你就不算是专业人。
之后的这几天里,我分别就这个问题与好几个人讨论过。他们中间有美国软件企业的技术负责人,有在国内奋斗多年的软件企业管理者,又在某些领域积累多年的专业人士,也有正在创业中激烈拼搏的程序员兼老板,有大公司的,有小公司的,有中国人,有美国人,有去过美国的中国人,也有来到中国的美国人。他们的意见,可以说是异口同声地同意陈尚义先生的观点,并且表达了对中国程序员职业性水平不足的不满。相比之下,我们中国人自己对这个问题的态度都比较激烈,倒是老外们反而比较客气,有一个人谨慎地说:“也许没有十倍那么大,但是肯定比五倍要多。”我苦笑道:“七八倍也受不了啊,长远来讲,中国人就必须一点不差才行。”
[ 关键词:程序员 原文/来源链接 ]



观点不敢苟同
这个问题不在程序员,在于公司的运作机制。老想程序员拿来就用,根本没有培养和指导,怎么可能有大量的专业程序员?公司用人机制和项目管理水平的低劣导致程序员干很久也无法专业。