Go 部落格
Go 開發人員調查 2020 成果
感謝您提供寶貴的意見!
2020 年,我們再次收到熱烈迴響,累計 9,648 筆回覆,約為 2019 年的回覆數。我們十分感謝您花費時間為社群提供使用 Go 的寶貴經驗見解!
全新模組化調查設計
您可能會發現有些問題的樣本數(「n =」)小於其他問題。這是因為有些問題是對所有人進行提問,而有些問題則僅對部分隨機抽樣的受訪者進行提問。
重點
- 76% 的受訪者表示 在工作場所使用 Go,66% 的受訪者表示 Go 對公司成功至關重要,顯示 Go 的使用範圍正於職場合企業中持續擴展。
- 整體滿意度很高,92% 的受訪者對於使用 Go 感到滿意。
- 大多數 受訪者表示在 3 個月內能於 Go 中發揮生產力,其中 81% 的受訪者表示在 Go 中感到非常或極度有生產力。
- 受訪者表示 迅速升級到最新 Go 版本,76% 的受訪者於前 5 個月内升級。
- 使用 pkg.go.dev 的受訪者在尋找 Go 套件時較為成功 (91%),高於非使用者 (82%)。
- Go 模組的採用率接近普遍,滿意度到達 77%,但受訪者也強調有改善文件需求。
- Go 持續被大量用於 API、CLI、網路、DevOps 和資料處理。
- 未獲充分代表的群體傾向於在社群中感覺較不受歡迎。
我們從誰那裡獲得回饋?
人口統計問題有助我們區分哪些年復一年的差異可能是來自於,回應調查的人有所不同,而不是情緒或行為改變的結果。因為我們的人口統計數據與去年類似,我們可以相當確定其他年復一年的改變,並非主要因為人口統計變遷。
例如,組織規模、開發人員經驗與產業的分布,在 2019 年至 2020 年間幾乎維持相同。
幾乎有一半 (48%) 的受訪者,使用 Go 的時間不到兩年。在 2020 年,我們獲得的回應比較少,來自於使用 Go 不到一年的人。
多數人表示他們在工作中使用 Go (76%),以及在工作以外使用 (62%)。在工作中使用 Go 的受訪者比例逐年趨增。
今年我們新增了一個新的問題,關於主要的工作責任。我們發現 70% 的受訪者主要責任是開發軟體和應用程式,但少數 (10%) 則是在設計 IT 系統和架構。
與往年一樣,我們發現大多數受訪者並非 Go 開源專案的頻繁貢獻者,75% 的人表示他們「不頻繁」或「從不」貢獻給專案。
開發人員工具和實務
和往年一樣,絕大多數的受訪者表示他們使用 Go 於 Linux (63%) 和 macOS (55%) 系統上工作。在 Linux 上主要進行開發的受訪者比例,看起來隨著時間推移而稍微下降。
第一次,編輯器偏好似乎趨於穩定化:VS Code 持續是最受歡迎的編輯器 (41%),GoLand 穩居第二 (35%)。這些編輯器加起來佔所有回答的 76%,而其他偏好並不像往年那樣持續下降。
今年我們請受訪者優先考慮編輯器的改進事項,以虛擬貨幣「GopherCoin」(虛構貨幣)為假設,表示他們願意花費多少。程式碼自動完成收到每個受訪者最高的平均 GopherCoin 數量。一半的受訪者給予前 4 項功能(程式碼自動完成、瀏覽程式碼、編輯器效能和重構),10 個以上的代幣。
多數受訪者 (63%) 花費 10-30% 的時間在重構,這表示這是一項常見任務,我們想要找出改善它的方法。這也解釋了為什麼重構支援是最受投資的編輯器改進之一。
去年我們詢問具體的開發技術,發現將近 90% 的受訪者使用文字記錄進行偵錯,所以今年我們增加了追蹤問題找出原因。結果顯示,有 43% 的人使用文字記錄是因為讓他們可以跨語言使用相同的偵錯策略;有 42% 的人偏好使用文字記錄,而非其他偵錯技術。但是,有 27% 的人不知道如何開始使用 Go 的偵錯工具,而 24% 的人從未使用過 Go 的偵錯工具,因此,我們有機會在探索性、可用性和文件方面改進偵錯器工具。此外,由於四分之一的受訪者從未使用過偵錯工具,因此,痛點可能低報。
對 Go 的看法
今年我們首次詢問整體滿意度。92% 的受訪者表示,過去一年來使用 Go 非常滿意或有些滿意。
這是我們詢問「您會推薦…」淨推薦值(NPS) 問題的第三年。今年,我們的 NPS 結果為 61 (68% 的「推薦者」減去 6% 的「批評者」),和 2019 年及 2018 年的統計結果無變化。
與前幾年類似,91% 的受訪者表示,對於下一個新專案,他們偏好使用 Go。89% 的人表示 Go 對他們的團隊來說很好用。今年,我們看到同意 Go 對其公司成功至關重要的受訪者比例從 2019 年的 59% 增加到 2020 年的 66%。員工數 5,000 人或以上的組織中的受訪者較不同意 (63%) ,而較小組織中的受訪者則較同意 (73%)。
和去年一樣,我們詢問受訪者根據滿意度和重要性評分 Go 開發的特定領域。使用雲端服務、偵錯和使用模組 (去年強調為改進機會的領域) 的滿意度有所提升,而大多數重要性分數則大致相同。我們也新增了幾個新主題:API 和 Web 框架。我們發現 Web 框架滿意度低於其他領域 (64%)。對於大部分現有使用者來說,它不是那麼重要的關鍵功能 (僅 28% 的受訪者表示非常重要或至關重要),但它可能是潛在 Go 開發人員遺失的關鍵功能。
81% 的受訪者表示,他們使用 Go 時感到非常或極具生產力。較大型組織中的受訪者比較小組織中的受訪者更有可能感到極具生產力。
anecdotal 我們聽說使用 Go 可以快速變得有生產力。我們詢問自認至少有些生產力的受訪者,他們花了多久時間才變得有生產力。93% 受訪者表示不到一年,而大部分受訪者表示在 3 個月內變得有生產力。
雖然與去年相差無幾,但同意「我在 Go 社群中備受歡迎」這項說法的受訪者百分比似乎隨著時間推移呈現下降趨勢,或至少沒有像其他領域一樣維持相同的上升趨勢。
我們也看到,認同 Go 的專案領導人能理解自身需求的受訪者比例,較去年大幅提升(63%)。
所有這些結果都顯示出,同意率較高的模式與累積的 Go 經驗有關,大約從兩年左右開始。換句話說,受訪者使用 Go 的時間越長,越有可能同意這些說法。
我們開放提問關於我們可以如何讓 Go 社群更友善,而最常見的建議(21%)與各種形式的學習資源和文件改進/新增有關。
使用 Go
建立 API/RPC 服務(74%)和 CLI(65%)仍然是 Go 最常見的用途。與去年我們在選項排序中加入隨機化後,我們沒有看到任何重大的變化。(2019 年之前,清單開頭的選項被選擇的比例不成比例。)我們也按組織規模區分,發現受訪者在大型企業或小型組織中使用 Go 的方式類似,不過大型組織較少使用 Go 來提供傳回 HTML 的網路服務。
今年我們更了解受訪者在居家與工作時使用 Go 編寫哪些類型的軟體。儘管傳回 HTML 的網路服務是第四大最常見的用例,但這是因為與工作無關的用途。相較於傳回 HTML 的網路服務,更多受訪者將 Go 用於自動化/腳本、代理程式和守護程式,以及資料處理上。較不常見的用途(桌面/GUI 應用程式、遊戲和行動應用程式)有較高比例在工作之外編寫。
另一個新問題是詢問受訪者對每個用例感到滿意程度。CLI 的滿意度最高,85% 的受訪者表示他們對使用 Go 來執行 CLI 感到非常滿意、適度滿意或略感滿意。Go 的常見用途傾向於獲得較高的滿意度分數,但滿意度和受歡迎度並非完全一致。例如,代理程式和守護程式的滿意度比例排名第二,但在用途上排名第六。
另外的後續問題探討了不同的使用案例,例如受訪者以其 CLIs 鎖定哪些平台。在開發人員經常使用 Linux 和 macOS,且 Linux 雲端使用率很高的情況下,看到 Linux(93%)和 macOS(59%)的高度代表性並不出人意料,但甚至連 Windows 也成為將近三分之一 CLI 開發人員的目標。
更仔細檢視用於資料處理的 Go,顯示 Kafka 是廣泛採用的唯一引擎,但大多數受訪者表示他們使用 Go 與自訂資料處理引擎。
我們還詢問受訪者使用 Go 的較大領域。迄今為止最常見的領域是網路開發 (68%),但其他常見領域包括資料庫 (46%)、DevOps (42%)、網路程式設計 (41%) 和系統程式設計 (40%)。
與去年類似,我們發現 76% 的受訪者評估目前可供生產使用的 Go 版本,但今年我們調整了時間範圍,發現 60% 的受訪者在版本發佈前或發佈後 2 個月內會開始評估新版本。這突顯出平台即服務供應商快速支援 Go 新的穩定版本的重要性。
模組
今年我們發現 Go 模組得到了幾乎所有受訪者的採用,而僅使用模組進行套件管理的受訪者比例也有顯著增加。96% 的受訪者表示他們使用模組進行套件管理,這個數字比去年的 89% 有所提高。87% 的受訪者表示他們僅使用模組進行套件管理,這個數字比去年的 71% 有所提高。同時,其他套件管理工具的使用量有所下降。
與去年相比,對模組的滿意度也有所提高。77% 的受訪者表示他們對模組非常滿意、相當滿意或略微滿意,而 2019 年為 68%。
官方文件
大多數受訪者表示他們對官方文件感到不滿。62% 的受訪者難以找到足夠的資訊來完全實作其應用程式的功能,而超過三分之一的受訪者難以開始進行他們之前未曾做過的事。
官方文件中問題最嚴重的領域在於使用模組和 CLI 開發,有 20% 的受訪者發現模組文件稍微沒有幫助或完全沒有幫助,而 CLI 開發相關文件則為 16%。
雲端中的 Go
Go 是考量現代分散式運算而設計的,而且我們希望繼續改善開發人員使用 Go 建置雲端服務的體驗。
- 全球前三大雲端供應商(亞馬遜網路服務、Google Cloud Platform 和 Microsoft Azure)持續增加調查受訪者的使用率,而大多數其他供應商每年受到的受訪者比例都較小。特別是 Azure 從 7% 大幅提升至 12%。
- 對自有或公司擁有的伺服器的內部部署持續下降,不再是最常見的部署目標。
在 AWS 和 Azure 部署的受訪者中,看到了透過受管理的 Kubernetes 平臺來部署的比例有所上升,目前分別為 40% 和 54%。Azure 的用戶使用 VM 部署 Go 程式比例降低,而使用容器的比例則由 18% 成長至 25%。與此同時,GCP(原本就有高比例的受訪者回報受管理的 Kubernetes 使用率)看到了無伺服器程式碼運作部署的比例由 10% 成長至 17%。
總體而言,大部分受訪者對於在三家主要的雲端供應商中使用 Go 都很滿意,而且數字與去年相比沒有明顯變動。受訪者回報了在 AWS(82% 滿意)和 GCP(80%)中使用 Go 的類似滿足程度。Azure 的滿意度評分較低(58% 滿意),而自由格式的回報則常常提到需要改善 Azure 的 Go SDK 及 Azure 函式的 Go 支援。
痛點
受訪者表示無法進一步使用 Go 的首要原因依然是在其他語言的專案上工作(54%)、在偏好使用其他語言的團隊中工作(34%),以及 Go 中缺乏重要的功能(26%)。
今年我們新增了一個新的選項,「我已經在我想要的地方使用 Go」,以供受訪者選擇不列入不阻止他們使用 Go 的選項。這大幅降低了其他選項被選到的次數,但他們的相對排名沒有變動。我們也新增一個選項,「Go 缺乏重要的框架」。
如果我們只看選擇不使用 Go 原因的受訪者,我們可以更了解年成長趨勢。在其他語言的現有專案上工作,以及專案/團隊/負責人的語言偏好持續遞減。
在 26% 表示 Go 缺乏他們需要的語言功能的受訪者中,88% 選擇泛型作為重要的遺失功能。其他重要的遺失功能包括更好的錯誤處理(58%)、空值安全性(44%)、函式式程式設計功能(42%)以及更強健/擴充的型別系統(41%)。
必須說明,這些數字來自受訪者中的一組子群組,他們表示如果 Go 具備一個或更多重要的遺失功能,他們就能進一步使用 Go,並非所有的受訪者。從這個觀點來看,18% 的受訪者因為缺乏泛型而無法使用 Go。
受訪者在使用 Go 時回報的最主要挑戰再次是 Go 缺乏泛型(18%),而模組/套件管理和學習曲線/最佳實務/文件的問題都佔了 13%。
Go 社群
今年,我們請受訪者列出他們解答 Go 相關問題的五大資源。去年我們僅詢問前三名,因此結果無法直接比較,不過在 65% 的受訪者中,StackOverflow 仍然是最受歡迎的資源。閱讀原始碼(57%)仍然是另一個受歡迎的資源,而依賴 godoc.org(39%)卻大幅下降。軟體包探索網站 pkg.go.dev 今年是首次上榜,成為 32% 受訪者的首選資源。使用 pkg.go.dev 的受訪者更有可能同意,他們可以快速找到他們需要的 Go 軟體包/函式庫: pkg.go.dev 使用者為 91%,其他所有人為 82%。
多年來,沒有參加任何與 Go 相關活動的受訪者比例一直呈上升趨勢。由於新冠肺炎 (COVID-19) 疫情,我們今年修改了有關 Go 活動的問題,並發現超過四分之一的受訪者在網路上花費的時間比前幾年更多,而 14% 的受訪者參加了虛擬 Go 聚會,是去年參加的人數的兩倍。在參加虛擬活動的人中,64% 的受訪者表示這是他們第一次參加虛擬活動。
我們發現,有 12% 的受訪者認同自己是傳統上代表性不足的族群(例如:種族、性別認同,等等),與 2019 年相同,而 2% 的受訪者認同自己是女性,比 2019 年(3%)來的少。與代表性不足的族群認同的受訪者,比沒有與代表性不足的族群認同的受訪者,更傾向對「我在 Go 社群中感到受歡迎」(10% 對 4%)的聲明表示不同意。這些問題讓我們能夠衡量社群的多樣性,並找出宣導與成長的機會。
今年我們新增了一個關於輔助性技術使用率的問題,結果發現 8% 的受訪者正在使用某種形式的輔助性技術。使用率最高的輔助性技術是對比或色彩設定(2%)。這是一個絕佳的提醒,讓我們注意到有使用者有協助工具上的需求,並協助驅動 Go 團隊管理的網站中的一些設計決策。
Go 團隊重視多樣性和包容性,不只是因為這是正確的事,還因為多元的聲音可以照亮我們的盲點,並最終使所有使用者受惠。我們詢問敏感資訊(包括性別和傳統上代表性不足的族群)的方式,已根據資料隱私法規有所調整,我們希望未來能讓這些問題(特別是關於性別多樣性的問題)更具包容性。
結論
感謝您參與 2020 年開發人員調查結果檢視!了解開發人員的經驗及挑戰有助於我們衡量進度,並指引 Go 的未來。再次感謝為這份調查做出貢獻的每個人,我們無法在沒有你們的情況下完成這項工作。我們希望明年再見到您!
下一篇文章:模糊測試已進入貝塔版
上一篇文章:上下文與結構體
部落格索引