程式設計師的技術選擇:已開發國家和發展中國家有這些差異

發表於2017-09-04

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

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

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

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

技術和人均 GDP 的相關性

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

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

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

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

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

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

worldbank_map-1-1024x614

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

top_countries-1-2-1024x683

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

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

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

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

tech_difference_graph-1-1-1024x731

資料科學技術的不同:我們之前已經看到,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 瞭解全球的開發者生態來說都是很重要的資料。而對於美國的技術招聘者來說,他們需要掌握未來的動向,所以他們需要了解更多的方面的資料,而不僅是“來自印度的學生要學習什麼樣的計算機語言”、“技術投資人在肯亞尋找合適的技術公司”這類話題。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

程式設計師的技術選擇:已開發國家和發展中國家有這些差異

相關文章