Go 部落格

Go 2018 調查結果

Todd Kulesza、Steve Francia
2019 年 3 月 28 日

感謝您

這篇文章總結了 2018 年使用者調查的結果,並比較了我們先前的 20162017 年調查結果。

今年我們有來自 103 個不同國家的 5,883 名受訪者。我們感謝透過這項調查提供回饋意見的每個人,以幫助形塑 Go 的未來。謝謝您!

發現摘要

  • 首次,一半的受訪者現在在日常工作中使用 Go。今年在擔任工作時使用 Go 開發和在工作職責之外使用 Go 的受訪者數量也有顯著成長。
  • Go 最常見的用途仍然是 API/RPC 服務和 CLI 工具。雖然自動化任務不像 CLI 工具和 API 服務那麼常見,但它們是 Go 快速成長的領域。
  • 網際網路開發仍是最常見的領域,受訪者表示他們在這個領域中工作,但DevOps 顯示出最高的年復一年成長,現在是第二常見的領域。
  • 絕大多數受訪者表示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 且選擇在工作時間外繼續使用 Go 的受訪者佔了相當大的比例,這表示這門語言吸引了不將軟體工程視為每日工作的開發人員:他們選擇在工作職責外撰寫程式碼,並且(有 85% 的受訪者表示偏好下次專案使用 Go,詳見下方的**對 Go 的態度**段落),Go 是他們偏好在這些與工作無關專案中使用的首選語言。

當受訪者被問到他們使用 Go 多久了,他們的回答隨著時間呈現出強烈的上升趨勢,每年 2-4 年組別和 4 年以上組別的回答比例都有上升。這對於較新的程式設計語言來說是預期中的,而我們很高興看到新用 Go 的受訪者比例下降的速度低於使用 Go 超過 2 年的受訪者比例上升的速度,這表示開發人員在初學這門語言後並不會離開生態系統。

與前幾年一樣,Go 名列受訪者最喜歡的語言和最擅長的語言之首。大部分受訪者 (69%) 表示自己精通 5 種不同的語言,這凸顯出他們對 Go 的態度受到其他程式碼堆疊經驗的影響。下方圖表依據受訪者將每種語言列為自己最喜歡/最了解 (最深的藍色長條) 的數量排序,突顯出三個有趣的現象

  • 大約三分之一的受訪者將 Go 視為自己最擅長的語言,但認為 Go 是自己最喜歡的程式語言的受訪者數是前者的兩倍。因此,即使許多受訪者認為自己未像其他語言那樣精通 Go,他們仍然經常偏好使用 Go 進行開發。
  • 少數受訪者將 Rust 列為自己擅長的語言 (6.8%),但 19% 的受訪者將 Rust 列為最喜歡的語言,顯示出受訪者對 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%):Web 開發自 2016 年以來一直是 Go 開發最常見的領域。今年 DevOps 明顯增加,從佔受訪者的 36% 增加至 41%,取代系統程式設計成為第二名。我們未發現 2018 年的使用率低於 2017 年的領域,這表示受訪者採用 Go 來進行更多樣化的專案,而非將使用率從一個領域轉移到另一個領域。

自 2016 年以來,Go 的前兩大用途已成為寫入 API/RPC 服務和開發 CLI 應用程式。雖然三年來 CLI 使用率穩定維持在 63%,但 API/RPC 的使用率從 2016 年的 60% 攀升至 2017 年的 65%,而現在是 73%。這些領域發揮了 Go 的核心優勢,而且都對雲端原生軟體開發至關重要,因此我們預期未來這兩種領域將持續成為 Go 開發人員的兩大主要情境。直接傳回 HTML 的網路服務回應者的百分比持續下降,而 API/RPC 使用率卻不斷攀升,這表示部分網路服務已移轉到 API/RPC 模式。另一項逐年趨勢顯示,自動化現在也是 Go 的成長領域,現在有 38% 的回應者將 Go 用於腳本和自動化工作(高於 2016 年的 31%)。

為了更深入瞭解開發人員使用 Go 的情況,我們加入了一個問題,詢問 Go 在不同產業的採用率。對於一種相對新的語言來說,或許毫不令人意外的是,超過半數的調查回應者都在從事網際網路/網路服務軟體類別(即科技公司)的公司工作。其他產業回應率達 3% 以上的只有金融、銀行或保險以及媒體、廣告、出版或娛樂。(在下列圖表中,我們已將回應率低於 3% 的所有類別歸併為「其他」類別。)我們將持續追蹤 Go 在不同產業的採用率,以更深入瞭解科技公司以外的開發人員需求。

對於 Go 的態度

今年我們加入了一個問題,詢問「你有多可能向朋友或同事推薦 Go?」以計算我們的淨推廣者得分。此分數嘗試測量一個產品所擁有的「推廣者」多於其「貶抑者」的程度,範圍為 -100 至 100;正值表示大多數人可能會推薦使用某一產品,而負值則表示大多數人可能會建議不要使用該產品。我們的 2018 年分數為 61(68% 推廣者 - 7% 貶抑者),此分數將作為我們的基準,協助我們隨著時間推移評估社群對於 Go 生態系統的看法。

除了 NPS 外,我們也詢問了開發人員對 Go 滿意度的幾個問題。整體而言,調查回應者表示高度滿意,與前幾年一致。絕大多數表示他們滿意 Go(89%),會更喜歡在下一份專案中使用 Go(85%),並認為 Go 對於其團隊運作良好(66%),而 44% 的人認為 Go 對其公司的成功至少有些許關鍵。儘管上述所有指標在 2017 年都呈現成長,但今年卻大多維持穩定。(第一個問題的措辭在 2018 年已從「我會推薦他人使用 Go」變更為「整體而言,我滿意 Go」,因此這些結果無法直接比較。)

考量到大部分開發者偏好使用 Go 的強烈意願,我們想要了解什麼因素阻止了開發人員這麼做。這些問題大致上與去年沒有太大的變化:大約一半的受訪者正在從事使用其他語言撰寫的現有專案,而有三分之一的人員是在團隊或專案中使用偏好的不同語言。缺乏語言功能和函式庫是受訪者沒有更頻繁使用 Go 的最常見原因。我們也詢問開發人員在使用 Go 時面臨最大的挑戰;與我們的調查問題不同,受訪者可以自行輸入任何他們想回答的答案。我們透過機器學習分析結果,以找出常見的主題,並計算支援每個主題的回應數量。我們找出以下三個主要挑戰:

  • 套件管理(例如「跟上供應商」、「依賴 / 封包 [原文如此] 管理 / 供應商不統一」)
  • 與更熟悉的程式語言有差異(例如「語法接近 C 語言但語義稍有不同,讓我在查詢參考時花的時間比預期更長」、「來自非 Go 背景的同事嘗試將 Go 當成他們先前語言的版本,但加上了通道和 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 編輯器。今年它顯著擴大了領先地位,成為超過 1/3 問卷受訪者(去年為 27%)的首選編輯器。GoLand 也經歷了強勁的成長,現在是第二受歡迎的編輯器,達 22%,與 Vim(下降至 17%)交換位置。VS Code 和 GoLand 的快速普及,似乎是以犧牲 Sublime Text 和 Atom 為代價。Vim 的受訪者數也下降,將它列為首選,但它仍是第二受歡迎的編輯器,達 14%。有趣的是,我們發現受訪者報告的編輯器(首選)滿意度沒有差別。

我們也詢問受訪者,什麼最能改善他們首選編輯器中的 Go 支援。就像上述的「最大挑戰」問題一樣,與其從複選清單中選擇,參與者可以使用自己的文字撰寫回答。對回覆進行的主題分析顯示,改良的除錯支援(例如:「動態除錯」、「整合除錯」、「更佳除錯」)是最常見的要求,其次是改良的程式碼完成(例如:「自動完成效能和品質」、「更智慧的自動完成」)。其他要求包括與 Go 的 CLI 工具鏈整合、對模組/套件更好的支援、以及一般的效能提升。

今年我們也新增了一個問題,詢問哪一種部署架構對 Go 開發者來說最重要。毫不意外,絕大多數受訪者都將 x86/x86-64 視為最重要的部署平台(76% 受訪者列為最重要部署架構,84% 則在前三名中)。不過,第二與第三名架構的排名頗具參考價值: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%、特別是 GitHub 為 4%)。這個順序與前幾年大致相同。獲得 Go 新聞的主要來源仍為 Go 部落格、Reddit 的 r/golang、Twitter 和 Hacker News。不過,這些也是本調查的主要散播管道,因此這項結果可能有些許偏差。在以下兩個圖表中,我們將使用率低於 < 5% 的來源歸類至「其他」類別。

今年,55% 的調查受訪者表示,他們已經或有興趣為 Go 社群做出貢獻,與去年 59% 的數字相比略有下降。因為兩項最常見的貢獻領域(標準函式庫和官方 Go 工具)需要與 Go 核心團隊互動,因此我們懷疑這種下降的原因,可能是由於認同以下說法的與會者比例降低所致:「我敢於帶著問題和回饋意見與 Go 專案領導階層交談」(30% → 25%);以及「我相信 Go 的領導階層」(54% → 46%)。

社群的一項重要面向,是協助讓每個人都感到備受歡迎,特別是來自傳統上代表性不足的族群。為了更深入了解這一點,我們針對一些代表性不足的族群,詢問了一個選填問題,詢問身分認同。2017 年時,我們看見逐年增加。而在 2018 年,我們發現有相似的受訪者比例(12%)認同自己是代表性不足的族群一分子,而且與過去相比,會表示自己不屬於代表性不足的族群的受訪者比例,出現顯著下降。2017 年時,每一位認同自己是代表性不足的族群一分子的人,就會有 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 中偵錯部署內容
部落格索引