開發者,原來你最討厭的編程語言和技術是……
在 Stack Overflow Jobs 上,你可以創建你自己的 開發者故事 來展示你的成就,表現你的職業生涯進步。在創建開發者故事時,你可以對你使用的技術/編程語言添加喜歡或不喜歡的標籤,如下圖:
這就給了我們一個機會可以觀察到這數十萬開發者的喜好和厭惡。有許多方法可以評估一個語言的流行程度,舉個栗子說,我們經常使用 Stack Overflow 訪問數或問題查看數來評估這樣的趨勢。但是,當技術人員在他們的簡歷中表達他們不喜歡某種技術時,這個數據集就是一個找出技術人群不喜歡某種技術的獨有方式。
(我兩年前曾經在我的個人博客上發表過一些這類分析,不過這篇文章使用了更新的數據集,以及有更多可視化結果和說明。)
編程語言
作為測量每個編程語言有多流行的指標,我們將看看它出現在某人「不喜歡」標籤的時間與其出現在其他人的「喜歡」或「不喜歡」標籤的頻率相比。那麼 50% 就意味著該語言喜歡與不喜歡各佔一半,而 1% 則意味著 99 個人喜歡它而剩下 1 個人不喜歡它。(我們使用了這篇文章中描述的 經驗貝葉斯 方法來計算平均值,並使用這個方法來計算得到 95% 置信區間)
讓我們開始看看選出的語言列表(而不是像 Android 這樣的平台或像 jQuery 這樣的庫),所有這些都曾在開發者故事中至少提及了 2000 次以上。
最不喜歡的語言是 Perl、Delphi 和 VBA ,它們遠遠把其它語言拋下。接著的第二梯隊是 PHP、Objective-C、 Coffeescript 和 Ruby。我們的團隊很高興地看到,R 語言相對於喜歡它的人數來說,對它不喜歡的人數是最少的。
如果你讀過我們另外一些關於編程語言增長或萎縮的文章,你也許會注意到那些較少被不喜歡的語言往往是增長較快的。 在 Stack Overflow 上,R、Python、Typescript、Go 和 Rust 全是快速增長的編程語言(我們之前專門對 Python 和 R 做過分析),而且它們全都屬於看法比較 分化 的語言。類似的,大量萎縮的語言,比如 Perl、Objective-C 和 Ruby,如我們之前觀察到的那樣,在我們網站上它處於快速萎縮狀況。
我們可以通過將每種語言的規模和增長與不喜歡它的人的百分比進行比較來進行調查,橙色點代表最不喜歡的語言。 為了使我們的分析與前幾個帖子保持一致,我們將統計數據限制在高收入國家(如美國,英國,德國和加拿大)。
一般來說,編程語言的增長率和它有多不招人喜歡方面存在相關性。幾乎每個在開發者故事中提及不喜歡的比率超過 3% 的語言都在 Stack Overflow 流量上處於萎縮狀態(除了十分兩極化的 VBA,它仍有輕度增長)。而不喜歡數量較少的語言,如 R、Rust、 Typescript 和 Kotlin,它們全處於快速增長領域(Typescript 和 Kotlin 增長的太快,以至於都跑出了上圖範圍)。
一個突出的編程語言是函數式編程語言 Clojure;幾乎沒有人表示過不喜歡它,但是它仍然處於快速萎縮中(根據問題查看情況,它在去年才開始萎縮)。另外一個例外是 MATLAB,它處於快速萎縮,但是沒有很多人表示過不喜歡它。這可能是由於調查樣本的數據所限:任何一個 Web 開發人員都可能對 PHP、C# 或 Ruby 有意見,但是不從事數據分析的人沒理由對 MATLAB 不滿意。(這也可能是 R 較少被提及「不喜歡」的部分原因)
我們不一定說這裡存在因果關係——部分程序員不喜歡就會導致該語言會被拋棄。 另一種可能是,如果人們覺得這種語言已經越來越不流行,那麼人們就會覺得很自然地表達他們也不喜歡了。 同樣可以想像的是,開發人員經常使用這個欄位來記錄他們曾經使用的技術,但是不會再使用該技術了。 這將導致那些自然而然地「被替代的」技術就一直停留在「不喜歡」標籤裡面。
最不喜歡的和最喜歡的
上面的分析僅考慮了編程語言,不涉及操作系統、平台或庫(框架)。那麼就整體而言,最不喜歡的技術是什麼?為了專註於我們有足夠數據的更主要的技術,我們其限制為至少提及了 1000 次的技術。
最不喜歡的其中有幾個是微軟的技術,特別是 IE 和 VB,以及 「微軟」 標籤(「評估」 也出現在這個列表中,但是沒那麼糟糕)。有個好消息是,大多數人都不喜歡 Flash。此外,較老的語言,比如 COBOL、 Fortran 和 Pascal 也出現在此處。
值得再次強調的是,這不是對技術及其品質或受歡迎程度的批評。 這只是衡量哪些技術激起了強烈的消極情緒,至少在一部分願意公開分享其感受的開發人員中如此。
我們也集中觀察了那些最流行的技術、那些最不可能被不喜歡的技術(這次,由於喜歡標籤出現的比較多,我們僅關注那些被提及至少 10000 次的)。
Git 也許是許多開發者的沮喪源頭(絕對包括我!),但人們很少在簡歷中承認這一點,這是因為它是我們的開發者故事中最受歡迎的標籤之一。 R 也出現在了這個列表,但它並不是唯一一個沒有爭議的與數據科學相關的語言。 機器學習被 23000 人所喜歡,而且很少被人不喜歡。 諸如 Python-3.X、CSS3 和 HTML5 等標籤可能表明開發者很少指定他們不喜歡技術的特定版本(如果他們會指定的話)。 當然,jQuery 在 Stack Overflow 上一直是如此受歡迎。
分化的標籤網路
我們可以把所有這些標籤組合成一個網路。在最近的一篇文章中,Julia Silge 展示了我們如何構建一個代表整個軟體生態系統的技術網路。 如果我們根據每個標籤不喜歡的程度對節點進行著色,我們可以了解該生態系統的哪些部分比其它部分更有爭議。
通過將開發者故事的標籤放置到次生態系統中,該網路揭示了哪些類型的標籤趨於兩級分化。 在微軟(以 C# 和 .NET 為中心,左上角),PHP(與 WordPress 和 Drupal 一起,左下角)以及移動開發(特別是 Objective-C,右下角)的子生態系統中都有一些意見分化的標籤聚合。 在操作系統聚合中(右下),我們可以看到諸如 OSX 之類的系統,以及特別是 Windows 都有不喜歡的人,但是像 Linux、Ubuntu 和 Unix 這樣的標籤卻沒有。
競爭
如果某人喜歡某個特定的標籤,是否意味著通常他們喜歡或不喜歡另外的標籤呢?
我們可以使用出現在特定喜歡標籤之間的 phi 係數來衡量它。 (當計算這些相關性時,我們只考慮那些至少有一個不喜歡標籤的人。)
這突出顯示了軟體生態系統的一些「競爭」:Linux 和 OSX vs Windows,Git vs SVN,vim vs emacs 以及(對我來說)R vs SAS。 這些配對中的大多數並不代表「相反」的技術,而是反映了兩種解決類似問題的方法。 它們中的許多表明了從以前流行的技術發展到更現代的技術(SVN 由 Git 取代,XML 由 JSON 取代,VB 由 C# 取代)。 這對於人們想在簡歷中列出的內容是有意義的;開發者通常會表明他們不願意使用他們認為過時的東西。
總結
我對「語言戰爭」沒有任何興趣,我也不會對用戶分享的喜歡或不喜歡的任何技術進行裁斷。 對微軟技術的兩級分化的看法通常會鼓勵我分享我的個人經驗。 我是一個 Mac 和 UNIX 終身擁躉,幾乎我所有的大學和研究生的編程學習都圍繞著 Python 和 R。儘管如此,我很高興能夠加入一個 .NET 棧的公司,我很高興我來了 —— 因為我喜歡這個團隊、產品和數據。 我不能代表其他人說話,但我很高興自己可以從事於自己想做的事情,而不是那些不想要做的事情。
如果您有興趣分享您喜歡和不喜歡的技術,並想找到您職業生涯的下一份工作,那麼您可以創建自己的開發者故事。
想找一份你喜歡的技術的工作? 在 Stack Overflow Jobs 找到你的下一份工作,在那裡你可以搜索你喜歡做的技術工作。
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive