目前中國程序員和美國程序員的差距在哪裡?

這裡說的差距,是指平均技術水平,我知道國內也有很多高手!我希望大家能夠從各個方面做出客觀的討論!
又:面對這些差距,我們應該怎麼做?


視野。主要是因為牆,其次是因為英語。


沒在國內工作過,所以大部分是針對在美國的華人和美國本土工程師的差距.
1. 溝通能力:
在這點上差距非常明顯. 很多人說是英語問題, 但我覺得深層次的是思維方式問題. 和美國工程交流的時候, 你能很清晰的理解他的問題在哪裡, 他解決問題的切入點和具體思路. 在他們闡述問題的時候背景信息給得相當全面, 所以理解他們的問題很容易. 而當你闡述思路的時候, 他們也會非常用心的去理解你的思路, 幫你解決問題. 可華人這方面基本不行, 很多時候講一個問題根本不考慮別人的感受, 背景知識沒給全, 就直接開始講了,搞得很多人云里來霧裡去, 根本不知道他在講什麼. 有時候也不願意理解別人的想法, 就顧著自己講.
2. 解決問題能力
我們國家, 由於教育方式和美國不同, 所以出現了一個很有意思的現象. 如果給我們中國程序員, 規定好的方案, 我們普遍完成的非常好. 但如果沒有具體方案, 完全是一個開放性課題, 很多時候華人工程師完全無法下手. 但美國程序員這方面能力相當了得, 他們的探索研究能力非常強, 經過一定時間的研究後, 他們能提出一套非常具體有效的方案然後一步一步去解決問題. 這也是我們和美國教育的差別,一個善於解決問題, 另一個善於發現探索問題.
3. 技術實力
這方面主要是對比國內程序員和美國程序員.我們工作初期的時候美國程序差距不大.但問題是5年以後開始出現變化了, 已經不止一次聽人說所謂程序員吃青春飯這種理論了. 在一項技術上我們有多少人鑽研10年以上的? 多數人工作個5-6年就開始琢磨轉管理了. 雖然這5-6年我們代碼上的時間,積累的經驗可以說很多時候是高於美國程序員的. 但問題是之後我們就不幹了, 而美國程序員10年以上經驗的人有的是. 我以我們小組為例, 一個工作經驗是30年, 從dos時代就開發debugger一直干到現在, 一個24年工作經驗外加5年的博士研究經驗, 還有兩個從畢業到現在一直從事CLR diagnostic api的開發到現在基本都幹了十幾年了. 在國內我真的很難想像有這種團隊. 記得stackover上統計過, 程序員的黃金年齡應該在40歲左右, 但我們國內40歲的時候有幾個還願意寫程序呢.
4. 對技術的熱愛和對工作的耐心
實話講有多少人是熱愛編程的呢, 很多人學習程序想得都是那個方向火容易賺錢. 什麼技術火就學什麼. 然後去所謂牛逼的公司, 干牛逼的事情, 然後拿著幾十萬的工資. 很多人工作沒兩年都跳了3-4次了. 我不能說這種是錯誤的, 畢竟大家都是混口飯吃. 但看看美國程序就會發現差距, 像我之前說的很多人專註某一個領域幾十年. 我們現在都是想著自己開公司或者加入快要上市的公司, 然後上市了到達人生巔峰. 各種浮躁的風氣盛行. 可美國很多程序員其實我自己感覺想法不多(當然也有可能和我接觸的這些人有關), 他們想法很簡單, 對於編程這種事情更多的是那種單純的孩子似的熱愛吧.

====================================================================
5. 對於好程序員的定位
這點是看了底下的評論想到的, 在美國(當然也有可能是我們組的標準), 對於一個好工程師的評價不單單是對系統了解的深入程度, 解決多麼難得技術問題這麼簡單, 同時還有其他的一些要求, 一個是領導能力, 一個好的程序員不應該只是自己完成feature, 同時也要幫助或者指點其他組員克服技術上的難題. 另一個就是vision, 能夠把握技術的發展方向, 根據這些把握產品的發展方向. 雖然這個有點類似PM, 但和PM的區別是一個只是根據市場和客戶需求, 另一個是通過自己多年開發的開發經歷進行判斷. 我覺得比較好的例子就是我們組的.net native 和 reyujit項目, 或者是Facebook的php hack項目. 這些項目都是很多工程師的提出來的而不是PM. 還有就是交流協作能力這點我之前提過就不多說了. 而我們華人有時候對於好工程師的評價往往只是簡單認為技術好, 對系統了解就是好程序員. 至於我說的這幾點感覺並不是太在意. 所以一句話概括是我們華人認為你coding厲害, 你就厲害, 但老美有時候的想法是, 好的程序員並不是coding厲害那麼簡單.


============================================================
最後說明一點, 我只是針對我接觸這些人的情況, 可能會和矽谷的情況有一些不同. 事實上我認為即便是整個西雅圖氛圍和矽谷的氛圍都是不同的. 西雅圖經歷老的工程師是主力, 矽谷相對來講更年輕化當然也浮躁一些.


就是這種區別。


中國工程師打開百度,搜技術問題,翻兩三頁,搖頭嘆息,打開vpn,Google翻譯後的問題,點開鏈接(右鍵在新tab中打開),閱讀,把問題答案在腦中翻譯一遍,解決。
美國工程師
Google,點開,閱讀,解決。

=======以=下=鏈=接====與=本=題=無=關=========================
有個任性無比為所欲為的女朋友是什麼體驗? - 知乎用戶的回答
pvp玩家玩pve是種怎樣的體驗? - 知乎用戶的回答
為什麼男人對絲襪有幻想,會被誘惑,尤其是黑絲? - 知乎用戶的回答
月薪兩萬在北京能過上什麼樣的日子? - 知乎用戶的回答
目前中國程序員和美國程序員的差距在哪裡? - 知乎用戶的回答
============================================================


我在美國工作過、創業過,在中國工作過,創業過,在 freelancer 上發過外包接過外包,維護過開源項目,請證明比我接觸的人多再反對。

頂尖工程師水平:
美國 &> 中國 &> 日本 = 歐洲 = 韓國 &> 印度

平均水平:
中國 = 美國 &> 歐洲 = 印度 &> 日本 = 韓國

大型互聯網公司技術能力:
美國 &> 中國 &> 剩下全加起來

無論公司角度,還是計算機技術能力角度,現在世界上只有兩個國家能放在一起說,一個美國,一個中國。

=====
統一回復一下。

我接觸過很多三哥,寫的代碼根本不是人看的,三哥是把計算機和互聯網行業當做了低端製造業去做,能力真的不要太高看他們。印度那些外包公司很大程度只是他們能產出大量廉價會說英語的工程師而已,不代表技術又多好。

毛子和日本其實非常像,都有一些領袖級的人物,但平均水平非常低。我之前接觸過一些日本和俄羅斯的公司,他們還在拿至少10年前的那套東西搞開發。

國內互聯網行業從業者千萬不要妄自菲薄啊,至少 BAT 的平均水平不會比 Google + Facebook + 蘋果的平均水平差多少,國內更多是管理層的問題。真正技術上的差距差在2%的牛逼階層,這些公司有些叼炸天的大牛,這是國內互聯網公司不具備的。真正剩下的98%其實都在一個水平線上。

最後我其實也沒有回答問題,我完全贊同 @趙劼 說的就是英語的差距。


美國程序員有一種莫名其妙的自信心爆棚的狀態,明明自己程序寫的那麼爛,也覺得自己像超人一樣。我覺得這需要中華民族學習,謙虛個屁。至於編程技巧,其實都差不多。只是中華民族平時生活的瑣事太多了,於是工作後連學習的機會都沒有了,差距就是這麼慢慢拉開的。這一點在美國不會發生。


差距就在於。。。。額,知乎上你們追捧的那幾位「大神」,也就是國外flag的平均水平engineer,但是我相信他們可以在國內大部分中小公司做director以及cto level.

這就是差距。

是的,在3年以下經驗的engineer裡面,中美差距不大,再往上,中國的環境你們知道---30歲不做manager就是loser...所以當你們在這裡口口聲聲其實中國engineer如何牛逼的時候,其實你們的潛台詞是:中國基本上都是3-5年的工作經驗以下。

補充一點吧:中國程序員的問題就是。。。5年以後還在一線coding的太少了,太少太少!以至於mananger要coding似乎在中國是一種很稀奇的事情。。。在美國讀書時候參加一次ACM比賽的時候,因為是全校都報名,結果第一名是一個來上選修課的某本地小公司的CTO...後來在灣區一個startup工作的時候,有一次晚上改一個python代碼,又不是我寫的,有點暈,旁邊是COO在那裡寫郵件,因為知道我剛去不久,就看我在幹嘛,然後聊著聊著就接手我來改代碼了,還給我講了半天這一段在他們剛開始的時候是怎麼messy,後來越改越messy所以我看得發暈是正常的。。。然後他就自己改好了。。。

這兩年隨著startup的盛行,很多海龜的返回,國內的慢慢有一點好轉,能動手的manager開始多一些了,但是很難說這風潮能保留多久,能不能慢慢改變國內輕動手重管理的幾乎是自古以來的習氣。

********************************************************
有個回復也是這麼說的:既然大家都同意能力出色的中國程序員大多出國了去美帝了,可是那些「國內出類拔萃的程序員」在美帝並沒有展示出比大家認為智商低下又不賣力的老美engineer強到哪裡去的能力呀。。。


英語沒法和美國人比。
畢竟英文書籍文獻資料實在太好太豐富了。


首先,同等級的公司,中美兩國的IT從業者在技術上的區別不大。
什麼叫同等級的公司:我認為,Taobao vs Amazon零售;騰訊互聯網/終端 vs Facebook。
Baidu vs Google、阿里雲 vs AWS 那不叫同等級,只叫同類型。無論是資產、產品線還是用戶數量上,差了都不只一檔;IC行業也是一樣,海思 vs Intel,那就不叫同檔次;但是華為網路相關部門的水平,想必比Cisco差不了多少。

然後就是不管是哪個等級,國內企業數量都要明顯少於歐美企業,尤其是在有投資未必有產出的RD領域,更少。這才是問題所在。

----------------------------------------------------------------------------------------------------------------------

有答案說知乎上的大神在國外都是「平均水平」。
那你要看是什麼的平均水平。
Google,Microsoft這樣的平均水平並沒有多高。知乎大腕們普遍也在這個水平以上。
但是你要說是當年的ILM(工業光魔),現在的Oculus VR,Google X,MS Research,這些部門的平均水平絕對能把一般的「平均水平」秒出翔。要達到或超過這樣的平均水平的人,知乎當然有,比如 @符茂松 和 @叛逆者 。 @vczh 因為一直猴在微軟的工程部門所以不太清楚,但是我覺得成為頂尖部門的平均水平沒有問題。但是要知道,這個平均水平,已經是「精英中的精英」的平均水平了。再往上比人頭太少,我們還是比諾貝爾獎數量好了。

----------------------------------------------------------------------------------------------------------------------

另外,在北美的中國(裔)程序員水平,顯著高於國內。大部分人都是在美國受過Master以上的教育才獲得的工作機會。因此單從受教育的水平上,大概就和 清華北大 vs 一本 的區別差不多,能出國的本身就是精英。大體上這些人,是Google、Microsoft的平均水平略高(因為除了技術之外還有別的阻力)。但是,因為美國也有無數在Google、Microsoft水平線以下的「代碼作坊」,所以FLAGAM這樣的公司裡面的平均水平,也都是美國程序員水平中比較好的一批了。
如果你要硬給我舉幾個清華北大賣豬肉,小學肄業億身家的例子,那我也沒話說。

----------------------------------------------------------------------------------------------------------------------

最後樓主你問怎麼辦?涼拌。
美國第一批程序員是50年代就有了。咱們六十年代造原子彈的時候,還得靠算盤。
急什麼。


不抖機靈地說,唯一的差距是英語水平。


心態:
中國:30歲的程序員覺得再不升經理就要轉行了。
美國:50歲的程序員還在安心寫代碼。

供需:
中國:30歲以上的程序員太多了,都混成老油條了,多招點應屆生回來加班,擠走老的。
美國:50歲以下的程序員不夠用了,需要加招50歲以上的,他們雖然加班少,但是經驗足。

待遇:
中國:按勞分配,老程序員不加班也不能加工資。
美國:論資排輩,老程序員沒有功勞也有苦勞。

流向:
中國:那些去美國當碼農的同學和同事都不回來了。
美國:那些到中國出差的美國碼農不久都回去了。


從教育說起
中國:實踐太少,填鴨式灌輸太多,大學起『彙編』『數據結構』,學不好又培訓『java三大框架九大XX』,然 並 你懂~
美國:引導發揚興趣試教育 『黑客與畫家』,發現一個問題,搞出一個解決方案,然後命名『XXX』,積累幾個解決方案之後,就成了中國最先進大學最前沿教材研究方向『YYY』。

故事
好久之前美國一個青年小伙看JavaScript 不爽很久了,然後寫了個自己的js框架jQuery,發布到github上好多人來fork。
三個月後,中國程序員開始吵架『jQuery到底是不是最好的js框架』,大量中文翻譯文檔出現,老程序員面試鄙視小程序員『你連jQuery都不知道?』,小程序員心裡非常膽怯,『心想趕快回去惡補一下』

最後

美國程序員成了商業精英,他們拿了錢,把技術做成公司越玩越high
中國程序員被一幫商業精英忽悠著面臨轉業


作為一名在美國工作的目前大組裡面唯一一個中國人,想說說自己的看法。說的不對的地方,望大家指正。

總體感覺是哪裡都有兢兢業業鑽研技術的大牛,也有隻為圖一口飯吃更願意回家陪老婆孩子的所謂「沒啥追求」的人。這個不分國籍的。

美國同事英語好,做彙報啊演示啊,表達能力上的確有母語優勢。不過隨著新一代華人英語越來越好,這個差距也在慢慢縮小。公司的幾個華人中層,在開會時英語說的也都是條理清晰很有邏輯。

技術上的時差,在這個飛機上睡一覺就能切換到北京時間的年代,個人覺得,某種意義上國內平均水平的程序員要比大部分美國程序員更加努力與勤奮一些。毋庸置疑這個是由於人口基數大的緣故。雖然近期矽谷有傳言互聯網泡沫即將被戳破,twitter等公司紛紛裁員,這並不能說明美國的碼農市場趨近飽和,相反的,我認為是真正優秀程序員的一個機會。而這個由市場由競爭來挑選人才的情形,在國內已經存在了很長時間了。所以我個人覺得還是對中國程序員群體很樂觀的,至少在技術的學習,更新與實踐上面,我並不認為中美程序員之間存在太多的差距。


這個差距就跟中國國際奧賽金牌數和諾貝爾獎得主人數的差距一樣大。

中國人解決具體技術問題的能力很強,但不是所有問題都是明確定義好的技術問題。這使得中國程序員能夠很好地重複解決模式已知的問題,但很難成就巨大的飛躍。

創新只能保持在微創新的級別,只要知道有人成功做過就一定能做出來,並且做得更好。只要是存在的,就一定能逆向工程。但不存在的,屬於 unknown unknown 的,那就沒辦法了。

在一定程度上,這種差距就如同現今機器學習和真正智能的差距。機器學習可以解決很多特定領域的問題,模型可以優化得越來越好,但優化的盡頭也不是真正的智能。中國程序員解決技術問題的能力到盡頭了,也不代表有創新能力。


從成長路徑來看:
中國的程序員在起步階段和美國是差不多的。但是經過三五年的成長,在中國,好一點的程序員便開始轉manager,漸漸遠離代碼,在美國,三五年才是一個程序員生涯的開始。七八年之後,在中國,也許當年的那個程序員大概已經很久不接觸代碼,打交道最多的軟體是outlook, ppt和project,在美國,七八年的程序員正是是中堅力量。
從人員結構來看:
我個人的自身經歷:在中國的時候,公司里的manager普遍在三十歲上下,幹活的程序員,一般是一兩個七八年經歷的做架構,三五年的為主力,帶著幾個剛進來的畢業生和實習生。在美國的時候,公司里manager也是三十多歲居多,但是程序員從二十多歲到五十歲都有,大部分程序員是三四十歲的,並且經歷過幾家公司,經歷普遍在十年左右,當然也有新進的畢業生,但是不多。
所以,單以年齡來論,可能水平差不多,在中國干三年和在美國干三年水平增長不會差太多,但是從人員結構和發布來講,美國的程序員水平要高於中國。在中國,四十歲以上的程序員會被認為是loser,一般的程序員稍有成績的時候,便向管理的方向發展,把幹活的機會留給小年輕。而美國四五十歲的程序員比比皆是,而且他們都願意以程序員的身份干到退休。
從資源來看:
美國有先天優勢。google和百度的話題就不多談了,我想談的是語言的便利,同樣的文檔,美國人可以快速且精準的獲取知識,而中國的程序員需要翻譯,儘管現在大部分人的英語都不錯,但畢竟不是母語,一本500頁的英文書,可能讀到第二遍的時候才能深入理解。
從工作方式來看:
中國目前大部分公司,鑒於文化習慣社會風氣等等各方面的原因,中國的程序員的幹活方式類似於快速攻破,一個需求下來,頂住壓力不管三七二十一以儘快的速度完成功能,這就導致程序員的基本功都很紮實但全局觀不足,後期維護困難重重,連大名鼎鼎的某東也爆過這樣的問題。除此之外,中國的程序員還有面對很多無關的事情和會議,這是我在中國工作時感觸很大的一個現象,幾乎每天要花30%的時間去應付那些無關的事情。而美國的程序員,節奏相對比較慢,通常一開始是反覆的討論和研究,公司的會議室里,pm,marking,manager和engineer同處一室的會議比比皆是。美國人的文化和習慣,導致美國的程序員通常不必理會那些不相干的事情,所以基本上大部分精力都集中的技術上。

還有什麼也一時想不起來了,就這些吧


各種各樣資源的差距。

教育資源:拿我讀過的ZJU和CORNELL比,ZJU只有單獨的機房,從寢室過去要穿山越嶺。要付費,網速慢,還有各種限制。CORNELL教室樓上就有機房,24小時開放,網速巨快,沒有任何限制。每周五晚上都能看到一堆韓國人上機打星際2.

學習資源:國內996的工作節奏,哪有那麼多時間學新東西。美國干滿8小時的都不多,只要想學時間多得是。

工作資源:工作資源應該是最主要的,美國一直當一線碼農也能幹到退休,而且收入足夠養家糊口。國內一直流傳30、35、40等的碼農分水嶺,生活壓力也比美國大,所以很難專心技術。


當然美國有一群計算機科學家中國沒有,這雖然是事實,但可比性並不強,還是說普通人。

技術水平的差距很難說了,英文和技術都很好的國內大有人在。說中國工程師比任何一國差是先入為主的。在我眼裡工程師平均水平排行 歐洲人 &< 美國人 &< 中國,中國工程師的整體Productivity最高,可以自豪地說,我所在公司60%以上的developer產出來自於一個三人中國高級工程師團隊,其他的俄英美同事接近一打也比不過,我們在速度與質量上絲毫不輸任何人。

說中國的程序員工資低也值得斟酌,個人覺得國內許多程序員的薪資有泡沫,是這兩年資本過剩下的創業潮,北上廣的許多初級程序員的薪資過高;畢業不到一年就拿10K+的人不是少數,我不認為這些人里的多數真的值這個價錢。

職業訴求側重不同,中國的程序員更需要關注物質回報,因為我們的文化強調儘早買房買車。歐美人在這方面要輕鬆自由得多,有大把的時間去學嘗試創造,但其實大部分人是不創造的,只是概率比中國大而已;中國人妄自菲薄沒有「創新」能力,是沒有意識到自己到了創造力高峰的時候人間煙火去了,我們用自己的青春和人家的大半生去比較,當然妄自菲薄了,人家可以投入的時間就比你多得多。你要想一想一個中國程序員職業黃金時期所要面對的干擾有多大,首先是要讓自己融入英語的技術圈子,其次是要應付一個不爭氣沒追求強加個人的世俗文化。

我注意到的有根本區別的人群是技術圈裡做中層管理的人和國外做中層管理的人,文化上的區別導致的對職權的理解不同。國內技術對管理職位趨之若鶩,覺得技術職業生涯就是管理,但真有領導力的少;中國文化里成長起來的程序員到了國外在這方面的競爭力還缺乏;國內少有美國那樣兩個碼農創造一個什麼東西的案例,拉幫結派幹事業的能力遠沒有美國人強。

另 http://www.delivoper.com


內地人口多,就業壓力大,很多要求低薪的程序員,拉低了行業的薪水,影響了社會和管理者對於技術價值的判斷。而且內地很多公司,真心不會管理技術人員,他們把技術人員真的當民工一樣管理,即使工資2萬+,管理者對你說話很客氣,但在內地管理者心裡,真的就是把技術人員當民工的。這樣一種社會氣氛和職場氛圍下,要求內地碼農向美國碼農看齊是極不公平的。


美國程序猿在寫代碼的時候中國程序猿在睡覺。


工資

我可以花式秒殺同工資(或者 2 倍之內)的美國程序員,一個例外都不會有。


推薦閱讀:

美國普通人的算術到底差到何種地步?
日系車和美系車相比,各自有哪些優勢?
如何看待「美國甚至將一個主權國家元首交給新政府經審判予以死刑,美國才是犯下反人類罪的元兇」的言論?
為什麼北美東部冬季經常有暴風雪,而中國冷而少雪?
幻想類電影為何逐漸成為北美市場的絕對主流?

TAG:美國 | 程序員 | 編程 | 中國 | IT 行業 |