程序员必须走向专业化

[转载自:http://blog.csdn.net/myan/archive/2008/02/28/2127238.aspx]

上周六(2月23日),IEEE-CS力推的CSDP认证培训第三期班在中关村创新研修学院开班。这次的开班仪式很有特色,主办方特别举办了一个软件工程研讨会。我赶到会场的时候正赶上中软国际总经理陈尚义先生的演讲,主题是软件工程师的专业性问题。陈先生在美国硅谷工作多年,现在中软集团担任高层管理工作,又在CSDP培训中担任讲师,对中美软件产业都有切身体验,对这个问题理解很深。我一落座就被陈先生的话题吸引。在演讲中,陈先生提出自己的一个观察:硅谷软件工程师的平均效率(或说生产率)比北京的软件工程师高得多,其差距之大,可能达到10倍之多。

刚听到这一论断,我还是有些震惊的,因为以我从事媒体工作五年的所见所闻,中国软件工程师的“外部形象”还是不错的,很多老外都一再表示对中国工程师的天才和勤奋表示惊讶,即使我再三追问不足和建议,他们通常也就是从牙缝里挤出“经验不足”几个字。像陈先生这种直言不讳,我是第一次听到。不过转念一想,又有些怀疑,老外素以坦率著称,当真有这么大的差距,没有必要在我面前言不由衷。况且,硅谷的软件工程师中,华人亦不占少数,说中国人效率低?我有点不服。

接着往下听就明白了,陈先生指出,这种差距不是“中国人”与“美国人”的差距,而是“非专业”与“专业”的差距。无论在哪里,非专业软件工程师与专业软件工程师在效率上差距十倍甚至十几倍,这并不是什么夸大的数字。至于表现出来的北京与硅谷的差距,其原因在于中国的专业工程师数量太少,非专业工程师占主流。而硅谷地区南郭先生比较难以滥竽充数,专业程序员占主流,体现在平均生产率上,自然会有那么大的差别。陈先生并且指出,从某种角度看,中美之间软件工程师的薪酬差距之大,是两地平均生产率差距的体现,他说:“如果你是一名真正专业的软件工程师,你在哪里都应该能达到相似的收入水平,因为软件工业是真正全球化的产业。”

这是一个让我非常感兴趣的话题。我们都知道,在《没有银弹》中,软件工程的老前辈Fred Brooks提出的“唯一”能成数量级提升软件生产率的办法,就是雇用天才的程序员,所以“天才”与“普通”之间十倍甚至几十倍的效率差距,这是大家都知道的事情。但是按照一直以来的理解,天才程序员是那种脑瓜子特灵光,算法功底扎实,写程序又快又好的人精,是可望而不可求的,也没有什么有效的训练手段来成批量地产生。可是“专业软件工程师”就不一样了,这里所谓专业,是指具有规范化的价值观和知识体系,规范化的工作习惯和职业纪律,职业化的工作作风和流程,当然也具有相应的技能和经验。很显然,这样的人才,不但是每一个普通程序员都完全能够达到的,而且也是能够大规模系统化培养的。如果这种观点正确,中国的程序员们就不应该整天琢磨着要赶哪个新,逐什么潮,一会儿面向这个,一会又面向那个,左一个语言右一个框架地折腾着,而是应该踏踏实实在专业性上下功夫。

这让我想起了敏捷技术大师Kent Beck的一句名言:“我不是个优秀的程序员,我只是一个有着优秀习惯的普通程序员。”这里所谓的“优秀习惯”,应该就是“专业化”的一个重要体现。Kent Beck的这句话,实际上还暗示了传统观念中“优秀程序员”与现在所需的真正有价值的软件工程师之间的显著不同。也就是说,你不能因为程序写的好,就想当然地认为自己是合格的软件工程师,没有专业素养,你就不算是专业人。

之后的这几天里,我分别就这个问题与好几个人讨论过。他们中间有美国软件企业的技术负责人,有在国内奋斗多年的软件企业管理者,又在某些领域积累多年的专业人士,也有正在创业中激烈拼搏的程序员兼老板,有大公司的,有小公司的,有中国人,有美国人,有去过美国的中国人,也有来到中国的美国人。他们的意见,可以说是异口同声地同意陈尚义先生的观点,并且表达了对中国程序员职业性水平不足的不满。相比之下,我们中国人自己对这个问题的态度都比较激烈,倒是老外们反而比较客气,有一个人谨慎地说:“也许没有十倍那么大,但是肯定比五倍要多。”我苦笑道:“七八倍也受不了啊,长远来讲,中国人就必须一点不差才行。”

从这些讨论中,我得到的结论是,尽管他们也非常希望获得“天才程序员”,但是实质上是把对程序员专业化的要求放在天才前面的,也就是说,宁要专业的工程师,不要不专业的“牛人”,当然,专业化的大牛是最好不过了,但是现实地说,这种人确实很难遇到,既然如此,就要强调专业性在前。他们认为,专业性保证了一个程序员的技能和工作能够为组织带来效益,而他们只会为这种效益付酬,不会出于对“大牛”的敬仰之情而主动上缴贡银。而且,他们也相信,只要一个人专业化程度足够,技术和经验上的不足是容易在实践中弥补的。

由此看来,所谓“十倍差距说”,成立的可能性是很大的。而整个软件界对于程序员专业性的呼唤,也是实实在在的。这让我想起差不多两年前,我采访群硕软件创始人刘英武先生的时候,这位1960年代的普林斯顿计算机科学博士,前IBM的高级副总裁,SQL语言的创造者就曾经强有力地表达过类似的看法。他搬着指头对我说:“技术是最容易解决的问题。你说那个.NET,给你多长时间你能掌握?半年够不够?一年够不够?J2EE怎么样,一年可以吗?一年半?就算是最复杂的C++,三年下来,你还搞不定吗?可是建立一个世界一流的、商业上成功的软件团队需要多长时间?十五年,二十年!而且一点都不能松懈。我不明白,为什么有那么多人为自己的技术沾沾自喜?我在IBM的时候,手下全是来自美国一流名校的博士,但不管他们技术多好,如果不能遵守discipline,不能给组织带来效益,那就一点价值都没有!在中国,很有一些程序员,以为自己技术高,就应该拿高薪,就应该牛,就可以不要纪律。他们很少问自己,究竟给团队带来什么价值,究竟给企业带来什么价值,究竟给客户带来什么价值?在我看来,这就是不专业,不合格。我相信,这种情况迟早会过去的,对于软件工程师的评价,很快会回归价值。也只有到了那个时候,中国的软件才会有实实在在的快速发展。”

两年前我们觉得这段话“太刺激”,没有发表。现在看来,当年刘先生的观点已经成为共识。毫无疑问,这意味着中国程序员孤芳自赏的时代即将结束,我们应当开始高度重视组织的利益和价值,并且通过“专业化”修炼来实现从个体户到企业人的转变。

你可能感兴趣的:(程序员)