2020年軟件工程現狀:Python或將成爲第一大編程語言,中國開源漲勢最猛

現在,是時候談一談 2020 年及以後的軟件工程狀況了。

本文以 GitHub Octoverse 數據爲基礎,加上我作爲一個擁有十年經驗的軟件工程師的經驗和觀察。軟件工程在過去 20 年來實現了爆炸式的增長,而且這種勢頭似乎還在保持。據《財富》(Fortune)數據顯示,2019 年全球前 15 家科技公司的總收入達到了創紀錄的 1.67 萬億美元,比 2018 年增長了 2%。今天的軟件公司比以往任何時候都要多。

此外,現有的非軟件公司在產品中引入了更多的軟件組件,從汽車到洗衣機,無所不包。未來是軟件的天下,但並非所有的軟件都是平等的。確定軟件最有前途和發展最快的領域,可以幫助你實現事業和項目的騰飛。投資於一個發展中的領域,可以幫助你更容易找到一份工作,並獲得更高的報酬,幫助你爲項目籌到資金。那麼,閒話少敘,直入正題。

編程的發展

2019 年,有 1000 萬開發者新人進入了 GitHub。我猜想大部分新用戶都是來自美國以外的地區,但即便如此,這仍然是一個巨大的數字。非常感謝 GitHub,能夠在幾乎沒有任何問題的情況下,將規模擴大到這樣的程度,我對 GitHub 表示敬意。

這些新開發人員爲來自世界各地的 4400 多萬個倉庫做出了貢獻。80% 的代碼提交來自美國以外的國家和地區。同樣,在美國以外的國家和地區,科技行業也在快速發展,GitHub 的數據也表明了這一點。也許在幾十年內,硅谷將會有多個競爭者爭奪世界軟件工程中心的頭把交椅。

還有一點要注意,GitHub 的數據並不能代表整個世界,但它能很好地反映出總的趨勢,因爲它是世界上最大的代碼託管提供商。

去年,在全球財富 50 強企業中,近 70% 的企業爲開源做出了貢獻。70% 這一數字是巨大的,根據 GitHub 的數據,這一數字還在不斷增長。不僅如此,去年 GitHub 上有 290 萬個組織,這個數字聽起來大得離譜,但隨着越來越多的公司將軟件組件引入到他們的流程中,即使再大的數字也將會變得司空見慣。

開源的發展

平均而言,GitHub 上的每個開源項目都有來自 41 個不同國家和地區的貢獻者。這再次表明了美國以外的國家和地區的增長速度。

繼美國之後,開源的使用在中國、印度和德國加快了速度。中國的開發人員分叉(Fork)和克隆的項目比去年增長了 48%。我想,沒有人會對中國軟件的增長感到意外。問題不在於中國是否會超越美國,而是在於何時超越美國。

開源使用情況

如果我們從大洲層面來看,亞洲已經領先於美國和歐洲。然而,看到南美洲和非洲遠遠落後,單單是歐洲的貢獻還不到三分之一,這三大洲的人口加起來有 16 億,出現這樣的狀況,是令人悲哀的,也有些令人驚訝。

提示:我專門寫過一篇如何正確使用 GitHub 進行軟件開發的文章。在這篇文章中,我提供了完整的 GitHub 工作流程,同時在我的 android-docker 開源項目上完成了一些實際工作。同時,我還提供了一些關於高效使用 GitHub 的實用評論和技巧。如果你想閱讀的話,鏈接文末。

頂級庫

在每一種編程語言的前 50 名開源包中,包括 JavaScript、Python、Ruby 等,都有大量的依賴項目。例如,儘管平均每個直接貢獻者不到 40 個,但流行的 npm 包可能是數以百萬計的其他倉庫的依賴項。頂級依賴包有 Java、Python 和 JavaScript,這一點毫不奇怪。它們是目前排名前三的編程語言,我並不認爲這一狀況很快就會改變。

熱門項目

隨着開源運動風起雲涌,人們對開源的貢獻也越來越大。我強烈建議大家爲開源項目做出貢獻。這是一個進入開源社區並獲得寶貴經驗的絕佳機會。此外,你還可以在簡歷中列出你所創建和貢獻的項目,這是一個很大的加分項。

你可以在表格中看到,去年貢獻最多的項目也是最有用的項目之一。例如,Visual Studio Code 是最好的編程文本編輯器之一。TensorFlow、React Native 和 Kubernetes 也是如此。它們成爲了無價的工具,人們喜歡它們並希望用自己的貢獻來改進它們也就不足爲奇了。

頂級編程語言

現在,是時候分析一下編程語言了。不難看出,作爲 Web 的主要支撐語言,JavaScript 仍然排名第一,這並不令人震驚。我預計 Python 會在某個時候超越 JavaScript,但具體什麼時候,我們還得拭目以待。事實上,在 GitHub 之外,Python 可能已經是第一大編程語言了。和以往一樣,Java 與 PHP、C++ 一起並駕齊驅。

讓我感到驚訝的是,TypeScript 的迅猛崛起。我曾預言,一旦 TypeScript 所有好的特性最終都出現在 JavaScript 本身中,它就會像 CoffeeScript 和其他許多東西一樣被丟棄。相反,只有少數幾個 TypeScript 特性最終出現在 JavaScript 中,包括私有字段 / 靜態字段、可選鏈接和 null 合併。TypeScript 保留了它的獨特特性,並繼續在市場上大行其道。然而,我仍然認爲,使用簡單、現代的 JavaScript 會讓 TypeScript 以簡單和乾淨的方式脫穎而出。TypeScript 增加了大量的複雜性,包括工具和依賴項(即第三方類型定義包),我認爲這並不值得。另一方面,我不是預言家,所以我們只能拭目以待,看看它是否與 CoffeeScript 有同樣的命運。

數據科學與機器學習

2019 年是數據科學和機器學習的一年。我完全期望,在幾乎整個十年中,它將會以同樣的軌跡持續下去。分析和理解海量數據具有很大的價值。尤其是與機器學習相結合,這兩者所產生的的價值可能會超過計算機科學的其他所有分支。我想說的是,唯一能讓數據科學和機器學習退居幕後的是量子計算的突破。否則的話,在計算機科學這個最熱門的分支領域投入一些時間是個好主意。就像我常說的那樣,如果你投資一項正在發展的技術,你就能隨之成長。

機器學習在生活的方方面面都有應用。利用機器學習預測購物行爲並提供定製的推薦就是一個很好的例子。像 Siri 和 Alexa 這樣的虛擬個人助理,像 Google 和 Microsoft Teanslate 這樣的自動化翻譯服務,垃圾郵件過濾器、自動化客戶支持等等,都越來越多的以機器學習爲基礎。

雲計算、DevOps 與安全軟件

系統的複雜性和規模越來越大。此外,像機器學習這樣的特定任務需要非常規的服務器硬件,如 TPU,即張量處理單元(Tensor processing units),這是一種定製設計的硬件,用於加速機器學習任務。這就導致了企業內部需要進行大量的工作來容納服務器並手動維護它們。解決這個問題的最明智的做法是使用 DevOps 工具實現服務器部署和維護的自動化。將這些服務器遷移至雲計算供應商那裏也是合理的,這樣你就不必再看別的裸機服務器了。

隨着對雲託管和 DevOps 需求的增加,這些技能在市場上越來越受到青睞。如果你有從事硬件和網絡工作的願望,那麼嘗試一下雲服務提供商和 DevOps 工具,是一項不錯的投資。大多數雲服務提供商都提供了慷慨的免費套餐,因此,你可以在 Google Cloud、Amazon Web Services、Azure 或其他任何較小的雲服務供應商創建一個免費的賬戶,並立即開始試驗和學習。

顯然,將你所有數據都搬到雲端上,會帶來重大的安全隱患。這增加了任何從事 DevOps 或雲的人對安全意識的需求。此外,這也增加了對專用軟件和網絡安全工程師的需求。投入時間去了解雲計算和 DevOps 決策的安全影響至關重要。如果你打算面試 DevOps 或任何基礎設施的職位,你應該會非常強調安全性。

總結

軟件的發展如盛壯之時的騏驥,一日而馳千里。它正在融合到其他所有的行業領域。既然軟件是一個不斷髮展的領域,那麼學習編程並提高自己的軟件工程技能,在未來會有巨大的回報。此外,找出軟件發展最快的領域,並將時間投入其中,可以讓你獲得更好的發展。不斷學習,努力尋找一切可以利用的機會,或者是可以在不斷髮展的軟件領域中,找到可以爲小衆服務的產品,當這個小衆成爲主流時,你最終可以將一個成功的產品掌握在你的手中,這可能成爲你未來的成功。如果失敗了,那將是成爲產品專家之路的一次巨大的經歷。

本文引用的資源:

GitHub OctoverseWikipedia:最大的信息技術公司列表

Stack Overflow 年度開發人員調查

Hired:軟件工程師狀況

本文提到的文章:

《如何正確使用 GitHub 進行軟件開發:我的完整開發工作流程》

(How to Correctly Use GitHub for Software Development - My Full Dev Workflow)

原文鏈接:

https://quanticdev.com/articles/software-engineering-in-2020/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章