歡迎光臨
每天分享高質量文章

程式語言/技術選擇、所在國家、程式員收入

(點選上方公眾號,可快速關註)


編譯:伯樂線上 – 黃小非


【導讀】:Stack Overflow 工程師 David Robinson 做了一次資料分析,總結了程式員的技術選擇和所在國家收入之間的關係。


Stack Overflow 非常熱衷於利用資料來和使用者分享對全世界開發者社群的認知。比如它透過對全球開發者在 Stack Overflow 上詢問 Andorid 相關問題統計,得出了結論:收入較低國家的開發者詢問 Android 問題的數量要高於高收入國家的開發者。


這個問題引發了我們的聯想:高收入國家和低收入國家之間,開發人員在技術選擇方面有什麼不同呢?這種不同又會如何影響全球的軟體開發產業呢?在本文中,我們就探索了上述的問題,並且發現透過收入來區分軟體工業的發展,是一種很有效的辦法。


本文中的所有分析結論都是基於 2017 年 1 月 到 8 月的資料,並挑選在這段時間內出現頻率 Top 250 標簽進行統計的。為了減少資料樣本過大可能造成的偏差,我們集中選取了相應時間段內來自 64 個國家的超過 500 萬個問題進行分析。需要說明的是,這些資料很大程度上只反應了英語開發者們的行為樣式(當然透過對西班牙語和葡萄牙語站點的分析,發現在墨西哥,西班牙這些國家,得到的分析結論和英語國家差不多)。


技術和人均 GDP 的相關性


在最近的一篇文章中,我們透過計算 Android 相關問題的比例(就是某個國家Android相關的問題的數量佔該國整體Stack Overflow問題資料量的百分比),發現這個比例和這個國家的人均GPD是成反比的。所以我們也想知道,其他種類的技術和人均GDP的關係。


因此我們調查了主流的程式語言和平臺,包括PHP、Python、R 等等。



統計發現,來自某個國家 Android 相關問題和 PHP 相關問題的數量是和國家的收入情況成反比的,而同 Python、R 語言相關問題的數量則是正比。當然,在每一個統計案例裡都會有例外的情況(例如,來自人均收入較高的韓國的 Android 問題數量要遠超我們的預期,來自中國的 Python 問題的數量相對較低),但是總體來看,這種正反比關係還是很有說服力的。(多重假設檢驗調整後,每一種語言案例統計的決定繫數都在 0.5 到 0.6 之間,P 值為 10 的負六次方)。


必須要說明一下,我們得出這些結論不是要說明什麼因果性。我們並不是說,如果你選擇了那些富有國家的開發者使用的程式語言,那麼你所在的國家就能變成富有的國家。並且我們也不是說,國家的經濟會直接影響到某種計算機技術的使用。我們只是發現,把經濟和社會因素(例如教育程度,軟體工業發展的年限,外包的水平等)看成一個整體,從總體上會與這個國家的財富多寡相關。


軟體開發產業是按什麼標準一分為二的?


在我們調查軟體技術趨勢時,通常只會把全世界的國家分成兩組(即高收入國家和非高收入國家)來統計。我們不會把各國分成許多組來把相關性問題複雜化。因為在這方面已經有了很成熟的劃分標準,我們就直接用世界銀行收入分級標準就可以了,這種分級法是以人均國民總收入(GNI)為基準的。



上圖顯示,全球一共有 78 個國家屬於高收入國家,這些國家多半由美國、加拿大、西歐、部分中東和東亞國家,以及澳大利亞/紐西蘭構成。透過統計學的手段可以證明,這種劃分方法是有足夠依據的,而且這種劃分方法比其他的方法更有意義,比如很多時候人們喜歡按照東西半球來劃分國家,可實際上澳大利亞的技術分佈情況卻更接近美國和歐洲,而不是同屬東半球的中國和印度尼西亞。



這種分類方法同時也把 Stack Overflow 的訪問量分成了兩組,其中高收入國家訪問量超過 2/3,剩餘的國家佔了訪問量的不到 1/3。(得到這樣的結果是和被調查國家軟體開發人員的數量、網際網路的基礎設施的情況、以及說英語人數的情況嚴重相關的)。其中非高收入國家的訪問量的排名分別為:印度、巴西、俄羅斯和中國。


高低收入國家使用的技術有什麼不同?


我們已經把軟體開發的世界分成了兩個區域了。那麼高收入國家和非高收入國家在使用的技術上有什麼不同呢?


我們從中可以看到一些有趣的結論:



資料科學技術的不同:我們之前已經看到,Python 和 R 語言的使用情況和國家的富有程度是相關的。Python 在高收入國家使用的規模大約是其餘國家的兩倍之多,而 R 語言的使用規模差達到了 3 倍多。我們還註意到,透過對內容更具體的標簽(tags)的統計,發現在Python和R科學計算領域,使用不同的計算包的人收入跳度很明顯,例如pandas, numpy, matplotlib和ggplot2。這說明瞭在資料科學研究方面,不同的技術角色之間存在收入鴻溝。當然在越富有,工業化程度越高的國家,資料科學研究的佔國家經濟的比例越大,程式員的學歷也越高,這個結論是符合邏輯的。


C/C++:在 Stack Overflow 上還有兩個值得一提的語言就是 C 和 C++,高收入國家的程式員訪問這兩種語言的次數比低收入國家程式員多。對這個現象,有一種猜測是,它和教育機構有關:因為在之前的一篇《學生如何使用Stack Overflow》的帖子裡,我們發現美國的大學對 C/C++ 的訪問頻率是非常高的。當然這個現象也可能和電器製造商的地理分佈情況有關。


PHP 和 Android:我們在以前的一篇《全球移動開發調查》的帖子中討論了 Android 開發的情況,除此之外,還有一種技術和低收入國家息息相關,那就是 PHP。在Stack Overflow上,來自低收入國家的對 CodeIgniter(一個PHP開源框架)的問題非常的多,而高收入國家隊這個框架的提問幾乎沒有,這麼大懸殊實在是一個很有趣的現象。經過進一步的調查,發現對 CodeIgniter 的重度訪問來自於南亞,東南亞(尤其是印度、印度尼西亞、巴基斯坦和菲律賓),來自美國或者都周的訪問幾乎沒有。所以可以推斷,這個框架主要是這些外包公司用來開發入口網站用的。


結論:統計這些有什麼用?


我們做這些統計當然是因為對程式語言生態系統的興趣。而且這對我們日後要做的資料探索有很大的啟發。


我們在說軟體開發工業方面的問題時,要意識到我們的問題都是由兩個單獨的問題混合起來的,這很重要,因為這種混合會給我們帶來更多的資訊。


比如,我們想找到是哪些技術給Stack Overflow帶來最大的流量,例如:《探尋Flash技術不不斷縮水的原因》。如果我們把訪問量最多的技術列出一張表,你會發現高收入和低收入的國家的分佈是完全不一樣的。



例如,2017 年以來,Python 是來自高收入國家被訪問第二多的話題,但是在非高收入國家,Python 只能排到第 8 位。而本文作者自己使用的 R 語言,在高收入國家訪問數量的排名是第 15,但是在非高收入國家排名卻在 50 開外。


這些資料對 Stack Overflow 瞭解全球的開發者生態來說都是很重要的資料。而對於美國的技術招聘者來說,他們需要掌握未來的動向,所以他們需要瞭解更多的方面的資料,而不僅是“來自印度的學生要學習什麼樣的計算機語言”、“技術投資人在肯亞尋找合適的技術公司”這類話題。



覺得本文有幫助?請分享給更多人

關註「演演算法愛好者」,修煉程式設計內功

贊(0)

分享創造快樂