Go 部落格

Go 2018 年度調查結果

Todd Kulesza, Steve Francia
2019 年 3 月 28 日

謝謝

本文總結了我們 2018 年使用者調查的結果,並與我們之前的 2016 年和 2017 年調查結果進行了比較。

今年我們有來自 103 個不同國家/地區的 5,883 名調查受訪者。我們非常感謝每一位透過本次調查提供反饋的人,以幫助塑造 Go 的未來。謝謝!

調查結果摘要

  • 首次,一半的調查受訪者現在將 Go 作為日常工作的一部分。今年,在作為工作內容開發 Go 和在工作職責之外使用 Go 的受訪者人數也有顯著增加。
  • 最常見的 Go 用途仍然是 API/RPC 服務和 CLI 工具。自動化任務雖然不如 CLI 工具和 API 服務常見,但卻是 Go 的一個快速增長的領域。
  • Web 開發仍然是調查受訪者工作中最常見的領域,但 DevOps 的同比增長率最高,已成為第二常見的領域。
  • 絕大多數調查受訪者表示 Go 是他們最喜歡的程式語言,儘管他們通常感覺自己掌握 Go 的熟練程度不如至少一種其他語言。
  • VS Code 和 GoLand 的流行度激增,現在已成為受訪者中最受歡迎的程式碼編輯器。
  • Go 的可移植性體現在,許多 Go 開發者使用多種主要作業系統進行開發。Linux 和 macOS 特別受歡迎,絕大多數調查受訪者使用其中一種或兩種作業系統來編寫 Go 程式碼。
  • 調查受訪者似乎正在遠離本地部署 Go,轉向容器和無伺服器雲部署。
  • 大多數受訪者表示他們在 Go 社群中感到受歡迎,而大多數關於改進 Go 社群的想法都側重於改善新手的體驗

請繼續閱讀以瞭解所有詳細資訊。

程式設計背景

今年的結果顯示,作為工作內容付費編寫 Go 的受訪者人數顯著增加(68% → 72%),這延續了自 2016 年首次調查以來的逐年增長趨勢。我們還看到在工作之外使用 Go 進行程式設計的受訪者人數有所增加(64% → 70%)。首次,將 Go 作為日常工作一部分的受訪者人數達到了 50%(高於 2016 年的 44%)。這些發現表明,公司正在以穩定的步伐繼續擁抱 Go 進行專業軟體開發,並且 Go 在開發者中的總體受歡迎程度仍然很高。

為了更好地瞭解開發者使用 Go 的情況,我們將回復分為三類:

  1. 在工作內外都使用 Go 的人,
  2. 在工作中使用 Go 但不在工作外使用的人,以及 3) 僅在工作職責之外編寫 Go 的人。近一半(46%)的受訪者在專業上和業餘時間都編寫 Go 程式碼(比 2017 年增加了 10 個百分點),而其餘受訪者在僅在工作中使用 Go 或僅在工作外使用 Go 之間大致平分。大量受訪者同時在工作中使用 Go 並在工作外選擇使用它,這表明該語言吸引了那些不將軟體工程視為日間工作的開發者:他們還選擇在工作職責之外進行程式碼實踐,並且(正如 85% 的受訪者表示他們更喜歡 Go 進行下一個專案一樣,參見下方“對 Go 的態度”部分)Go 是他們更喜歡用於這些非工作相關專案的首選語言。

當被問及使用 Go 的時長時,參與者的回答隨著時間的推移呈強勁上升趨勢,每年在 2-4 年和 4+ 年這兩個年齡段的回覆百分比都更高。這對於一門較新的程式語言來說是意料之中的,我們很高興看到剛開始學習 Go 的受訪者比例下降速度慢於使用 Go 2 年以上的受訪者比例增加速度,這表明開發者在初步學習語言後並沒有退出生態系統。

與往年一樣,Go 在受訪者最喜歡的語言和他們擁有專業知識的語言中名列前茅。大多數受訪者(69%)聲稱在 5 種不同語言方面擁有專業知識,這表明他們對 Go 的態度受到其他程式設計棧經驗的影響。下面的圖表按將每種語言列為最喜歡/最理解的受訪者數量排序(最深的藍色條),這突顯了三個有趣的方面:

  • 雖然約有 ⅓ 的受訪者認為 Go 是他們擁有最多專業知識的語言,但這個數量的兩倍的受訪者認為它是他們最喜歡的程式語言。因此,儘管許多受訪者覺得他們掌握 Go 的熟練程度不如某些其他語言,但他們仍然經常更喜歡使用 Go 進行開發。
  • 很少有調查受訪者將 Rust 列為他們擁有專業知識的語言(6.8%),但有 19% 的受訪者將其列為最喜歡的語言,這表明該受眾對 Rust 的興趣很高。
  • 只有三種語言的受訪者比例,他們說他們喜歡這門語言的比例高於他們說他們擁有該語言專業知識的比例:Rust(偏好:專業知識比例為 2.41:1)、Kotlin(1.95:1)和 Go(1.02:1)。偏好高於專業知識意味著對一門語言感興趣,但直接經驗很少;而專業知識低於偏好的數字則表明熟練使用存在障礙。接近 1.0 的比率表明大多數開發者能夠有效地並且愉快地使用給定語言。這些資料得到了 Stack Overflow 2018 年度開發者調查的證實,該調查也發現 Rust、Kotlin 和 Go 是最受歡迎的程式語言。

資料解讀:參與者可以列出他們最喜歡的 5 種語言。顏色編碼從最頂級的排名開始為深藍色,並隨著每個後續排名的升高而變淺。這些圖表按將每種語言列為他們首選的參與者百分比排序。

開發領域

調查受訪者報告了中位數三個不同領域的參與情況,絕大多數(72%)在 2-5 個不同領域工作。Web 開發是最普遍的,佔 65%,並且它作為調查受訪者工作的主要領域的主導地位有所增強(比去年增加了 61%);自 2016 年以來,Web 開發一直是 Go 開發最常見的領域。今年 DevOps 明顯增加,從 36% 增加到 41% 的受訪者,取代了系統程式設計成為第二名。我們沒有發現任何在 2018 年使用量低於 2017 年的領域,這表明受訪者正在採用 Go 進行更廣泛的專案,而不是從一個領域轉移到另一個領域。

自 2016 年以來,Go 的前兩大用途一直是編寫 API/RPC 服務和開發 CLI 應用程式。雖然 CLI 使用量在三年內一直保持穩定在 63%,但 API/RPC 使用量已從 2016 年的 60% 增加到 2017 年的 65%,再到今天的 73%。這些領域發揮了 Go 的核心優勢,並且是雲原生軟體開發的核心,因此我們預計它們將繼續成為 Go 開發者的主要場景之一。直接返回 HTML 的 Web 服務受訪者百分比穩步下降,而 API/RPC 使用量增加,這表明一些 Web 服務已遷移到 API/RPC 模型。另一項逐年趨勢表明,自動化也是 Go 的一個增長領域,目前有 38% 的受訪者使用 Go 進行指令碼和自動化任務(高於 2016 年的 31%)。

為了更好地瞭解開發者使用 Go 的背景,我們增加了一個關於 Go 在不同行業採用情況的問題。對於一門相對較新的語言來說,這或許並不令人意外,超過一半的調查受訪者在網際網路/Web 服務軟體類別(即科技公司)的公司工作。另外只有金融、銀行或保險媒體、廣告、出版或娛樂這幾個行業的回應率超過 3%。 (在下方的圖表中,我們將響應率低於 3% 的所有類別都歸入了“其他”類別。)我們將繼續跟蹤 Go 在不同行業的採用情況,以更好地瞭解科技公司以外的開發者需求。

對 Go 的態度

今年我們增加了一個問題:“您有多大可能向朋友或同事推薦 Go?”,以計算我們的 淨推薦值 (NPS)。該分數試圖衡量一個產品有多少“推薦者”多於“批評者”,範圍從 -100 到 100;正值表明大多數人可能推薦使用該產品,而負值表明大多數人可能反對使用它。我們 2018 年的分數為 61(68% 推薦者 - 7% 批評者),並將作為基線,幫助我們隨著時間推移衡量 Go 生態系統的社群情緒。

除了 NPS,我們還詢問了幾個關於開發者對 Go 滿意度的問題。總體而言,調查受訪者表示滿意度很高,與往年一致。大多數人表示他們對 Go 很滿意(89%),希望在下一個專案中使用 Go(85%),並認為 Go 對他們的團隊很有效(66%),而有相當一部分人認為 Go 對他們公司的成功至少有點關鍵(44%)。儘管所有這些指標在 2017 年都有所增長,但今年基本保持穩定。(第一個問題的措辭在 2018 年從“我會推薦 Go 給他人使用”改為“總的來說,我對 Go 很滿意”,因此這些結果不能直接比較。)

考慮到對未來開發偏愛 Go 的強烈情緒,我們想了解是什麼阻止了開發者這樣做。這些因素與去年基本相同:約 ½ 的調查受訪者在處理使用其他語言編寫的現有專案,而 ⅓ 的人在團隊或專案中更喜歡使用不同的語言。缺少語言特性和庫是受訪者未更多使用 Go 的最常見原因。我們還詢問了開發者在使用 Go 時面臨的最大挑戰;與大多數調查問題不同,參與者可以自由輸入任何內容來回答這個問題。我們透過機器學習分析結果以識別常見主題,並計算支援每個主題的回覆數量。我們確定的三個主要挑戰是:

  • 包管理(例如,“跟上 vendoring”,“依賴/包管理/vendoring 不統一”)
  • 與更熟悉的程式語言的差異(例如,“語法接近 C 語言,但語義略有不同,這讓我比我希望的更頻繁地查詢參考”,“來自非 Go 背景的同事試圖將 Go 用作他們以前的語言版本,但帶有 channel 和 Goroutine”)
  • 缺乏泛型(例如,“缺乏泛型使得說服未嘗試過 Go 的人,讓他們相信使用 Go 會很高效變得困難。”,“構建更豐富的抽象(想要泛型)很難”)

今年我們增加了一些關於開發者對 Go 不同方面滿意度的問題。調查受訪者對 Go 應用程式的 CPU 效能(46:1,即每 1 名不滿意受訪者就有 46 名滿意受訪者)、構建速度(37:1)和應用程式記憶體利用率(32:1)非常滿意。然而,應用程式可除錯性(3.2:1)和二進位制檔案大小(6.4:1)的響應表明仍有改進空間。

對二進位制檔案大小的不滿主要來自構建 CLI 的開發者,只有 30% 的他們對 Go 生成的二進位制檔案大小感到滿意。然而,對於所有其他型別的應用程式,開發者滿意度都超過 50%,並且二進位制檔案大小一直被列為最重要的因素列表的底部。

相比之下,當我們檢視受訪者如何對每個方面的重視程度進行排名時,可除錯性就脫穎而出了;44% 的受訪者將可除錯性列為他們最重要或第二重要的方面,但只有 36% 的人對 Go 可除錯性的現狀感到滿意。可除錯性與記憶體使用量和構建速度一樣被持續視為重要因素,但滿意度水平卻顯著較低,並且無論受訪者構建的軟體型別如何,這種模式都保持不變。最近的兩個 Go 版本 Go 1.11 和 1.12 都對可除錯性進行了重大改進。我們計劃今年更深入地研究開發者如何除錯 Go 應用程式,目標是改善 Go 開發者的整體除錯體驗。

開發環境

我們詢問了受訪者在編寫 Go 程式碼時主要使用的作業系統。大多數(65%)受訪者表示使用 Linux,50% 使用 macOS,18% 使用 Windows,這與去年一致。今年我們還研究了有多少受訪者在多個作業系統上開發與在單個作業系統上開發。Linux 和 macOS 仍然是明顯的領導者,81% 的受訪者在這兩個系統中的某些組合上進行開發。只有 3% 的受訪者在這三個作業系統之間平均分配他們的時間。總的來說,41% 的受訪者使用多個作業系統進行 Go 開發,這凸顯了 Go 的跨平臺特性。

去年,VS Code 以微弱優勢擊敗 Vim,成為受訪者中最受歡迎的 Go 編輯器。今年,它顯著擴大了領先優勢,成為超過 ⅓ 的調查受訪者的首選編輯器(高於去年的 27%)。GoLand 的增長也很強勁,現在是第二受歡迎的編輯器,佔 22%,與 Vim 互換了位置(下降到 17%)。VS Code 和 GoLand 的流行度激增似乎是以 Sublime Text 和 Atom 的代價實現的。Vim 的首選編輯器受訪者數量也有所下降,但仍是 14% 的最受歡迎的第二選擇編輯器。有趣的是,我們發現受訪者報告的對他們選擇的編輯器的滿意度水平沒有差異。

我們還詢問了受訪者,什麼可以最好地改善他們首選編輯器中的 Go 支援。與上面的“最大挑戰”問題類似,參與者可以自由輸入自己的回覆,而不是從多項選擇列表中選擇。對回覆進行主題分析,發現改進除錯支援(例如,“即時除錯”、“整合除錯”、“更好的除錯”)是最常見的請求,其次是改進程式碼補全(例如,“自動補全效能和質量”、“更智慧的自動補全”)。其他請求包括更好地與 Go 的 CLI 工具鏈整合、更好地支援模組/包以及一般的效能改進。

今年我們還增加了一個問題,詢問哪些部署架構對 Go 開發者最重要。毫不奇怪,絕大多數調查受訪者認為 x86/x86-64 是他們的首選部署平臺(76% 的受訪者將其列為他們最重要的部署架構,84% 將其列入前 3 名)。然而,第二和第三個選項架構的排名資訊豐富:ARM64(45%)、WebAssembly(30%)和 ARM(22%)有很高的興趣,但對其他平臺興趣非常小。

部署和服務

2018 年,我們看到從本地到雲託管的趨勢在 Go 和非 Go 部署中都有持續。將 Go 應用程式部署到本地伺服器的受訪者百分比從 43% 下降到 32%,這與非 Go 部署報告的 46% → 36% 的下降相呼應。同比增長率最高的雲服務包括 AWS Lambda(Go 為 4% → 11%,非 Go 為 10% → 15%)和 Google Kubernetes Engine(Go 為 8% → 12%,非 Go 為 5% → 10%),這表明無伺服器和容器正變得越來越受歡迎的部署平臺。然而,這種服務增長似乎是由那些已經採用雲服務的受訪者驅動的,因為我們今年沒有發現部署到至少一種雲服務的受訪者百分比有任何有意義的增長(55% → 56%)。自 2016 年以來,我們也看到 Go 部署到 GCP 的數量穩步增長,從 12% 增加到 19% 的受訪者。

可能與本地部署的減少有關,今年我們看到雲端儲存成為受訪者使用的第二大服務,從 32% 增加到 44%。身份驗證和聯合服務也顯著增加(26% → 33%)。受訪者從 Go 訪問的主要服務仍然是開源關係資料庫,其比例從 61% 上升到 65% 的受訪者。如下方的圖表所示,服務使用量普遍增加。

Go 社群

查詢 Go 問題答案的首選社群來源仍然是 Stack Overflow(23% 的受訪者將其標記為首選來源)、Go 網站(godoc.org 為 18%,golang.org 為 14%)以及閱讀原始碼(8% 為一般原始碼,4% 為 GitHub)。這個順序與往年基本一致。Go 新聞的主要來源仍然是 Go 部落格、Reddit 的 r/golang、Twitter 和 Hacker News。然而,這些也是本次調查的主要分發渠道,因此結果可能存在一些偏差。在下面的兩個圖表中,我們將使用頻率低於 5% 的來源分組為“其他”類別。

今年,55% 的調查受訪者表示他們有或有興趣為 Go 社群做貢獻,比去年略有下降(59%)。由於貢獻最常見的兩個領域(標準庫和官方 Go 工具)需要與核心 Go 團隊互動,我們懷疑這一下降可能與認為“我可以輕鬆地就問題和反饋與 Go 專案領導層溝通”的參與者比例下降(30% → 25%)和“我對 Go 的領導力有信心”的參與者比例下降(54% → 46%)有關。

社群的一個重要方面是幫助每個人感到受歡迎,尤其是來自傳統弱勢群體的人。為了更好地理解這一點,我們對幾個弱勢群體進行了可選的身份識別問題。2017 年,我們看到了跨領域的逐年增長。2018 年,我們看到類似比例的受訪者(12%)認同自己屬於弱勢群體,同時認同自己屬於弱勢群體的受訪者比例顯著下降。2017 年,每 1 個認同自己屬於弱勢群體的人,就有 3.5 個人認同自己不屬於弱勢群體(3.5:1 的比例)。2018 年,該比例提高到 3.08:1。這表明 Go 社群至少保持了與弱勢群體成員相同的比例,甚至可能在增加。

維護一個健康的社群對 Go 專案來說極為重要,因此在過去三年裡,我們一直在衡量開發者在 Go 社群中感到受歡迎的程度。今年,我們看到同意“我在 Go 社群感到受歡迎”這一說法的受訪者百分比有所下降,從 66% → 59%。

為了更好地理解這一下降,我們仔細查看了報告感覺不受歡迎的人群。在傳統弱勢群體中,2018 年報告感到不受歡迎的人數較少,這表明在這一領域的推廣是有效的。相反,我們發現一個人使用 Go 的時長與他們感覺受歡迎的程度之間存線上性關係:新 Go 開發者感覺不受歡迎的比例明顯較低(50%),而有 1-2 年經驗的開發者(62%)則比有幾年經驗的開發者(73%)感覺不受歡迎。對資料進行的這項解讀得到了對“什麼改變能讓 Go 社群更受歡迎?”這一問題的回答的支援。受訪者的評論大致可以分為四類:

  • 減少精英主義的看法,特別是對 Go 的新手(例如,“減少居高臨下的態度”,“減少防禦和傲慢”)
  • 提高領導層面的透明度(例如,“未來方向和規劃討論”,“減少自上而下的領導”,“更加民主”)
  • 增加入門資源(例如,“為貢獻者提供更清晰的介紹”,“有趣的挑戰來學習最佳實踐”)
  • 更多的活動和聚會,重點是覆蓋更大的地理範圍(例如,“更多的聚會和社交活動”,“更多城市的活動”)

這些反饋非常有幫助,為我們提供了可以著重改進 Go 開發者體驗的具體領域。雖然這並不代表我們使用者群的很大一部分,但我們非常認真地對待這些反饋,並正在努力改進每個領域。

結論

我們希望您喜歡我們 2018 年度開發者調查的結果。這些結果正在影響我們的 2019 年規劃,在接下來的幾個月裡,我們將與您分享一些想法,以解決社群為我們突出顯示的具體問題和需求。再次感謝所有為本次調查做出貢獻的人!

下一篇文章: Go 2 的下一步
上一篇文章: 除錯 Go 1.12 中部署的內容
部落格索引