程式設計師必須走向專業化

2021-04-15 10:52:25 字數 2631 閱讀 3233

上週六(2月23日),ieee-cs力推的csdp認證培訓第三期班在中關村創新研修學院開班。這次的開班儀式很有特色,主辦方特別舉辦了乙個軟體工程研討會。我趕到會場的時候正趕上中軟國際總經理陳尚義先生的演講,主題是軟體工程師的專業性問題。陳先生在美國矽谷工作多年,現在中軟集團擔任高層管理工作,又在csdp培訓中擔任講師,對中美軟體產業都有切身體驗,對這個問題理解很深。我一落座就被陳先生的話題吸引。在演講中,陳先生提出自己的乙個觀察:矽谷軟體工程師的平均效率(或說生產率)比北京的軟體工程師高得多,其差距之大,可能達到10倍之多。

剛聽到這一論斷,我還是有些震驚的,因為以我從事**工作五年的所見所聞,中國軟體工程師的「外部形象」還是不錯的,很多老外都一再表示對中國工程師的天才和勤奮表示驚訝,即使我再三追問不足和建議,他們通常也就是從牙縫裡擠出「經驗不足」幾個字。像陳先生這種直言不諱,我是第一次聽到。不過轉念一想,又有些懷疑,老外素以坦率著稱,當真有這麼大的差距,沒有必要在我面前言不由衷。況且,矽谷的軟體工程師中,華人亦不佔少數,說中國人效率低?我有點不服。

接著往下聽就明白了,陳先生指出,這種差距不是「中國人」與「美國人」的差距,而是「非專業」與「專業」的差距。無論在**,非專業軟體工程師與專業軟體工程師在效率上差距十倍甚至十幾倍,這並不是什麼誇大的數字。至於表現出來的北京與矽谷的差距,其原因在於中國的專業工程師數量太少,非專業工程師佔主流。而矽谷地區南郭先生比較難以濫竽充數,專業程式設計師佔主流,體現在平均生產率上,自然會有那麼大的差別。陳先生並且指出,從某種角度看,中美之間軟體工程師的薪酬差距之大,是兩地平均生產率差距的體現,他說:「如果你是一名真正專業的軟體工程師,你在**都應該能達到相似的收入水平,因為軟體工業是真正全球化的產業。」

這是乙個讓我非常感興趣的話題。我們都知道,在《沒有銀彈》中,軟體工程的老前輩fred brooks提出的「唯一」能成數量級提公升軟體生產率的辦法,就是雇用天才的程式設計師,所以「天才」與「普通」之間十倍甚至幾十倍的效率差距,這是大家都知道的事情。但是按照一直以來的理解,天才程式設計師是那種腦瓜子特靈光,演算法功底紮實,寫程式又快又好的人精,是可望而不可求的,也沒有什麼有效的訓練手段來成批量地產生。可是「專業軟體工程師」就不一樣了,這裡所謂專業,是指具有規範化的價值觀和知識體系,規範化的工作習慣和職業紀律,職業化的工作作風和流程,當然也具有相應的技能和經驗。很顯然,這樣的人才,不但是每乙個普通程式設計師都完全能夠達到的,而且也是能夠大規模系統化培養的。如果這種觀點正確,中國的程式設計師們就不應該整天琢磨著要趕哪個新,逐什麼潮,一會兒面向這個,一會又面向那個,左乙個語言右乙個框架地折騰著,而是應該踏踏實實在專業性上下功夫。

這讓我想起了敏捷技術大師kent beck的一句名言:「我不是個優秀的程式設計師,我只是乙個有著優秀習慣的普通程式設計師。」這裡所謂的「優秀習慣」,應該就是「專業化」的乙個重要體現。kent beck的這句話,實際上還暗示了傳統觀念中「優秀程式設計師」與現在所需的真正有價值的軟體工程師之間的顯著不同。也就是說,你不能因為程式寫的好,就想當然地認為自己是合格的軟體工程師,沒有專業素養,你就不算是專業人。

之後的這幾天裡,我分別就這個問題與好幾個人討論過。他們中間有美國軟體企業的技術負責人,有在國內奮鬥多年的軟體企業管理者,又在某些領域積累多年的專業人士,也有正在創業中激烈拼搏的程式設計師兼老闆,有大公司的,有小公司的,有中國人,有美國人,有去過美國的中國人,也有來到中國的美國人。他們的意見,可以說是異口同聲地同意陳尚義先生的觀點,並且表達了對中國程式設計師職業性水平不足的不滿。相比之下,我們中國人自己對這個問題的態度都比較激烈,倒是老外們反而比較客氣,有乙個人謹慎地說:「也許沒有十倍那麼大,但是肯定比五倍要多。」我苦笑道:「七八倍也受不了啊,長遠來講,中國人就必須一點不差才行。」

從這些討論中,我得到的結論是,儘管他們也非常希望獲得「天才程式設計師」,但是實質上是把對程式設計師專業化的要求放在天才前面的,也就是說,寧要專業的工程師,不要不專業的「牛人」,當然,專業化的大牛是最好不過了,但是現實地說,這種人確實很難遇到,既然如此,就要強調專業性在前。他們認為,專業性保證了乙個程式設計師的技能和工作能夠為組織帶來效益,而他們只會為這種效益付酬,不會出於對「大牛」的敬仰之情而主動上繳貢銀。而且,他們也相信,只要乙個人專業化程度足夠,技術和經驗上的不足是容易在實踐中彌補的。

由此看來,所謂「十倍差距說」,成立的可能性是很大的。而整個軟體界對於程式設計師專業性的呼喚,也是實實在在的。這讓我想起差不多兩年前,我採訪群碩軟體創始人劉英武先生的時候,這位2023年代的普林斯頓電腦科學博士,前ibm的高階副總裁,sql語言的創造者就曾經強有力地表達過類似的看法。他搬著指頭對我說:「技術是最容易解決的問題。你說那個.net,給你多長時間你能掌握?半年夠不夠?一年夠不夠?j2ee怎麼樣,一年可以嗎?一年半?就算是最複雜的c++,三年下來,你還搞不定嗎?可是建立乙個世界一流的、商業上成功的軟體團隊需要多長時間?十五年,二十年!而且一點都不能鬆懈。我不明白,為什麼有那麼多人為自己的技術沾沾自喜?我在ibm的時候,手下全是來自美國一流名校的博士,但不管他們技術多好,如果不能遵守discipline,不能給組織帶來效益,那就一點價值都沒有!在中國,很有一些程式設計師,以為自己技術高,就應該拿高薪,就應該牛,就可以不要紀律。他們很少問自己,究竟給團隊帶來什麼價值,究竟給企業帶來什麼價值,究竟給客戶帶來什麼價值?在我看來,這就是不專業,不合格。我相信,這種情況遲早會過去的,對於軟體工程師的評價,很快會回歸價值。也只有到了那個時候,中國的軟體才會有實實在在的快速發展。」

兩年前我們覺得這段話「太刺激」,沒有發表。現在看來,當年劉先生的觀點已經成為共識。毫無疑問,這意味著中國程式設計師孤芳自賞的時代即將結束,我們應當開始高度重視組織的利益和價值,並且通過「專業化」修煉來實現從個體戶到企業人的轉變。

什麼是專業化的程式設計師

孟巖採訪 群碩軟體 創始人劉英武先生的時候,這位1960年代的普林斯頓電腦科學博士,前ibm的高階副總裁,sql語言的創造者就曾經強有力地表達過類似的看法。他搬著指頭對孟巖說 技術是最容易解決的問題。你說那個.net,給你多長時間你能掌握?半年夠不夠?一年夠不夠?j2ee怎麼樣,一年可以嗎?一年半?...

程式設計師的專業化是軟體產業發展的必由之路

但是,我認為道理一定是沒錯的。正像孟巖先生所說的,軟體天才可遇而不可求,但軟體專業人才卻絕對是可以培養出來的。如今的軟體行業,已經不是刀耕火種的石器時代,僅靠幾個核心的軟體大牛是很難做出產品來的,更不要說緊張起來要急死人的軟體專案。乙個軟體團隊之所以能團結在一起,靠的是紀律和員工遵守紀律的高度自覺。...

程式設計師的專業化是軟體產業發展的必由之路

但是,我認為道理一定是沒錯的。正像孟巖先生所說的,軟體天才可遇而不可求,但軟體專業人才卻絕對是可以培養出來的。如今的軟體行業,已經不是刀耕火種的石器時代,僅靠幾個核心的軟體大牛是很難做出產品來的,更不要說緊張起來要急死人的軟體專案。乙個軟體團隊之所以能團結在一起,靠的是紀律和員工遵守紀律的高度自覺。...