Go 部落格

Go 開發者調查 2020 年結果

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 平均數量最高。一半的受訪者為前 4 項功能(程式碼補全、程式碼導航、編輯器效能和重構)分配了 10 個或更多的 GopherCoins。

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 目標平臺。考慮到開發者對 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 個月內開始評估新版本。這突顯了平臺即服務(PaaS)提供商快速支援 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% 的受訪者認為模組文件稍微或完全沒有幫助,16% 的受訪者認為 CLI 開發相關文件稍微或完全沒有幫助。

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 構建雲服務的開發者體驗。

  • 全球三大雲服務提供商(亞馬遜雲服務 AWS、谷歌雲平臺 GCP 和微軟 Azure)在受訪者中的使用量持續增長,而大多數其他提供商每年都被較小比例的受訪者使用。尤其是 Azure,使用量從 7% 顯著增加到 12%。
  • 將應用程式部署到自有機房或公司自有伺服器的本地部署(On-prem)作為最常見的部署目標的比例持續下降。
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 程式到虛擬機器的比例顯著下降,容器使用量從 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 以及對 Azure Functions 的 Go 支援。

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% 選擇泛型(generics)作為關鍵缺失功能。其他關鍵缺失功能包括更好的錯誤處理(58%)、空安全(null safety)(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 相關問題的五大資源。去年我們只詢問了三大資源,因此結果不能直接比較,但 Stack Overflow 仍然是最受歡迎的資源,佔 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 線下活動(virtual Go meetup),是去年的兩倍。參加線上活動的受訪者中,64% 表示這是他們首次參加線上活動。

Bar chart of respondents participation in online channels and events

我們發現 12% 的受訪者屬於傳統上的代表性不足群體(例如種族、性別認同等),與 2019 年持平,2% 的受訪者為女性,低於 2019 年(3%)。認同為代表性不足群體的受訪者對“我在 Go 社群中感到受歡迎”這一說法的不同意率(10% vs. 4%)高於不認同為代表性不足群體的受訪者。這些問題使我們能夠衡量社群的多樣性,並突出外展和增長的機會。

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

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

Bar chart of assistive technology usage

Go 團隊重視多樣性和包容性,這不僅僅是正確的事情,更是因為不同的聲音能夠照亮我們的盲點,最終造福所有使用者。我們詢問敏感資訊(包括性別和傳統代表性不足群體)的方式已根據資料隱私法規進行了調整,我們希望未來能使這些問題,尤其是在性別多樣性方面,更具包容性。

結論

感謝您與我們一起回顧了 2020 年開發者調查的結果!瞭解開發者的經驗和挑戰有助於我們衡量進度並指導 Go 的未來。再次感謝所有為本次調查做出貢獻的人——沒有你們,這一切不可能實現。我們期待明年再見!

下一篇文章:模糊測試已進入 Beta 階段
上一篇文章:Contexts 和結構體
部落格索引