當前位置:
首頁 > 知識 > 爬取了7年1500萬個GitHub活躍賬戶,程序員比例最高的國家竟然是……

爬取了7年1500萬個GitHub活躍賬戶,程序員比例最高的國家竟然是……

最近突發奇想,想統計一下全球程序猿都住在哪裡,所以就爬了GitHub,將GitHub上的個人資料聚合在一起,結合國家或城市的人口進行分析並將數據用D3進行可視化。

通過分析,發現了一些有趣的結果。比如雖然頂尖程序猿都生活在世界各地,但他們中的很多人似乎都生活在舊金山灣區這個保育區。同時,在印度頂尖開發者屬於瀕危物種,而東歐有用大量可以遠程僱傭的程序猿。

數據採集

首先,我通過GitHubArchive獲取過去7年中活躍的GitHub用戶列表,活躍的定義是fork或者關注一個repository,查看或者評論一個問題,或者提交代碼等,應該有1500萬用戶符合這個標準。過去幾個月我一直致力於通過GitHub/users/API獲取每個活躍用戶的基本信息,結果是這些用戶中有230萬用戶可以獲取到坐標信息。雖然很多用戶沒法獲得坐標信息,但就已有的數據來分析,應該也能說明一些問題了。

然後,我通過Google Maps Geocoding API把這些凌亂的坐標串轉換成真實的坐標。期間手動調整了幾個地理編碼錯誤,比如TheFuture被編碼到帕洛阿爾托,World Wide Web被編碼到波士頓,還有/dev/random被編碼到印度。除開這些無關緊要的差錯,GoogleMaps確實在轉換過程中起到了巨大作用。

最後,我把所有的代碼上傳到了GitHub:https://github.com/benfred/github-analysis/。

頂尖程序猿

我們把目光著眼於關注者人數最高的頂尖程序猿,可以將地理編碼地點和地圖上進行結合。

首先我們湊個整,顯示排名前1024開發人員,數據量並不是太大,所以它們不會完全重疊,並且可以看到所有這些開發人員的居住地點:

如果你說只有1024個程序猿,可能樣本量不夠,那再翻幾番看看:

儘管頂尖程序猿的棲息地遍布全球,但很顯然他們主要集中在多個區域。顯而易見舊金山灣區是最集中的,但在北京,上海,紐約,倫敦和西雅圖等地也頗為集中。

頂尖程序猿集中的國家

前面關注了頂尖程序猿而忽略了廣大的普通程序猿,這一部分來看看匯總了普通的賬戶分別主要來自那幾個國家。

換個更加直觀方式再來看一下,顏色越深,說明GitHub用戶越多:

從用戶數量角度看,美國在排名上佔主導地位:它擁有最多的GitHub賬戶,比其後5個國家加起來還多。但是,這不是對每個國家進行排名的唯一方式。本報告還列出了另外3種不同的排名方式,我接下來來談談為什麼要用這些指標。

與人口或者GDP的關係

有個比較容易發現的事情就是GitHub賬戶多的國家通常都是人口眾多的國家。雖然美國無疑是技術超級大國,但它也是地球上人口最多的國家之一。

舉個例子,美國的GitHub賬戶數量比冰島擁有的人多,因此在按GitHub賬戶數量排名時,無法指望冰島能追上美國。但是,如果將排名方式切換到按照GitHub賬戶數每百萬人口排序,冰島一下躍居第一名。

通過散點圖可以看到:

雙對數回歸的趨勢線以橙色顯示,其R2為0.5,也就是說,每個國家的GitHub賬戶數量中有一半的差異可以用人口來解釋。圖中我已經將偏離帕累托邊界(Pareto frontier)較多國家作為離群值標記出來。

明顯高於趨勢線的國家主要是西方國家,如冰島(IS),瑞典(SE),挪威(NO)和丹麥(DK)。明顯低於趨勢線的國家往往是比較貧窮的非洲國家,如衣索比亞(ET),剛果(CG)和查德(TD)。

查看按照「賬戶/百萬人口」的排名就可以從某種程度上看起來接近衡量每個國家富裕程度的排序。

既然把人口因素放入GitHub賬戶的排名,那是不是也能將GitHub賬戶與GDP進行組合:

同樣是雙對數回歸,當R2為0.84時,這裡的相關性更強。

這裡表現最差的主要是石油生產國,如沙烏地阿拉伯(SA),伊拉克(IQ),卡達(QA)和科威特(KW)。這似乎與「荷蘭病」有關,在這種情況下,自然資源豐富導致國家更加註重資源的出口,而對軟體工程師這樣的人力資本投資不足。

同時,前蘇聯國家的排名似乎在這個衡量標準中排名很高。烏克蘭(UA),白俄羅斯(BY),塞爾維亞(RS)和摩爾多瓦(MD)的GitHub賬戶都比它們各自的國內生產總值對應的數量的要多。尤其烏克蘭的程序猿是遠程開發人員的最佳選擇,也許繼承了前蘇聯的優秀的教育底子,使烏克蘭擁有大量開發人才。

關注者分布

印度和中國都有相差不多的GitHub賬戶數量,一般來說你可以預期這兩個國家對GitHub有類似的貢獻。然而,看一下頂尖程序猿和各自的地圖,在北京,上海和深圳周圍有大量的開發者,而印度只有少數幾個開發者分散在各大城市。

雖然中國(13億)和印度(10億)有同一個量級的人口,但頂尖程序猿中有22%生活在中國,而只有不到1%居住在印度。同樣,一個中國的頂尖程序猿最多擁有3.9萬關注者,排在全球第三,而一個印度的頂尖程序猿最多只有3100多個關注者,只能排到200位。

為了體現這種情況,我添加了一個簡單的「總體關注者」排名,該排名僅對每個國家/地區的關注者總數排序。印度在這一排名中從第3位下降到第8位(中國的關注者總人數約為印度的5.5倍)。

我不清楚為什麼印度在這裡表現不佳,我也曾懷疑一個賬戶在GitHub上的關注人數是否特別有意義。但是,GitHub上一個賬戶的關注人數從一定程度上說明這個用戶對開源軟體開發的影響力,所以我將其作為影響力的排名。

重要城市

只關注重點國家的粒度太粗了,大多數發達國家的城鄉差別比這些國家之間的差異更為明顯。按照之前類似的方式我們可以對不同的城市進行排名:

僅擁有約86萬人的舊金山在這裡脫穎而出,甚至超過了擁有2500萬人口的上海等城市。然而,灣區只有很少一部分人居住在舊金山,南部灣正在發生巨大變化。為了了解這一點,我將聖克拉拉縣,聖馬特奧縣,舊金山縣和阿拉米達縣都歸在「舊金山灣區」標籤下。

加州VS全球

當你看到下列數據,不必驚訝:

如果按照關注者的數量排名,舊金山的排名將高於美國和中國以外的其他國家。一個擁有86萬人口的城市比英國,德國,加拿大,巴西和印度等有著千萬甚至上億國家的影響力更大。同樣,如果把加利福尼亞州看作一個國家,除了美國,中國和印度之外,它的GitHub賬戶數量將超過其他國家。

按人均計算,舊金山每百人擁有超過4個賬戶。這意味著舊金山的人均開發人數是全球排名最高的國家(冰島)的10倍以上。至少有4%的市民擁有GitHub帳戶,並且真實的數字可能更加高,因為只有約15%的帳戶在其個人資料中列出了位置。

雖然灣區顯然是全球程序猿的最集中的地點,但只有不到3%的程序猿居住在灣區,世界上大多數程序猿都住在別的地方。即使在美國境內,也只有約11%的GitHub賬戶來自灣區。

參考文獻:

https://www.benfrederickson.com/github-developer-locations/

- 加入AI學院學習 -


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI講堂 的精彩文章:

3月20日20點 中國科學院博士開講!
想轉行人工智慧?機會來了!

TAG:AI講堂 |