大觀程序員世界

這裏寫圖片描述

  • Donald Knuth — AI之父
  • Ken Thompson — B語言之父,Unix之父
  • Dennis Ritchie — C語言之父,Unix之父
  • Linus Torvalds — Linux之父

上個世紀,美利堅孕育了一大批上神級別的軟件工程師。(問題一:Unix之母是個什麼樣的女人?)

美國的計算機技術與計算機教育經過最近20年的發展,已變得觸手可及。與此同時,世界上那些欠發達的國家,也正在把本國一部分年輕人訓練成經驗豐富的開發者。

所以,一個有趣的問題隨之而來,到底哪個國家擁有世界上最優秀的程序員呢?或許更重要的一個問題是,爲什麼某些國家引領着某一方潮流呢?

中俄處於世界領先地位

數據來源於一個叫做HackerRank的編程網站,它旨在爲數以百萬的開發者提供編程挑戰,同時也爲企業提供招聘服務。通過使用不同國家的編程人員如何解決廣泛領域 (例如算法和數據結構,或編程語言,如C ++、Java)的問題的信息,HackerRank的數據統計顯示,世界上最好的程序員來自中國,緊隨其後的是俄羅斯。出乎意料的是,美國僅僅排在第28位。

這裏寫圖片描述

中國是一個幅員遼闊的人口大國,龐大的人口基數使得誕生出許多編程奇才,戰鬥民族也是如此。

但是單憑這一點也難以解釋爲什麼中俄的開發者排名如此之高。結果只是因爲這些中俄的開發者喜歡參與HackerRank的挑戰,所以一直穩居前列(恕我孤陋寡聞,目前只上CoderByte和LeetCode)。但是往往中國和俄羅斯的開發者在其他編程網站中的表現也領先着其他國家,其中包括由Google託管並管理的國際編程賽事Google Code Jam。

雖然中國和俄羅斯的開發者在HackerRank挑戰的十五個領域中有很好的表現,但值得注意的是,來自特定國家的開發者在某些特定領域的表現也很出色:小島國比較擅長人工智能,香港則生產最優秀的Python程序員,最好的Ruby程序員在芬蘭(不是灣區嗎?),丹麥開發者寫SQL比較6,最好的DBA來自瑞士,烏克蘭則是信息安全,斯里蘭卡是分佈式系統最強大的國家,而法國則是C++比較頂尖。下面這這份清單:

這裏寫圖片描述

越早學習編程,越好

首先來思考一下爲什麼中國和俄羅斯有如此多經驗老道的程序員。HackerRank的首席技術內容官Heraldo Memelli說:“很大的原因就是這些國家教育的關注點。從小就學習數學,科技和編程,任何地方都可能出現偉大的程序員,但是這些學科會使得開發者在諸如編程挑戰的編碼事務中大獲裨益。”

HackerRank上中國排名前列開發者的Shimi Zhang支持這一觀點。他說:“數學和計算機科學在中國非常受歡迎,家長和學生對這些話題以及其他技術和科學話題都非常關注。中國的教育方式使得着中國學生從小就開始學習,而且當中國學生學習編程時,往往喜歡刨根問底。”

“而且許多中國學生從小學開始就很努力,因爲沒有足夠的優質教育資源給所有聰明的中國學生。”“他們必須刻苦學習才能進入一所好的中學,高中和大學,很多中國學生在學習編程時都保持着這種習慣。”(小編週末不約會不泡吧,卻在這裏翻譯洋文,哎。。。都是這樣過來的)

美國大學生和中國大學生學習編程的方式也存在差異,但Shimi Zhang認爲美國的高等教育體系是有優勢的。“中國大學的相關基礎課程是由普通老師而不是教授來講授,所以這些課程的質量並不像美國的大學那麼高,美國的大學生在大二或者大三就可以加入研究小組,但在中國這隻存在於某些重點大學。

儘管美國在這方面有更好的體系,但這似乎不足以超越中國的初級基礎教育和中國的競爭帶來的好處。

需要更多的編程馬拉松

美國的大學希望通過學習中國的教育模式來提高編程學科的教育水平?HackerRank的Memelli認爲,在課程當中添加有競爭力的問題並準備解決方案,或者甚至是外部課程,可能是一個好主意。“想到一點,美國的教育工作者可以通過組織實際的編程挑戰,在線的編程馬拉松等來補充學校所教授的內容。”

相比之下,Shimi Zhang說,美國學目前擅長解決實際問題,開發產品。相比之下,中國學生在實際問題上磨練編程技能的機會較少,所以他們花更多時間在學術上面,關注基礎知識。“這實際上有助於(中國學生)在進入行業之前建立起紮實的基礎知識。確實,中國正在催生世界頂尖的程序員,但是美國學生仍然很善於解決實際問題,做着改變世界的事。”

歸因

由於中國和俄羅斯教育的教育模式,中國和俄羅斯可能在各種編程領域都會有出色的表現,不僅僅是像HackerRank這樣的編程挑戰。但是,是什麼使得一些國家在特定領域有過人之處?例如,爲什麼芬蘭程序員特別擅長Ruby?

Memelli認爲,原因可能是因爲該國出現了一些“怪癖”。“很難確切地知道,但是一些國家在特定領域的高排名可能會歸結爲該國的學校課程,或者某個公司或行業在該國重要,或者出於某種原因特定的編程語言在那裏很受歡迎。“(Java語法簡單,沒有指針那種東西,入門快,量產快,而且經久不衰,活躍度一直很高,所以Javaer在中國越來越多。。。培訓班首選)

對於Memelli觀點的最後一點:特定的編程技能可能會在需要它們的地方落地開花。如果一個國家需要大量的AI專家來支撐某個行業,那麼很可能會有越來越多的人來學習和使用AI相關技能。(太年輕,沒有接受過社會主義的洗禮,中國往往是哪種編程技能工資高,人就蹭蹭去了,過一段時間人滿爲患就爛大街了)

這似乎聽起來像是廢話,但是在招募具有你需要的具備特定技能的開發人員,或招的人決定着某個項目基礎運營的時候,這確實有着重要的意義。具有特定的編程技能的人並不是均勻分佈在世界各地的,知道去哪裏尋找他們才比較重要。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章