調查報告亮點

  • 大多數回覆與往年一致。例如,開發者對 Go 的滿意度仍然很高,92% 受訪者表示滿意,75% 的受訪者在工作中使用 Go。
  • 今年的部分受訪者來自於調查團隊對 Go VS Code 外掛使用者的隨機抽樣,因此調查的回覆跟以往相比也有所不一樣。
  • 缺少關鍵庫、語言特性和基礎設施是使用 Go 最常見的障礙。(此調查是在 Go 1.18 釋出之前進行的,泛型是報告中最多人反饋的第一大缺失特性)。
  • 受訪者希望優先考慮對除錯和依賴管理的改進。
  • 使用模組時的最大挑戰涉及版本控制、使用私有倉庫和多模組工作流。
  • 81% 的受訪者對 Go 專案的長期發展方向充滿信心。

Go 使用情況

和前幾年的調查結果一樣,Go 主要在科技行業被廣泛使用。70% 的受訪者是軟體開發者,少數從事 IT 或 DevOps 工作。76% 的受訪者表示他們在工作中使用 Go 進行程式設計。72% 的受訪者表示他們使用 Go 開發 API/RPC 服務,其他的主要用途是 Web 服務、庫或框架、自動化部署和資料分析等。少數開發者還使用 Go 開發桌面應用、遊戲、AI 和移動 APP。

一些新的統計結果:

  • 大多數受訪者將他們的組織描述為企業或中小型企業,大約四分之一的受訪者將他們的組織描述為初創公司。諮詢公司和公共機構的佔比更少。
  • 絕大多數受訪者在少於 10 人的團隊中工作。
  • 超過一半 (55%) 的受訪者每天在工作中使用 Go,受訪者在工作之外使用 Go 的頻率較低。

開發者使用 Go 遇到的阻礙

受訪者被問及曾評估過 Go 但最終沒有選擇使用它,其中主要遇到的阻礙包括:缺少所需的語言特性其他的程式語言對現有的工具和基礎設施提供了更好的支援Go 生態缺少所需的庫、團隊沒有使用 Go 的經驗、Go 工具不過豐富、Go 效能未能滿足需求、招聘 Go 開發者困難…… 等。

由此可見,語言特性的缺失和生態不夠豐富勸退了不少本想 “入坑” 的開發者。其中「泛型」是他們最希望新增的特性(調查進行的時候尚未釋出提供了泛型的 Go 1.18)。除了泛型,開發者對於型別系統相關的特性也具有十分強烈的需求你。Go 團隊表示,他們將收集更多關於這些需求的背景資訊,並可能在未來探索不同的方式來滿足這些需求,例如通過工具、庫或對型別系統的修改。

那麼這些相中了 Go,但最後又不採用它的受訪者選了什麼語言?下面的圖表給出了答案:

Rust、Python 和 Java 是最常見的選擇。對此 Go 團隊認為,Rust 和 Go 有互補的特性,所以當 Go 不能滿足專案的需求時,Rust 會是一個不錯的選擇。使用 Python 的主要原因是 Go 缺少庫和現有的基礎設施支援,因此 Python 的大型包生態系統可能會導致他們難以切換到 Go。同樣,使用 Java 的常見原因是 Go 缺少一些功能,不過這應該會通過在 1.18 版本中引入泛型而得到緩解。

開發者對 Go 的滿意度

跟去年一樣,92% 的受訪者表示他們在過去一年中對使用 Go 感到非常滿意或比較滿意。

此外,越來越多的開發者表示,Go 對於他們公司的成功提供了極大的幫助。

開發者對 Go 的訴求

依賴管理和錯誤處理是 Go 開發者需求最大的兩項功能。

開發者工具和實踐

與往年一樣,絕大多數受訪者表示在 Linux (63%) 和 macOS (55%) 系統上使用 Go。不過隨著時間的推移,主力使用 Linux 開發的 Go 受訪者比例似乎略有下降。

目標平臺方面,超過 90% 的受訪者選擇了 Linux。儘管在 macOS 上開發的受訪者多於 Windows,但他們大多數選擇部署到 Windows 而不是 macOS。

最後

Go 開發者 2021 調查報告的部分關鍵要點:

  • 此次調查的樣本有所變化,但大部分同比指標保持穩定,大部分變化。
  • 開發者對 Go 的滿意度仍然很高
  • 四分之三的受訪者在工作中使用 Go,許多人每天都在使用 Go
  • Go 團隊將優先改進除錯和依賴管理的工作流程

完整報告檢視:https://go.dev/blog/survey2021-results