官宣:2019 年 Go 開發者調查報告

2019 年 Go 開發者調查

4月20日,Go 官方釋出 2019 年的 Go 開發者調研報告。官方很是感謝參與本次調查的數千名Go開發人員。 在2019年,官方收到了 10,975 份問卷,幾乎是去年的兩倍! 團隊成員很是感謝開發者花時間和精力填寫這份 Go 開發者調研。前端

本次調研,官方改進了對開放式、自由文本回答的問題的分析。去年使用的是機器學習來粗略但快速地對這些問卷進行分類。今年,兩名研究人員手動分析和分類了這些問卷,容許進行更細緻的分析,與去年的數字進行有效的比較。這個變化的目的是提供一個 2019 年之後的可靠基線。golang


一分鐘速讀

這篇文章很長。如下是本次調研的主要結論:web

  • 此次的受訪者的受衆特徵與 Stack Overflow 的調查受訪者類似,使得這些結果能夠表明更多的 Go 開發人員的心聲。
  • 大多數受訪者天天都使用 Go,並且這個數字每一年都在上升。
  • Go 的使用仍集中在技術公司,可是 Go 在愈來愈多的行業中被用到,例如金融行業和媒體相關。
  • 開發者使用 Go 解決的問題很類似,基本集中在構建 API, RPC 服務和 CLI 工具。
  • 大多數團隊都試圖儘快更新到最新的 Go 版本。 可是第三方 package 的 provider 更新地會相對慢一點。
  • 如今,Go生態系統中的幾乎每一個人都在使用 Go Modules,可是用戶對軟件包管理方面仍然存在困惑。
  • 有待改進的重點領域包括改善開發人員的 debug 體驗,Go Modules 和 cloud service 方面的體驗。
  • VS Code 和 GoLand 仍然是最受歡迎的編輯器,受訪的四我的中就有三個在使用他們。

受訪的開發者羣體

受訪者公司規模

受訪者的編程工做年限

受訪者使用 Go 編程的時間

從使用 Go 的經驗來看,咱們發現大多數受訪者(56%)使用 Go 的時間不到兩年,相對較新。 多數人還說,他們在工做中(72%)和工做外(62%)使用Go。 能夠看到在工做中使用 Go 的受訪者比例每一年都在上升。數據庫

受訪者的開發背景

使用 Go 時間較長的受訪者與新的 Go 開發人員的背景不一樣。 這些 Go 老兵更有可能擁有 C / C ++ 的專業知識,而不太可能具有 JavaScript,TypeScript 和 PHP 的專業知識。 可是無論他們使用 Go 已有多長時間,Python彷佛都是大多數受訪者熟悉的語言(不是Go🤔)。編程

受訪者所從事的行業

去年,咱們詢問了受訪者從事哪些行業,發現大多數人在軟件,互聯網或網絡服務公司工做。 今年看來,受訪者所從事的行業更加普遍了。服務器

受訪者對 Go 開源項目的貢獻

Go 是一個成功的開源項目,但這並不意味着使用它的開發人員也正在編寫​​免費或開源軟件。 與往年同樣,咱們發現大多數受訪者並非 Go 開源項目的頻繁貢獻者,有 75% 的受訪者表示他們「不多」或「從不」參與 Go 開源項目。 隨着Go社區的擴展,咱們發現從未爲 Go 開源項目作出過貢獻的受訪者所佔的比例正在緩慢上升。網絡

開發工具篇

受訪者開發中使用的 OS

與往年同樣,絕大多數開發者表示在 Linux 和 macOS 系統上使用 Go。 這是咱們的受訪者與StackOverflow的2019 年調查結果之間存在很大差別的一個方面:在咱們的調查中,只有20%的受訪者使用 Windows 做爲主要開發平臺,而對於 StackOverflow 而言,這一比例爲 45%。 Linux 的使用率爲 66%,macOS 的使用率爲 53%,這二者都遠遠高於 StackOverflow 的受衆,後者分別報告了 25% 和 30%(看來 Gopher 仍是喜歡 UNIX 多一些)。併發

受訪者使用的 IDE

今年,IDE 整合的趨勢仍在繼續。 GoLand 今年的使用量增加最快,從 24% → 34% 上升。 VS Code的增加速度有所放緩,但仍然是受訪者中最受歡迎的編輯器,佔41%。 結合起來,這兩個 IDE 如今的佔有率是 75%。dom

關於自建 Go document server

今年,咱們添加了一個有關內部 Go 文檔工具(例如 gddo )的問題。 少數受訪者( 6% )表示他們的組織運行本身的Go文檔服務器,儘管當咱們查看大公司受訪者(擁有至少5,000名員工)時,這一比例幾乎翻了一番(達到11%),但當咱們與後者交流時,他們說基本已經中止了自建 document server,緣由是收益小,成本高。機器學習

受訪者對 Go 的使用意向

大部分受訪者都認爲 Go 在他們的團隊中表現良好(86%),而且他們但願將其用於下一個項目(89%)。 咱們還發現,超過一半的受訪者(59%)認爲 Go 對其公司的成功相當重要。 自2016年以來,這些指標一直保持穩定。

受訪者對 Go 生態的滿意度

在 Go 生態的滿意度上,咱們看到很大比例的受訪者贊成每種說法(82%–88%),而且在過去四年中,這些比率在很大程度上保持穩定。

受訪者所在行業對 Go 生態的滿意度

今年,咱們對各個行業的滿意度進行了更細微的考察,以創建基準。 整體而言,不管行業如何,受訪者都對在工做中使用Go表示滿意。 咱們確實在幾個領域(尤爲是製造業)中看到了一些不滿,咱們計劃經過後續研究進行調查。

受訪者對 Go 特性的關注度

一樣,咱們調查了對 Go 開發各個方面的滿意度以及重要性。 將這些結果結合在一塊兒能夠突出顯示三個特別關注的主題:debug(包括調試併發性),go modules 和 cloud service。 大多數人都將這些主題中的每個評爲「很是」或「相當重要」,但與其餘主題相比,這些方面的滿意度得分明顯較低。

受訪者對 Go 社區的滿意度

上面的調查結果可能不足爲奇,由於參與 Go 開發者調查的人們喜歡 Go 的機率更大(手動狗頭)。

使用 Go 完成的工做內容

構建API / RPC服務(71%)和CLI(62%)仍然是 Go 的重頭戲。

咱們調查了受訪者使用 Go 的更大領域。 到目前爲止,最多見的領域是 Web 開發(66%),但其餘常見的領域包括數據庫(45%),網絡編程(42%),系統編程(38%)和 DevOps (37%)。

Go 開發過程的經常使用技術

除了受訪者正在構建的內容以外,咱們還詢問了他們使用的一些開發技術。 絕大多數受訪者表示,他們依靠 log 進行調試(88%),而他們的回答代表,這是由於提供的調試工具難以有效使用。 可是,本地逐步調試(例如,使用Delve),性能分析和使用競爭檢測器進行測試的狀況並很多見,約有50%的受訪者其使用中至少一種技術。

關於 Go Modules

在包管理方面,咱們發現絕大多數受訪者(89%)採用了 Go Modules。對於開發者來講,這是一個巨大的轉變,幾乎整個社區都在同時經歷這一轉變。

雲原生時代的 Go

Go在設計時考慮到了現代分佈式計算,咱們但願繼續改進使用Go構建雲服務的開發人員體驗。今年,咱們擴展了關於雲開發的問題,以便更好地瞭解受訪者如何與雲提供商合做,他們喜歡當前開發者體驗的哪些方面,以及哪些方面能夠改進。

咱們能夠清晰地感覺到如下兩個趨勢:

  1. 全球三大雲提供商(Amazon Web Services,Google Cloud Platform和Microsoft Azure)在受訪者中的使用率均呈上升趨勢,而大多數其餘提供商每一年使用的受訪者比例都較小。
  2. 到自有或公司擁有的服務器的本地部署繼續減小,而且在統計上已與AWS(44%比42%)綁定爲最多見的部署平臺。

Go project 的部署雲平臺

整體而言,大多數受訪者對在全部三大主要雲提供商上使用 Go 感到滿意。 受訪者具備對 Go(AWS)(80%滿意)和GCP(78%)的 滿意度。

Go project 的部署服務類型

存在的痛點

受訪者表示沒法使用Go的主要緣由有三個:

  1. (56%)當前的項目正在使用其餘語言;
  2. 團隊更傾向於使用其餘語言(37%);
  3. Go自己缺少一些關鍵功能 (25%)。

對一些 Go 特性的期待

在 25% 的受訪者中,認爲 Go 缺少他們須要的語言特性。其中 79% 認爲泛型是一個嚴重缺失的特性。22% 的人提到了對錯誤處理的持續改進(除了 Go 1.13 的更改以外),13 %的人要求更多的函數式編程特性,尤爲是內置的map/filter/reduce 功能。須要說明的是,這些數字來自受訪者的子集,他們表示,若是提供了他們須要的一個或多個關鍵功能,他們將可以更多地使用 Go。

沒有使用 Go 做爲項目的語言的一些緣由

對於他們所從事的工做來講,Go 「不是一種合適的語言」的受訪者有各類各樣的理由和用例。最多見的是他們從事某種形式的前端開發(22%),例如用於 web、桌面或移動設備的g ui。另外一個常見的回答是,受訪者說他們工做的領域中已經有占主導地位的語言(9%),所以很難使用不一樣的語言。一些受訪者還告訴咱們他們指的是哪一個領域(或者只是提到了一個領域,而沒有提到另外一種更常見的語言),咱們經過下面的「I work on [domain]」行來講明這一點。受訪者提到的另外一個主要緣由是須要更好的性能(9%),尤爲是實時計算。

受訪者認爲目前存在的最大的阻礙

受訪者報告的最大阻礙與去年基本保持一致。 Go 缺少泛型和模塊,包管理工具仍然是最主要的問題(分別佔反饋的15%和12%),而且強調工具問題的受訪者比例有所增長。 這些數字與上面的圖表不一樣,由於這個問題是全部受訪者都提出的,不管他們說最大的阻礙什麼。 這三個問題都是今年 Go 團隊關注的領域,咱們但願在將來幾個月內極大地改善開發人員的體驗,尤爲是在模塊,工具和入門經驗方面。

Debug Go project 的痛點

任何一種語言的 debug 和 benchmark 都具備挑戰性。 受訪者告訴咱們,這兩個方面的最大挑戰不是 Go 的工具所特有的,而是一個更根本的問題:缺少知識,經驗或最佳實踐。 咱們但願在今年晚些時候經過文檔和其餘材料來幫助解決這些問題。 其餘主要問題涉及到工具的使用,尤爲是在學習/使用 Go 的調試和 profile 分析工具時,在成本/收益方面存在不利的權衡,以及使工具在各類環境中工做的挑戰(例如,在容器中進行調試或從生產環境中獲取性能分析)。

Go community

大約三分之二的受訪者使用 Stack Overflow 來回答與 go 相關的問題(64%)。其餘排名靠前的答案來源是godoc.org(47%),直接閱讀源代碼(42%)和 golang.org (33%)。

關於 MeetUp

上表突展現了不一樣的尋求幫助的方式(幾乎都是社區驅動的),受訪者在使用Go開發過程當中依靠它們來克服挑戰。事實上,對於許多 gopher 來講,這多是他們與更大的社區互動的主要要點之一: 隨着咱們的社區不斷擴大,咱們看到愈來愈多的受訪者不用參加任何與 go 相關的活動。在2019年,這一比例接近三分之二的受訪者(62%)。

受訪者的語言

因爲谷歌更新了全谷歌範圍內的隱私指南,咱們沒法再詢問受訪者生活在哪一個國家。相反,咱們詢問了首選的口語/書面語做爲 Go 在全球使用的粗略調查,這有助於爲潛在的本地化工做提供數據。

因爲本次調查是用英語進行的,所以對於講英語的人和英語爲第二或第三種常見語言的人羣可能會有很大的偏差。 所以,非英語數字應解釋爲可能的最小值,而不是Go的全球受衆人數的近似值。

Conclusion

咱們但願你瞭解此次 2019 年開發者調查的結果。瞭解開發人員的經驗和挑戰有助於咱們爲 2020 年制定計劃並肯定工做的優先級。再一次,很是感謝全部參與調查的人,大家的反饋將有助於在將來一年甚至更長的時間內引導 Go 前進的方向。


**官方資訊/最新技術/獨家解讀**
複製代碼

相關文章
相關標籤/搜索