發表日期 5/14/2022, 10:23:54 AM
作者 | Alice Merrick
譯者 | 平川
策劃 | Tina
本文最初發布於 Go 開發博客。
1
本文重點
這次 Go 開發者調查,共計收到迴復 11840 份。大多數迴復與前幾年一緻。例如,92% 的受訪者對 Go 的滿意度仍然很高,75% 的受訪者在工作中使用 Go。
今年,我們隨機抽取瞭一些使用 Go VS Code 插件的參與者,這使得調查對象發生瞭一些變化。
缺少關鍵的庫、語言特性和基礎設施是使用 Go 語言最常見的障礙(注意:這個調查是在 Go 1.18 發布泛型之前進行的,泛型是一直以來報告最多的缺失特性)。
受訪者希望優先改進調試和依賴關係管理。
使用模塊時最大的挑戰是版本控製、使用私有庫和多模塊工作流(注意:本次調查是在 Go 1.18 發布之前進行的,該版本引入瞭解決這些問題的工作空間)。
81% 的受訪者對 Go 項目的長期發展方嚮有信心。
2
收到瞭哪些人的反饋?
調查的人口統計學特徵每年都相當穩定(見 2020 年的結果)。與往年一樣,Go 主要用於科技行業。70% 的受訪者是軟件開發人員,少數是 IT 或 DevOps 人員,76% 的受訪者錶示他們在工作中使用 Go 編程。
2021 年一些新的統計學特徵:
大多數受訪者將他們的組織描述為企業(enterprise )或中小型企業,約四分之一的人將他們的組織描述為初創企業。谘詢機構和公共機構則少得多。
絕大多數受訪者在少於 10 人的團隊中工作。
超過一半(55%)的受訪者每天在工作中使用 Go。受訪者較少在工作之外使用 Go.
性彆認同
我們在調查中加入瞭性彆認同,因為那可以讓我們知道結果代錶誰,並增加一個衡量社區包容性的維度。Go 團隊很重視多樣性和包容性,不僅因為這是正確的事情,還因為多樣化的聲音有助於我們做齣更好的決策。今年,我們重新錶述瞭性彆認同問題,使其更有包容性。女性認同比例與前些年大緻相同(2%)。在隨機抽樣組中也是如此,錶明這不僅僅是由於抽樣。
輔助技術
今年,我們再次發現,約 8% 的受訪者正在使用某種形式的輔助技術。大多數是為瞭在 Go 相關的網站或其代碼編輯器上獲得對比度更高的主題, 並增加字體大小;我們計劃在今年晚些時候根據網站反饋采取行動。我們在為 Go 生態係統做貢獻時應該牢記這些可訪問性需求。
3
進一步瞭解 Go 采用方麵的挑戰
今年,針對一些沒有采用 Go 的實際案例,為瞭瞭解原因,我們修改瞭問題。首先,我們詢問受訪者去年是否對使用 Go 之外的其他語言進行瞭評估。44% 的受訪者錶示,他們評估過切換到 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 的主要原因是 Go 缺少庫和基礎設施支持,而 Python 龐大的包生態係統可能會增加切換到 Go 的難度。類似地,使用 Java 來替代 Go 的最常見的原因是 Go 缺少一些特性,而 1.18 版本中引入的泛型可能會緩解這種情況。
4
Go 的使用滿意度和相關工作優先級
讓我們看看 Go 做得好的地方和可以改進的地方。
與去年一樣,92% 的受訪者錶示他們在過去的一年裏對 Go 非常滿意或有些滿意。
社區態度的逐年趨勢齣現瞭微小的波動。那些使用 Go 不到 3 個月的人往往不太同意這些說法。越來越多的受訪者發現,Go 對他們公司的成功至關重要。
相關工作優先級
過去幾年,我們要求受訪者對特定領域的滿意度以及這些領域對他們的重要性進行評分;我們使用這些信息來識彆對受訪者來說很重要但他們不滿意的領域。然而,這些領域中的大多數在重要性和滿意度方麵隻顯示齣微小的差異。
今年,我們提齣瞭一個新問題,探索以其他方式對具體領域的工作進行優先級排序。“假設你有 10 個 GopherCoin 用來從以下方麵改進 Go。你會怎麼分配你的幣?”得幣最多的兩個領域是依賴管理(使用模塊)和 Bug 診斷。2022 年,我們將在這兩個領域投入資源。
模塊使用方麵的挑戰
在與模塊相關的挑戰中,最常見的是跨多個模塊工作(19% 的受訪者),其次是關於版本控製(包括對提交到穩定的 v1 API 感到不安)。關於版本控製,9% 的迴復討論瞭版本管理或更新依賴。排名前 5 的挑戰還有私有庫(特彆是使用 GitLab 認證)、記住不同的 go mod 命令以及理解它們的錯誤信息。
5
Go 語言學習
今年,我們采用瞭一個新的結構來探索不同經驗層次的 Go 開發人員的相對生産力。絕大多數受訪者(88%)認可他們經常能達到高水平的生産力,85% 的人認可他們在用 Go 編碼時經常能達到“心流狀態”。隨著 Go 語言編程經驗的增加,認可的比例也會增加。
我們應該從哪個方麵改進最佳實踐文檔?
一半的受訪者希望在性能優化和項目目錄結構方麵獲得更多有關最佳實踐的指導。不齣所料,盡管兩組排名靠前的領域一緻,但新手(使用 Go 不到一年)比經驗豐富的老手需要的指導更多。值得注意的是,與經驗更為豐富的老手相比,新手需要更多的並發指導。
開發人員如何學習一門新語言?
大約一半的受訪者在工作中學習新語言,但幾乎同樣多的人(45%)在學校或工作之外學習。迴復最多的學習方式是(90%)獨自學習。在那些迴復說在工作中學習的人中(可能有機會參與團體學習),84% 的人是獨自學習,而不是參與團體學習。
許多頂級資源都強調瞭良好文檔的重要性,但實時指導對語言學習來說也特彆有用。
6
開發工具和實踐
與前幾年一樣,絕大多數受訪者錶示它們是在 Linux(63%)和 macOS(55%)係統上使用 Go。隨著時間的推移,主要在 Linux 上開發的受訪者比例似乎有輕微下降的趨勢。
目標平台
超過 90% 的受訪者以 Linux 為目標平台。盡管在 macOS 上開發的受訪者比 Windows 上的多,但他們更多的是部署到 Windows,而不是 macOS。
Fuzzing 測試
大多數受訪者不熟悉 Fuzzing,或者認為自己還是個 Fuzzing 新手。基於這一發現,我們計劃:(1)確保 Go Fuzzing 的文檔清楚闡釋瞭相關概念及具體細節;(2)設計可執行的輸齣和錯誤信息,幫助剛接觸 Fuzzing 的開發人員成功應用。
雲計算
Go 是在現代分布式計算的基礎上設計齣來的,我們希望繼續改善使用 Go 構建雲服務的開發體驗。今年,在全球三大雲服務提供商(亞馬遜雲科技、榖歌雲平台和微軟 Azure)部署 Go 程序的受訪者比例保持不變,而在本地或公司自有服務器上部署的比例繼續下降。
在部署到 AWS 的受訪者中,部署到托管 Kubernetes 平台的人數有所增加,在目前嚮三大雲提供商部署的受訪者中占 35%。在所有這些雲提供商那裏,在虛擬機上部署 Go 程序的用戶比例都有所下降。
7
今年有哪些變化?
去年,我們引入瞭一個模塊化調查設計,以便可以在不延長調查的情況下問更多的問題。今年,我們沿用瞭模塊化設計,不過有些問題去掉瞭,也增加或修改瞭一些問題。沒有受訪者看到調查中的所有問題。此外,有些問題的樣本量可能要小很多,因為它們是根據前一個問題有選擇性地提齣的。
在今年的調查中,最大的變化是我們招募參與者的方式。前幾年,我們通過 Go 博客宣布瞭這項調查,並在 Twitter、Reddit 或 Hacker News 等各種社交渠道上發布。今年,除瞭傳統的渠道之外,我們還使用 VS Code Go 插件隨機選擇用戶,嚮他們顯示一條提示信息,詢問他們是否願意參與調查。這形成瞭一個隨機樣本,我們用它與來自傳統渠道的自我選擇的受訪者進行對比,並幫助識彆自我選擇偏差的潛在影響。
將近三分之一的受訪者是通過這種方式獲得的,他們有可能對我們今年看到的迴復産生重大的影響。我們看到,這兩組人之間的一些主要區彆是:
Go 開發人員增加
在隨機抽取的樣本中,新手(使用 Go 不到一年的人)比例更高。這可能是因為新手參與 Go 生態係統或社交渠道還比較少,所以他們更有可能在 IDE 中看到調查信息,而不是通過其他途徑。不管什麼原因,能聽到更多 Go 界人士的意見是件好事。
VS Code 用戶增加
一點也不奇怪,從 VS Code 插件獲得信息並參與調查的受訪者中,91% 的人喜歡使用 VS Code 進行 Go 編程。因此我們看到,在編輯器偏好方麵,VS Code 占比要高得多。排除隨機樣本後,結果與去年就沒有統計學上的差異瞭,所以我們知道,這是我們樣本變化的結果,而不是整體偏好。同樣,VS Code 用戶也比其他受訪者更傾嚮於在 Windows 上開發,所以我們看到,今年對 Windows 的偏好略有增加。我們還看到,在 VS Code 的使用人群中,某些開發技術的使用也有輕微的變化。
參與途徑不同
隨機抽取的受訪者不太可能將 Go 博客等社交渠道作為迴答相關問題的首要途徑,因此,他們也就不太可能在這些渠道上看到調查信息。
8
小結
感謝你和我們一起迴顧 2021 年 Go 開發者調查結果。重申一下本次調查的一些關鍵收獲:
大部分指標同比保持穩定,大部分變化是因為樣本的變化。
對 Go 的滿意度仍然很高!
四分之三的受訪者在工作中使用 Go,許多人每天都在使用 Go,所以幫你完成工作是我們的首要任務。
我們將優先考慮改進調試和依賴管理工作流。
我們將繼續努力,使 Go 成為適閤各類 Go 開發人員的包容性社區。
瞭解開發者的體驗和挑戰有助於我們評估自己的進展,並指導 Go 的未來發展。再次感謝所有為本次調查做齣貢獻的人――沒有你們,我們不可能做到這一點。希望明年還可以見到你!
查看英文原文:
https://go.dev/blog/survey2021-results