Go 部落格

2020 年 Go 開發者調查結果

Alice Merrick
2021 年 3 月 9 日

感謝大家積極參與!

2020 年,我們再次獲得了大量反饋,共有 9,648 份回覆,與 2019 年的回覆數量 大致相當。感謝您抽出寶貴時間,為社群提供關於使用 Go 經驗的寶貴見解!

新的模組化調查設計

您可能會注意到,有些問題的樣本量(“n=”)小於其他問題。這是因為有些問題向所有受訪者展示,而有些問題僅向隨機選擇的一部分受訪者展示。

亮點

我們聽取了誰的意見?

人口統計學問題有助於我們區分哪些年度差異可能源於受訪者構成變化,而不是情緒或行為的變化。由於我們的人口統計學特徵與去年相似,我們可以相當確信,其他年度變化並非主要由於人口統計學變化。

例如,組織規模、開發者經驗和行業分佈從 2019 年到 2020 年基本保持不變。

Bar chart of organization size for 2019 to 2020 where the majority have fewer than 1000 employees Bar chart of years of professional experience for 2019 to 2020 with the majority having 3 to 10 years of experience Bar chart of organization industries for 2019 to 2020 with the majority in Technology

近一半(48%)的受訪者使用 Go 不足兩年。2020 年,使用 Go 不到一年的受訪者回複數量有所減少。

Bar chart of years of experience using Go

大多數人表示他們在工作(76%)和工作之外(62%)使用 Go。每年使用 Go 的受訪者比例都在呈上升趨勢。

Bar chart where Go is being used at work or outside of work

今年我們引入了一個關於主要工作職責的新問題。我們發現 70% 的受訪者的主要職責是開發軟體和應用程式,但有相當一部分人(10%)負責設計 IT 系統和架構。

Primary job responsibilities

與往年一樣,我們發現大多數受訪者不是 Go 開源專案的頻繁貢獻者,75% 的人表示他們“很少”或“從不”貢獻。

How often respondents contribute to open source projects written in Go from 2017 to 2020 where results remain about the same each year and only 7% contribute daily

開發者工具和實踐

與往年一樣,絕大多數調查受訪者報告在 Linux (63%) 和 macOS (55%) 系統上使用 Go。主要在 Linux 上進行開發的受訪者比例似乎隨著時間的推移略有下降。

Primary operating system from 2017 to 2020

編輯器偏好似乎首次穩定下來:VS Code 仍然是最受歡迎的編輯器 (41%),GoLand 位居第二 (35%)。這兩個編輯器佔了總回覆的 76%,與其他偏好相比,它們沒有像往年那樣持續下降。

Editor preferences from 2017 to 2020

今年,我們要求受訪者透過如果他們有 100 枚“GopherCoins”(一種虛構貨幣)的話,他們願意為改進編輯器支付多少,來對編輯器改進進行排序。程式碼補全收到了每個受訪者平均最高的 GopherCoins 數量。一半的受訪者為排名前四的功能(程式碼補全、程式碼導航、編輯器效能和重構)提供了 10 枚或更多硬幣。

Bar char of average number of GopherCoins spent per respondent

大多數受訪者(63%)花費 10-30% 的時間進行重構,這表明這是一個常見的任務,我們希望調查改進它的方法。這也解釋了為什麼重構支援是最受資助的編輯器改進之一。

Bar chart of time spent refactoring

去年我們詢問了具體的開發技術,發現近 90% 的受訪者使用文字日誌進行除錯,所以今年我們增加了一個後續問題來找出原因。結果顯示,43% 的人使用它是因為它允許他們在不同的語言中使用相同的除錯策略,42% 的人更喜歡使用文字日誌而不是其他除錯技術。然而,27% 的人不知道如何開始使用 Go 的除錯工具,24% 的人從未嘗試使用 Go 的除錯工具,因此在可發現性、可用性和文件方面,有改進偵錯程式工具的機會。此外,由於四分之一的受訪者從未嘗試使用除錯工具,痛點可能被低報了。

對 Go 的情緒

這是我們第一次詢問總體滿意度。92% 的受訪者表示在過去一年中使用 Go 時感到非常滿意或比較滿意。

Bar chart of overall satisfaction on a 5 points scale from very dissatisfied to very satisfied

這是我們第三年詢問“您會推薦…”的 淨推薦值 (NPS) 問題。今年的 NPS 結果為 61(68% 的“推薦者”減去 6% 的“批評者”),與 2019 年和 2018 年相比在統計上沒有變化。

Stacked bar chart of promoters, passives, and detractors

與往年類似,91% 的受訪者表示他們希望在下一個新專案中使用 Go。89% 的人表示 Go 對他們的團隊工作得很好。今年,我們看到認為 Go 對公司成功至關重要的受訪者比例有所增加,從 2019 年的 59% 增加到 2020 年的 66%。在擁有 5,000 名或更多員工的組織工作的受訪者不太可能同意(63%),而規模較小的組織的受訪者更有可能同意(73%)。

Bar chart of agreement with statements I would prefer to use Go for my next project, Go is working well for me team, 89%, and Go is critical to my company's success

與去年一樣,我們要求受訪者根據滿意度和重要性對 Go 開發的特定領域進行評分。使用雲服務、除錯和模組(去年被強調為改進機會的領域)的滿意度有所提高,而大多數重要性分數保持不變。我們還引入了幾個新主題:API 和 Web 框架。我們看到 Web 框架的滿意度低於其他領域(64%)。它對大多數當前使用者來說並沒有那麼重要(只有 28% 的受訪者認為它非常重要或極其重要),但它可能是潛在 Go 開發者的一個缺失的關鍵功能。

Bar chart of satisfaction with aspects of Go from 2019 to 2020, showing highest satisfaction with build speed, reliability and using concurrency and lowest with web frameworks

81% 的受訪者表示在使用 Go 時感到非常高效或極其高效。大型組織的受訪者比小型組織的受訪者更有可能感到極其高效。

Stacked bar chart of perceived productivity on 5 point scale from not all to extremely productive

我們透過傳聞得知 Go 很容易快速上手。我們詢問了至少覺得自己有一定生產力水平的受訪者,他們花了多長時間才達到這種水平。93% 的人表示不到一年,大多數人在 3 個月內就感到有生產力了。

Bar chart of length of time before feeling productive

儘管與去年大致相同,“我覺得在 Go 社群中很受歡迎”這一陳述的受訪者比例似乎隨著時間的推移呈下降趨勢,或者至少沒有像其他領域那樣保持上升趨勢。

我們還看到,認為 Go 專案領導層理解他們需求的受訪者比例有了顯著的年度增長(63%)。

所有這些結果都顯示出一種與 Go 經驗增加相關的更高程度的認同模式,大約從兩年開始。換句話說,受訪者使用 Go 的時間越長,他們就越有可能同意這些陳述。

Bar chart showing agreement with statements I feel welcome in the Go community, I am confident in the Go leadership, I feel welcome to contribute, The Go project leadership understands my needs, and The process of contributing to the Go project is clear to me

我們提出了一個開放式文字問題,詢問我們可以做些什麼來使 Go 社群更受歡迎,其中最常見的建議(21%)與不同形式或改進/新增的學習資源和文件有關。

Bar chart of recommendations for improving the welcomeness of the Go community

使用 Go

構建 API/RPC 服務 (74%) 和 CLI (65%) 仍然是 Go 最常見的用途。與去年相比,我們沒有看到任何顯著變化,去年我們引入了選項順序的隨機化。(2019 年之前,列表開頭的選項被不成比例地選中。)我們還按組織規模進行了細分,發現受訪者在大型企業或小型組織中對 Go 的使用方式相似,儘管大型組織不太可能使用 Go 來返回 HTML 的 Web 服務。

Bar chart of Go use cases from 2019 to 2020 including API or RPC services, CLIs, frameworks, web services, automation, agents and daemons, data processing, GUIs, games and mobile apps

今年,我們對受訪者在家中和工作中用 Go 編寫的軟體型別有了更好的瞭解。儘管返回 HTML 的 Web 服務是第四個最常見的用例,但這主要歸因於非工作相關的使用。比返回 HTML 的 Web 服務,更多受訪者使用 Go 進行自動化/指令碼、代理和守護程序以及資料處理。最不常見的用途(桌面/GUI 應用、遊戲和移動應用)中,有更高比例是在工作之外編寫的。

Stacked bar charts of proportion of use case is at work, outside of work, or both

另一項新問題是詢問受訪者對每種用例的滿意度。CLI 的滿意度最高,85% 的受訪者表示在使用 Go 開發 CLI 時非常、中度或略微滿意。Go 的常見用途往往具有較高的滿意度分數,但滿意度和受歡迎程度並不完全對應。例如,代理和守護程序的滿意度比例排名第二,但使用量排名第六。

Bar chart of satisfaction with each use case

其他後續問題探索了不同的用例,例如,受訪者為他們的 CLI 目標平臺。考慮到 Go 開發者大量使用 Linux 和 macOS,以及高 Linux 雲使用率,Linux (93%) 和 macOS (59%) 的高代表性並不令人意外,但即使是 Windows 也有近三分之一的 CLI 開發者將其作為目標。

Bar chart of platforms being targeted for CLIs

對 Go 資料處理的進一步研究表明,Kafka 是唯一被廣泛採用的引擎,但大多數受訪者表示他們使用 Go 配合自定義資料處理引擎。

Bar chart of data processing engines used by those who use Go for data processing

我們還詢問了受訪者使用 Go 的較大領域。迄今為止最常見的領域是 Web 開發 (68%),但其他常見領域包括資料庫 (46%)、DevOps (42%)、網路程式設計 (41%) 和系統程式設計 (40%)。

Bar chart of the kind of work where Go is being used

與去年類似,我們發現 76% 的受訪者評估當前 Go 版本是否適用於生產環境,但今年我們調整了時間尺度,發現 60% 的人在釋出前或釋出後 2 個月內開始評估新版本。這凸顯了平臺即服務提供商快速支援 Go 新穩定版本的重要性。

Bar chart of how soon respondents begin evaluating a new Go release

模組

今年我們發現 Go 模組的採用率接近普遍,並且僅將模組用於包管理的受訪者比例顯著增加。96% 的受訪者表示他們將模組用於包管理,高於去年的 89%。87% 的受訪者表示他們*僅*將模組用於包管理,高於去年的 71%。與此同時,其他包管理工具的使用有所下降。

Bar chart of methods used for Go package management

與去年相比,模組的滿意度也有所提高。77% 的受訪者表示對模組非常、中度或略微滿意,而 2019 年為 68%。

Stacked bar chart of satisfaction with using modules on a 7 point scale from very dissatisfied to very satisfied

官方文件

大多數受訪者表示他們在官方文件方面遇到困難。62% 的受訪者難以找到足夠的資訊來完全實現應用程式的某個功能,超過三分之一的人在開始之前從未做過的事情時遇到困難。

Bar chart of struggles using official Go documentation

官方文件中最具挑戰性的領域是使用模組和 CLI 開發,20% 的受訪者認為模組文件幫助不大或完全無用,而 CLI 開發相關的文件則為 16%。

Stacked bar charts on helpfulness of specific areas of documentation including using modules, CLI tool development, error handling, web service development, data access, concurrency and file input/output, rated on a 5 point scale from not at all to very helpful

Go 在雲端

Go 在設計之初就考慮了現代分散式計算,我們希望繼續改進使用 Go 構建雲服務的開發者體驗。

  • 三大全球雲提供商(Amazon Web Services、Google Cloud Platform 和 Microsoft Azure)的使用率在調查受訪者中持續增長,而其他大多數提供商的使用率每年都在下降。Azure 的增長尤為顯著,從 7% 增至 12%。
  • 部署到自營或公司擁有的伺服器的本地部署繼續作為最常見的部署目標而下降。
Bar chart of cloud providers used to deploy Go programs where AWS is the most common at 44%

部署到 AWS 和 Azure 的受訪者在使用託管 Kubernetes 平臺方面有所增加,目前分別為 40% 和 54%。Azure 將 Go 程式部署到 VM 的使用者比例顯著下降,容器使用量有所增長,從 18% 增至 25%。與此同時,GCP(其託管 Kubernetes 使用率已經很高)在部署到無伺服器 Cloud Run 方面有所增長,從 10% 增至 17%。

Bar charts of proportion of services being used with each provider

總體而言,大多數受訪者對在這三大主要雲提供商上使用 Go 感到滿意,並且與去年相比,這些數字在統計上沒有變化。受訪者報告了對 AWS (82% 滿意) 和 GCP (80%) 的 Go 開發的相似滿意度。Azure 的滿意度得分較低(58% 滿意),自由文本回復通常提到需要改進 Azure 的 Go SDK 和 Go 對 Azure Functions 的支援。

Stacked bar chart of satisfaction with using Go with AWS, GCP and Azure

痛點

受訪者表示無法更多地使用 Go 的主要原因仍然是:在另一個語言的專案上工作 (54%)、在一個偏好使用另一種語言的團隊工作 (34%),以及 Go 本身缺乏關鍵功能 (26%)。

今年我們引入了一個新選項:“我已經處處使用 Go 了”,這樣受訪者就可以選擇退出那些不限制他們使用 Go 的選項。這顯著降低了所有其他選項的選擇率,但並未改變它們的相對順序。我們還引入了“Go 缺乏關鍵框架”的選項。

如果我們只看選擇不使用 Go 原因的受訪者,我們可以更好地瞭解年度趨勢。在另一種現有語言的專案上工作以及專案/團隊/領導偏好另一種語言的比例正在隨著時間的推移而下降。

Bar charts of reasons preventing respondents from using Go more

在表示 Go 缺乏他們所需語言功能的 26% 的受訪者中,88% 的人將泛型選為關鍵缺失功能。其他關鍵缺失功能包括:更好的錯誤處理 (58%)、空值安全 (44%)、函數語言程式設計功能 (42%) 和更強大/擴充套件的型別系統 (41%)。

需要明確的是,這些數字來自那些表示如果 Go 不缺少他們所需的一個或多個關鍵功能,他們就可以更多地使用 Go 的受訪者子集,而不是整個調查受訪者群體。從這個角度來看,18% 的受訪者因為缺少泛型而無法使用 Go。

Bar chart of missing critical features

受訪者報告在使用 Go 時遇到的最大挑戰仍然是 Go 缺乏泛型 (18%),而模組/包管理和學習曲線/最佳實踐/文件方面的問題各佔 13%。

Bar chart of biggest challenges respondents face when using Go

Go 社群

今年我們詢問了受訪者回答 Go 相關問題的首選 5 個資源。去年我們只詢問了前 3 個,所以結果不具有直接可比性,但 StackOverflow 仍然是最受歡迎的資源,佔 65%。閱讀原始碼 (57%) 仍然是另一個受歡迎的資源,而對 godoc.org 的依賴(39%)已顯著下降。包發現網站 pkg.go.dev 今年首次出現在列表中,是 32% 受訪者的首選資源。使用 pkg.go.dev 的受訪者更有可能認同他們能夠快速找到所需的 Go 包/庫:pkg.go.dev 使用者為 91%,其他人為 82%。

Bar chart of top 5 resources respondents use to answer Go-related questions

多年來,不參加任何 Go 相關活動的受訪者比例一直在上升。由於 COVID-19,今年我們修改了關於 Go 活動的問題,發現超過四分之一的受訪者比往年花更多時間在線上 Go 頻道,14% 的人參加了虛擬 Go 會議,是去年的一倍。參加虛擬活動的受訪者中有 64% 表示這是他們第一次參加虛擬活動。

Bar chart of respondents participation in online channels and events

我們發現 12% 的受訪者認同傳統意義上的代表性不足的群體(例如,種族、性別認同等),與 2019 年相同,2% 的人認同為女性,低於 2019 年(3%)。認同代表性不足群體的受訪者與“我覺得在 Go 社群中很受歡迎”這一陳述的“不同意”比例更高(10% 對比 4%),而不是不認同代表性不足的群體的受訪者。這些問題使我們能夠衡量社群中的多樣性,並突出外展和增長的機會。

Bar chart of underrepresented groups Bar chart of those who identify as women Bar chart of welcomeness of underrepresented groups

今年我們增加了一個關於輔助技術使用情況的額外問題,發現 8% 的受訪者正在使用某種形式的輔助技術。最常用的輔助技術是對比度或顏色設定(2%)。這提醒我們有使用者有可訪問性需求,並有助於指導 Go 團隊管理的網站的設計決策。

Bar chart of assistive technology usage

Go 團隊重視多樣性和包容性,不僅僅是因為這是正確的事情,而是因為多元化的聲音可以照亮我們的盲點,並最終使所有使用者受益。我們收集敏感資訊(包括性別和代表性不足的群體)的方式已根據資料隱私法規進行了更改,我們希望將來能使這些問題(特別是性別多樣性方面)更具包容性。

結論

感謝您加入我們一起回顧 2020 年開發者調查結果!瞭解開發者的經驗和挑戰有助於我們衡量進展並指導 Go 的未來。再次感謝所有為本次調查做出貢獻的人——沒有你們,我們不可能做到。希望明年再見!

下一篇文章:模糊測試已準備好進入 Beta 版
上一篇文章:Context 和 Struct
部落格索引