中國程序員可能是世界上最聰明的程序員,這一點(diǎn)你猜到了嗎?你認(rèn)同嗎?看完下面的分析,再說說你們的看法吧~~ 最近以裁判的身份參加了公司舉辦的編程大賽,發(fā)現(xiàn)高手云集,對(duì)公司內(nèi)部的程序員能力也有了更深入的了解。我覺得編程能力對(duì)程序員而言,雖然很重要,但并不是全部。那么作為一個(gè)程序員,到底應(yīng)該具備什么樣的能力呢?這個(gè)話題顯然太大。不過我覺得可以看看其它國家的程序員,也許可以得到一些借鑒。我有幸和中國,美國,印度和日本四國程序員有比較深入的合作過。雖然他們不一定有代表性,但我覺得他們的共性還是比較明顯的。以下的比較純屬個(gè)人見解,歡迎指正。 首先是日本程序員。他們的特點(diǎn)是非常仔細(xì)。我認(rèn)為很主要的一個(gè)原因是日本公司的需求非常細(xì)致。細(xì)致到在網(wǎng)頁上,連一個(gè)像素都不能偏差的地步。另外,日本人的執(zhí)行力非常強(qiáng),對(duì)老板的承諾比命還重要。一個(gè)項(xiàng)目可以做到連續(xù)3個(gè)月天天加班,每天只睡4個(gè)小時(shí)。然而,高執(zhí)行力背后的代價(jià)是低創(chuàng)造力。在日新月異的互聯(lián)網(wǎng)今天,很少聽說日本工程師發(fā)明了哪些重要的技術(shù)。與其說這些特點(diǎn)是日本程序員的,不如說是大部分日本人的。因?yàn)樵谌毡疚幕校非笃焚|(zhì)和遵守等級(jí)制度是根深蒂固的。另外,技術(shù)領(lǐng)域中的很多專業(yè)詞匯是外來語,以英語為主。這些專業(yè)詞匯往往會(huì)被翻譯成片假名。而片假名的發(fā)言有時(shí)候和英語大相徑庭,導(dǎo)致溝通的困難。比如病毒一詞在英語中是Virus,發(fā)音為歪儒斯,而日語的發(fā)音是味魯斯。再例如服務(wù)器(Server)一詞在日語中的發(fā)音是薩巴,和英文發(fā)言簡直風(fēng)牛馬不相及。因此與日本程序員溝通是比較痛苦的,除非你懂日語。 其次來看看印度程序員。我所接觸的印度工程師都是在美國工作的。雖然他們和印度本地的工程師肯定有區(qū)別,不過相似的地方應(yīng)該更多一些吧。我覺得他們的普遍優(yōu)點(diǎn)就一個(gè):流程做得好,文檔寫得好。但是他們寫代碼的能力,我個(gè)人的觀點(diǎn)是一般般。我想這里面有兩層原因。一是有相當(dāng)一部分在美國工作的印度程序員是半路出家。轉(zhuǎn)行做程序員是為了生存而已。二是印度程序員在算法,數(shù)據(jù)機(jī)構(gòu)等基本功方面的水平明顯低于中國程序員的。這就導(dǎo)致他們寫的很多代碼邏輯性不強(qiáng)和性能不優(yōu)(以我的標(biāo)準(zhǔn)來看)。不過這兩個(gè)問題在一定程度上被大量的文檔和高性能的硬件設(shè)備彌補(bǔ)和掩蓋了。在溝通方面,印度人的英語發(fā)音對(duì)西方人而言幾乎沒有問題,但很難被中國人聽懂,甚至往往被國人懷疑他們是不是在說英文。 從某種意義上講,日本程序員和印度程序員十分相似。他們都很敬業(yè),都能讓領(lǐng)導(dǎo)比較滿意,但不要過多地期望他們能做得更好,因?yàn)樗麄兊哪繕?biāo)就是完成領(lǐng)導(dǎo)指派的任務(wù)。日本程序員讓領(lǐng)導(dǎo)滿意的方法是不折不扣的執(zhí)行和狂熱的加班。而印度程序員讓領(lǐng)導(dǎo)滿意的方法是通過大量的文檔來告訴領(lǐng)導(dǎo)他們的工作意義重大,流程嚴(yán)謹(jǐn),資料齊全,而且成本很低。夸張一點(diǎn)地講:日本程序員善于做領(lǐng)導(dǎo)想做的事,印度程序員善于說領(lǐng)導(dǎo)想聽的話。 接下來說說美國程序員。美國程序員千奇百怪,好像很難只用幾個(gè)詞來定義他們。可能是因?yàn)槊绹且粋(gè)移民國家吧,本來就千奇百怪。但大部分程序員有一個(gè)共同的特點(diǎn):喜歡技術(shù),甚至崇尚技術(shù)。這點(diǎn)在硅谷尤為突出。這就導(dǎo)致每個(gè)技術(shù)領(lǐng)域中都有一些人會(huì)廢寢忘食地鉆研。其實(shí)這和打游戲一樣,如果你著了迷,自然會(huì)忘了吃,忘了喝,拼命地玩。我所認(rèn)識(shí)的美國程序員還有一個(gè)特點(diǎn),才藝能力都不錯(cuò)。以前在波士頓工作的一家公司中,幾十位工程師居然可以組成一個(gè)交響樂團(tuán)。有小提琴,大提琴,小號(hào),豎琴,打擊樂等各種各樣的西洋樂器手。而且這些哥們姐們還不是一般地玩玩,周末都有自己的固定樂隊(duì),經(jīng)常參加社區(qū)的表演。更有甚者,在硅谷工作時(shí)的一位同事,白天寫程序,晚上在自家的車庫里練習(xí)乒乓球,竟然代表美國參加了悉尼和雅典的兩屆奧運(yùn)會(huì)。說起寫文檔的能力,美國程序員絕對(duì)不亞于印度人。但是美國人寫文檔不是為了老板,而是為了自己,為了分享。因此他們的文檔往往讀起來很有趣,很實(shí)用。當(dāng)然,這會(huì)讓老板有時(shí)候很頭疼,因?yàn)槌绦騿T不那么“聽話”。他們不是給老板交差,而是要實(shí)現(xiàn)自己的想法,自己的設(shè)計(jì),自己的完美。說白了,就是美國程序員有時(shí)候想法多了點(diǎn)。 最后是我們中國的程序員。和其他國家的程序員相比,我覺得他們的特點(diǎn)還是比較明顯的。他們的算法能力普遍高于其它幾個(gè)國家的。這可能是我們的教育體制導(dǎo)致的,比較注重理論知識(shí)。反過來,實(shí)踐能力就相對(duì)差些。我們的程序員執(zhí)行能力并不差,但在解決問題的能力上明顯不足。往往需要把任務(wù)分解得很細(xì)以后才能完成,獨(dú)立解決問題的能力不夠。另外在表達(dá)能力上也相對(duì)差些。相信大家一定見過技術(shù)水平很高,但表達(dá)能力很差的工程師。最好笑的是,我見過不少工程師拿著一支寫不出字的白板筆(我們的白板筆質(zhì)量也確實(shí)不咋樣),有模有樣地在白板上寫字。仿佛聽眾可以看得到他/她寫得是什么。因?yàn)樗?她完全沉浸在自己的邏輯中,完全不去體會(huì)聽眾的感受。不過我認(rèn)為這些缺點(diǎn)并不嚴(yán)重。因?yàn)檫@些是屬于技能和經(jīng)驗(yàn)方面的東西,是可以通過實(shí)際工作或者培訓(xùn)來提升的。我認(rèn)為國內(nèi)程序員最大的問題還是所處的環(huán)境不利,導(dǎo)致相當(dāng)一部分人比較浮躁和急功近利。真正能夠沉下心來鉆研技術(shù),熱愛技術(shù)的是鳳毛麟角。我在面試的時(shí)候,常常發(fā)現(xiàn)工程師知識(shí)面還挺廣,但深度幾乎沒有。這樣的人很難在技術(shù)領(lǐng)域有所作為。我希望找到的人是,敢于承認(rèn)自己不會(huì)的地方,但是只要會(huì)的東西,哪怕就一樣,就要一定比別人理解得透,鉆研得深。我相信一個(gè)人如果在某一個(gè)問題上比別人做得好,在其它問題上也一定有能力超越別人。 雖然比較下來,看到中國程序員不少的問題。但作為群體,中國的程序員可能是全世界最聰明的工程師群體。因?yàn)榄h(huán)境的原因,使得他們不得不想法很多,顧慮很多,無法最大程度地將聰明才智發(fā)揮在技術(shù)上。改變這種狀況首先要從公司的管理層開始。只有技術(shù)負(fù)責(zé)人熱愛技術(shù),追求卓越,才可能為技術(shù)人員創(chuàng)造環(huán)境,激勵(lì)他們鉆研和創(chuàng)新。技術(shù)負(fù)責(zé)人需要深入項(xiàng)目,和工程師們一起討論技術(shù)設(shè)計(jì),從而通過具體問題來提升工程師的能力,同時(shí)也防止自己的技術(shù)能力滑坡。在技術(shù)管理上,很多國內(nèi)的公司把工程師簡單地作為資源,過于強(qiáng)調(diào)流程管理和資源管理。我的觀點(diǎn)是:工程師不是高級(jí)藍(lán)領(lǐng),不能以管理生產(chǎn)線的方式來進(jìn)行管理。優(yōu)良的環(huán)境只有靠大家一起來創(chuàng)造。中國工程師一定可以成為世界上最優(yōu)秀的工程師群體。 |