Go 部落格
Go 開發者調查 2021 年結果
非常感謝社群的積極響應!
2021 年,我們在 10 月 26 日至 11 月 16 日期間進行了 Go 開發者調查,共收到 11,840 份回覆,這是我們舉辦調查 6 年以來參與人數最多的一次!感謝您抽出寶貴時間,為社群提供關於使用 Go 體驗的寶貴見解。
亮點
- 大多數回覆與往年一致。例如,對 Go 的滿意度仍然非常高,達到 92%,75% 的受訪者在工作中使用 Go。
- 今年,我們隨機抽取了一些使用 Go VS Code 外掛的參與者,這導致了參與調查的人員構成發生了一些變化。
- 缺少關鍵庫、語言特性和基礎設施是使用 Go 最常見的障礙。(注意:本次調查在 Go 1.18 釋出(引入泛型,被報告為最缺失的特性)之前進行)
- 受訪者希望優先改進除錯和依賴管理。
- 使用模組時面臨的最大挑戰涉及版本控制、使用私有倉庫和多模組工作流。(注意:本次調查在 Go 1.18 釋出(引入工作區以解決許多這些問題)之前進行)。
- 81% 的受訪者對 Go 專案的長期發展方向充滿信心。
我們聽取了誰的意見?
我們的人口統計資料多年來一直相當穩定(檢視 2020 年結果)。與往年一樣,Go 主要用於科技行業。70% 的受訪者是軟體開發人員,少數是 IT 或 DevOps 人員,76% 的受訪者表示他們在工作中從事 Go 程式設計。
2021 年的一些新人口統計資料
- 大多數受訪者將他們的組織描述為企業或中小型企業,約有四分之一的受訪者將他們的組織描述為初創公司。諮詢公司和公共機構的比例要少得多。
- 絕大多數受訪者在少於十人的團隊中工作。
- 超過一半(55%)的受訪者在工作中每天使用 Go。工作之外使用 Go 的頻率較低。
性別認同
我們在調查中詢問性別認同,因為它能讓我們瞭解調查結果中誰得到了體現,併為衡量社群的包容性增加了另一個維度。Go 團隊重視多樣性和包容性,這不僅是因為它是正確的事情,還因為多元化的聲音有助於我們做出更好的決策。今年我們重新措辭了性別認同問題,使其更能包容其他性別認同。與往年相比,認同為女性的比例大致相同(2%)。在隨機抽樣的群體中也是如此,這表明這不僅僅是由於抽樣原因。
輔助技術
今年我們再次發現,約有 8% 的受訪者使用某種形式的輔助技術。大多數挑戰與對 Go 相關網站或程式碼編輯器需要更高的對比度主題和更大的字型大小有關;我們計劃在今年晚些時候針對網站反饋採取行動。這些可訪問性需求是我們為 Go 生態系統做出貢獻時都應該牢記的。
深入瞭解 Go 採用的挑戰
今年我們修改了問題,以針對 Go 未被採用的實際情況及其原因。首先,我們詢問了受訪者在過去一年中是否曾評估過將另一種語言與 Go 進行比較。80% 的受訪者表示他們曾評估過切換到 Go、從 Go 切換,或者在沒有現有語言的情況下采用 Go。其中 80% 的評估主要是出於業務原因。
我們曾預料到 Go 最常見的用例將是評估 Go 時最常見的預期用途。API/RPC 服務是迄今為止最常見的用途,但令人驚訝的是,資料處理是第二常見的預期用例。
在評估過 Go 的受訪者中,75% 的人最終使用了 Go。(當然,由於幾乎所有調查受訪者都表示使用 Go,我們可能無法聽到那些評估過 Go 但最終決定不使用它的開發者的聲音。)
對於那些評估過 Go 但未使用它的人,我們接著詢問了是什麼挑戰阻礙了他們使用 Go,以及其中哪一項是主要障礙。
這些結果所描繪的圖景支援了之前的發現,即缺少特性和缺乏生態系統/庫支援是阻礙 Go 採用的最重要的技術障礙。
我們詢問了關於缺失特性或庫的更多細節,發現泛型是最常見的關鍵缺失特性——我們預計在 Go 1.18 引入泛型後,這將成為一個不太重要的障礙。下一個最常見的缺失特性與 Go 的型別系統有關。我們希望在做出額外更改之前,看看引入泛型如何影響或解決 Go 型別系統相關的潛在需求。目前,我們將收集更多關於這些需求背景的資訊,並可能在未來探索滿足這些需求的不同方式,例如透過工具、庫或型別系統的更改。
至於缺失的庫,對於什麼補充能夠解鎖最大比例的想要採用 Go 的使用者,沒有明確的共識。這需要進一步的探索。
那麼,當他們不選擇 Go 時,用什麼替代了呢?
Rust、Python 和 Java 是最常見的選擇。Rust 和 Go 擁有互補的特性集,因此當 Go 無法滿足專案功能需求時,Rust 可能是一個不錯的選擇。使用 Python 的主要原因是缺少庫和現有的基礎設施支援,因此 Python 龐大的包生態系統可能使其難以切換到 Go。同樣,使用 Java 的最常見原因是 Go 缺少功能,這可以透過 1.18 版本中引入的泛型來緩解。
Go 的滿意度和優先順序
讓我們看看 Go 表現良好的領域以及可以改進的地方。
與去年一致,92% 的受訪者表示他們在過去一年中使用 Go 時非常滿意或有些滿意。
社群態度的年同比趨勢略有波動。使用 Go 不足 3 個月的人往往不太同意這些說法。受訪者越來越發現 Go 對公司的成功至關重要。
優先順序
在過去幾年中,我們請受訪者根據他們的滿意度和重要性對特定領域進行評分;我們利用這些資訊來識別對受訪者來說重要但又不滿意的領域。然而,大多數這些領域在重要性和滿意度方面只顯示出微小的差異。
今年我們引入了一個新問題,以探索對特定領域的工作進行優先排序的替代方法。“假設你有 10 個 GopherCoins 用於改進以下 Go 工作方面的方面。你會如何分配你的硬幣?”有兩個領域脫穎而出,獲得了顯著更多的 GopherCoins,分別是依賴管理(使用模組)和診斷 bug,這些是我們將在 2022 年投入資源的領域。
使用模組時的挑戰
最常見的與模組相關的挑戰是處理多個模組(佔受訪者的 19%),其次是關於版本控制的評論(包括對提交穩定 v1 API 的猶豫)。與版本控制相關,9% 的回覆討論了版本管理或更新依賴項。排名前五的是關於私有倉庫的挑戰(包括與 GitLab 的身份驗證)以及記住不同的 `go mod` 命令以及理解它們的錯誤訊息。
學習 Go
今年我們採用了一種新的結構來探索不同 Go 經驗水平之間的相對生產力。絕大多數受訪者(88%)同意他們定期達到高水平的生產力,85% 同意他們在編寫 Go 程式碼時通常能夠達到心流狀態。隨著 Go 經驗的增加,同意的比例也會增加。
我們應該在哪些方面投資最佳實踐文件?
一半的受訪者希望在效能最佳化和專案目錄結構的最佳實踐方面獲得更多指導。不出所料,新 Gopher(使用 Go 不足 1 年)比有經驗的 Gopher 需要更多的指導,儘管這兩個群體關注的領域是一致的。值得注意的是,新 Gopher 對併發方面的指導需求比有經驗的 Gopher 更大。
開發人員如何學習一門新語言?
大約一半的受訪者在工作中學習了一門新語言,但近一半(45%)在學校或工作之外學習。受訪者最常(90%)報告獨自學習。在那些表示在工作中學習的人中,儘管可能有集體學習的機會,但 84% 的人是獨自學習而不是集體學習。
許多頂級資源都強調了良好文件的重要性,但現場教學在語言學習方面也是一個特別有用的資源。
開發者工具和實踐
與往年一樣,絕大多數調查受訪者表示在 Linux(63%)和 macOS(55%)系統上使用 Go。主要在 Linux 上開發的使用者比例似乎隨時間略有下降。
目標平臺
超過 90% 的受訪者目標平臺是 Linux!即使在 macOS 上開發的人比 Windows 上的多,但他們部署到 Windows 的頻率比部署到 macOS 的頻率更高。
模糊測試
大多數受訪者不熟悉模糊測試(fuzzing),或者仍然認為自己是模糊測試的新手。基於這一發現,我們計劃 1)確保 Go 的模糊測試文件除了 Go 中模糊測試的具體細節外,還解釋模糊測試的概念,以及 2)設計可操作的輸出和錯誤訊息,以幫助模糊測試新手成功應用它。
雲計算
Go 的設計理念是面向現代分散式計算,我們希望繼續改善使用 Go 構建雲服務的開發者體驗。今年,將 Go 程式部署到三大全球雲提供商(Amazon Web Services、Google Cloud Platform 和 Microsoft Azure)的受訪者比例保持不變,而部署到自營或公司自有伺服器的本地部署則繼續下降。
部署到 AWS 的受訪者使用託管 Kubernetes 平臺的比例有所增加,目前佔部署到三大雲提供商中任何一個的 35%。所有這些雲提供商的將 Go 程式部署到 VM 的使用者比例都有所下降。
今年的變化
去年我們引入了模組化調查設計,以便在不增加調查長度的情況下提出更多問題。今年我們繼續採用模組化設計,雖然一些問題被停用,另一些問題被新增或修改。沒有受訪者看到調查的所有問題。此外,由於一些問題是根據之前的回答選擇性提出的,因此可能樣本量要小得多。
今年調查最顯著的變化在於我們招募參與者的方式。往年,我們透過 Go Blog 釋出調查資訊,然後在 Twitter、Reddit 或 Hacker News 等各種社交渠道上傳播。今年,除了傳統渠道外,我們還透過 VS Code Go 外掛隨機選擇使用者,向他們展示一個詢問是否願意參與調查的提示。這形成了一個隨機樣本,我們將其與來自傳統渠道的自願選擇的受訪者進行比較,並幫助識別了選擇性偏差的潛在影響。
近三分之一的受訪者是透過這種方式獲得的,因此他們的回覆有可能對我們今年看到的回覆產生重大影響。這兩個群體之間的一些關鍵差異是:
更多新 Gopher
隨機抽樣群體中新 Gopher(使用 Go 不足一年的使用者)的比例更高。這可能是因為新 Gopher 對 Go 生態系統或社交渠道的瞭解較少,因此他們更有可能在 IDE 中看到調查廣告,而不是透過其他方式找到。無論原因如何,很高興能聽到來自 Go 社群更廣泛的聲音。
更多 VS Code 使用者
毫不奇怪,91% 的來自 VS Code 外掛的受訪者在 Go 開發時更喜歡使用 VS Code。因此,今年我們看到了 VS Code 編輯器偏好度大大提高。當我們排除隨機樣本時,結果與去年沒有統計學上的顯著差異,因此我們知道這是由於我們的樣本變化而不是整體偏好造成的。同樣,VS Code 使用者也比其他受訪者更可能在 Windows 上進行開發,因此我們看到今年對 Windows 的偏好略有增加。我們還看到了一些與 VS Code 編輯器使用相關的特定開發技術的使用發生了輕微變化。
不同的資源
隨機抽樣群體不太可能將 Go Blog 等社交渠道列為他們回答 Go 相關問題的首選資源,因此他們可能不太可能在這些渠道上看到調查廣告。
結論
感謝您與我們一起回顧 2021 年開發者調查結果!重申一下,一些關鍵要點:
- 我們的大多數年度指標保持穩定,大部分變化歸因於我們樣本的變化。
- 對 Go 的滿意度仍然很高!
- 四分之三的受訪者在工作中使用 Go,許多人每天都使用 Go,因此幫助您完成工作是首要任務。
- 我們將優先改進除錯和依賴管理工作流程。
- 我們將繼續努力使 Go 成為一個包容所有 Gopher 的社群。
瞭解開發人員的經驗和挑戰有助於我們衡量進展並指導 Go 的未來。再次感謝所有為本次調查做出貢獻的人——沒有你們,我們無法完成。希望明年能再次見到您!
下一篇文章:分享您對 Go 開發的反饋
上一篇文章:何時使用泛型
部落格索引