在Stack Overflow,我們有志於使用我們的資料來分享有關全球軟體開發社群的見解。最近釋出的關於手機移動端開發者的帖子就是一個好例子:這篇帖文探索了世界各地訪問 Android 相關問題的流量,發現低收入國家比高收入國家更經常使用 Android 系統。
這篇帖子使我們想知道富國和窮國之間的程式設計技術有何不同,以及這會如何影響我們對全球軟體開發行業的看法。在本文中,我們將探討這些差異,並證明在軟體開發行業中,將高收入國家和世界其他地區區分看待,是有益的。
本文中探討的所有分析都是在2017年1月至8月期間展開的,我們選擇了那段時間流量最高的250個標籤進行研究。為了減少其他不必要的影響,我們只分析了在這段時間內至少貢獻了500萬次問題訪問量的64個國家。值得注意的是,這些資料代表了那些瞭解英語的開發者們的活動。一些針對西班牙語和葡萄牙語網站的分析表明,類似的趨勢同樣出現在非英語國家,比如墨西哥和巴西。
科技與人均GDP相關
在最近的一篇文章中,我們看到關於Android問題的流量(佔一個國家Stack Overflow訪問量的百分比)往往與一個國家的人均GDP呈負相關。 這不禁讓我們懷疑,其他標籤是否也有這樣的相關性。
當我們搜尋主要的程式語言和平臺時,除了Android之外,還有一些也比較突出,包括PHP,Python和R。
標籤流量vs人均GDP
流向Android和PHP的流量數與一個國家的人均收入水平呈負相關,而Python和R的話題流量則與國家人均收入水平呈正相關。但無論哪種情況,我們都可以看到有一些例外(韓國使用Android的人數比我們預期的要多,中國則更多人使用Python),但通常情況下,相關性的呈現還是比較明顯的。 (在調整並進行多次測試之後,每個R^2值都在0.5-0.6之間,p值<10^-6)。
在此有必要強調一下,我們並不是要指出這當中必然存在的因果關係;也不是說選擇哪種程式語言會影響一個國家的平均收入;也不是說一個國家的財富水平直接影響他們對科技的使用。我們懷疑造成這些相關性的原因可能由各種經濟和社會因素混合而成的(比如,教育水平,軟體行業的發展時間,外包水平),總的來說,這些因素通常都與一個國家的財富相關聯。
我們如何將軟體開發行業分為兩部分?
當我們研究這種趨勢時,把國家分為兩組:高收入國家和非高收入國家,而不是把所有國家混在一起考慮。國家的財富水平,作為一種既有分類,我們可以引用世界銀行的資料資料。下圖顯示的是按人均GNI(國民總收入)為標準,各國呈現出的不同財富水平。
世界銀行釋出的各國收入分類地圖
圖中共有78個高收入經濟體,除了美國、加拿大,還有一些西歐國家,部分中東和東亞國家,以及澳大利亞/紐西蘭。我已經做過一些關於國家間差異的基本原因分析(如主要成分分析),證明這是一個合理的劃分方法,並且這種劃分方法比其他劃分方法更有意義,例如按國家的地理位置,如東半球與西半球來歸類國家。 例如,來自澳大利亞的使用者所訪問的科技標籤,通常更接近美國和歐洲的訪問情況,而不是中國或印度尼西亞的。
根據收入分類,排行Stack Overflow的流量主要來自哪些國家
這種區分方法將Stack Overflow流量分為三分之二和另外三分之一:Stack Overflow上63.7%流量來自高收入國家。 這可能是由於高收入國家軟體開發量佔全球比例更大,更多人口能享受網際網路,以及英語使用者數量較多的緣故。來自非高收入國家的大部分流量來自印度,其次是巴西,俄羅斯和中國。
高收入國家在使用的技術上有何不同?
我們現在將軟體開發世界分為兩部分。 高收入國家和非高收入國家在技術使用方面有何不同?
高收入國家和低收入國家在訪問技術標籤上的差異
我們從圖中可以得出幾個有趣的見解:
資料科學技術上的差異:正如我們前面看到的,Python和R與一個國家的收入呈正相關。在高收入國家,Python標籤的訪問頻率是世界其他地區的兩倍,而R標籤的訪問量大約是其他國家的三倍。我們也可能會注意到,在比較小眾的標籤中,許多科學領域的重大轉變是由Python語言和R語言編寫的,例如Panda,numpy,matplotlib和ggplot2。這說明,高收入國家更多人使用這兩種語言可能是因為在高收入國家,科學技術和學術研究更受到重視。這就能夠解釋,為什麼在較富裕的工業化國家這兩種語言更為常見。往往在高收入國家中,科學研究佔經濟的比重較大,同時,這些國家的程式設計師更有可能具備高學歷。
C/C ++:C/C ++是另外兩種著名的程式語言,受到高收入國家的青睞。一個假設是,這可能與教育有關:正如我們在之前的文章中能看到的,C和C++語言尤其受到美國各大學的青睞。當然,這也可能與電子行業和製造業的全球地理分佈有關。
PHP和Android:在之前的文章中,我們探討了全球的Android開發,Android系統在較低收入國家更受歡迎。PHP是一種受較低收入國家顯青睞的語言。 CodeIgniter是一個PHP開源框架,這個技術標籤在低收入國家的訪問量最大,遠遠超過來自其他國家的訪問量,是一個訪問量地域分佈極不平衡的標籤。 進一步的檢查表明,這個標籤在南亞/東南亞地區(特別是印度,印度尼西亞,巴基斯坦和菲律賓)的訪問量特別大,而來自美國和歐洲的訪問量就很少。 可能許多外包公司,在構建網站的時候,就常常會選擇CodeIgniter。
結論:為什麼做這種研究很有必要?
我當然對這些結果十分感興趣, 因為我認為它們展示了程式語言生態系統中有趣的事實。 它們也將對我們在不久的將來會發布的其他資料研究,產生影響。
當我們提出有關軟體開發行業的問題時,重要的是我們要明白,我們其實是“混合”著回答了兩個分開的問題,因為軟體開發行業本身,就是依據國家的收入水平,一分為二的。
知曉將這個行業一分為二的原因,則會給我們提供更多的資訊。
例如,我們通常有興趣瞭解哪些技術標籤可以帶來最多流量,例如檢視Flash技術標籤的人隨著時間推移,逐漸減少。 如果我們要建立一個擁有最多訪問次數的程式設計技術清單,那麼高收入和低收入國家的清單將會非常不同:
根據國家收入排名人們最常訪問的程式設計技術標籤
例如,截止到2017年,Python是高收入國家中訪問次數第二高的技術標籤,但在世界的其他地區,它的訪問量排名只能排到第八位。我學習的語言,R語言,是高收入國家中訪問量排名第15的標籤,但它的訪問量在世界其他地區甚至沒有進入前50。
當我們使用Stack Overflow上的資料來了解開發者生態時,我們很有必要了解軟體開發中兩個不同的世界,這是一條很重要的背景知識,意味著一位對這個行業的未來非常感興趣的美國技術招聘人員,一個不確定要學習什麼程式語言的印度學生,和一名想要了解肯亞科技公司的投資者,他們對於各種程式語言的看法,可能都會非常不同。
在未來的文章中,我們有時會回顧這一劃分,這將有助於我們繼續探索全球開發者生態。