現(xiàn)在,,是時候談一談 2020 年及以后的軟件工程狀況了。本文以 GitHub Octoverse 數(shù)據(jù)為基礎(chǔ),,加上我作為一個擁有十年經(jīng)驗的軟件工程師的經(jīng)驗和觀察,。我還將討論下面列出的話題。 軟件工程在過去 20 年來實現(xiàn)了爆炸式的增長,,而且這種勢頭似乎還在保持,。據(jù)《財富》(Fortune)數(shù)據(jù)顯示,2019 年全球前 15 家科技公司的總收入達到了創(chuàng)紀(jì)錄的 1.67 萬億美元,,比 2018 年增長了 2%,。今天的軟件公司比以往任何時候都要多。 此外,,現(xiàn)有的非軟件公司在產(chǎn)品中引入了更多的軟件組件,從汽車到洗衣機,,無所不包,。未來是軟件的天下,但并非所有的軟件都是平等的,。確定軟件最有前途和發(fā)展最快的領(lǐng)域,,可以幫助你實現(xiàn)事業(yè)和項目的騰飛。投資于一個發(fā)展中的領(lǐng)域,,可以幫助你更容易找到一份工作,,并獲得更高的報酬,幫助你為項目籌到資金。那么,,閑話少敘,,直入正題。 編程的發(fā)展2019 年,,有 1000 萬開發(fā)者新人進入了 GitHub,。我猜想大部分新用戶都是來自美國以外的地區(qū),但即便如此,,這仍然是一個巨大的數(shù)字,。非常感謝 GitHub,能夠在幾乎沒有任何問題的情況下,,將規(guī)模擴大到這樣的程度,,我對 GitHub 表示敬意。 這些新開發(fā)人員為來自世界各地的 4400 多萬個倉庫做出了貢獻,。80% 的代碼提交來自美國以外的國家和地區(qū)。同樣,,在美國以外的國家和地區(qū),,科技行業(yè)也在快速發(fā)展,GitHub 的數(shù)據(jù)也表明了這一點,。也許在幾十年內(nèi),,硅谷將會有多個競爭者爭奪世界軟件工程中心的頭把交椅。 還有一點要注意,,GitHub 的數(shù)據(jù)并不能代表整個世界,,但它能很好地反映出總的趨勢,因為它是世界上最大的代碼托管提供商,。 去年,,在全球財富 50 強企業(yè)中,近 70% 的企業(yè)為開源做出了貢獻,。70% 這一數(shù)字是巨大的,,根據(jù) GitHub 的數(shù)據(jù),這一數(shù)字還在不斷增長,。不僅如此,,去年 GitHub 上有 290 萬個組織,這個數(shù)字聽起來大得離譜,,但隨著越來越多的公司將軟件組件引入到他們的流程中,,即使再大的數(shù)字也將會變得司空見慣。 開源的發(fā)展 平均而言,,GitHub 上的每個開源項目都有來自 41 個不同國家和地區(qū)的貢獻者,。這再次表明了美國以外的國家和地區(qū)的增長速度。 繼美國之后,,開源的使用在中國,、印度和德國加快了速度,。中國的開發(fā)人員分叉(Fork)和克隆的項目比去年增長了 48%。我想,,沒有人會對中國軟件的增長感到意外,。問題不在于中國是否會超越美國,而是在于何時超越美國,。 開源使用情況 如果我們從大洲層面來看,亞洲已經(jīng)領(lǐng)先于美國和歐洲,。然而,,看到南美洲和非洲遠遠落后,單單是歐洲的貢獻還不到三分之一,,這三大洲的人口加起來有 16 億,,出現(xiàn)這樣的狀況,是令人悲哀的,,也有些令人驚訝,。 提示:我專門寫過一篇如何正確使用 GitHub 進行軟件開發(fā)的文章,。在這篇文章中,,我提供了完整的 GitHub 工作流程,同時在我的 android-docker 開源項目上完成了一些實際工作,。同時,,我還提供了一些關(guān)于高效使用 GitHub 的實用評論和技巧。如果你想閱讀的話,,鏈接在上文的資源一節(jié),。 頂級庫在每一種編程語言的前 50 名開源包中,包括 JavaScript,、Python,、Ruby 等,都有大量的依賴項目,。例如,,盡管平均每個直接貢獻者不到 40 個,但流行的 npm 包可能是數(shù)以百萬計的其他倉庫的依賴項,。頂級依賴包有 Java,、Python 和 JavaScript,,這一點毫不奇怪。它們是目前排名前三的編程語言,,我并不認(rèn)為這一狀況很快就會改變,。 熱門項目 隨著開源運動風(fēng)起云涌,,人們對開源的貢獻也越來越大,。我強烈建議大家為開源項目做出貢獻。這是一個進入開源社區(qū)并獲得寶貴經(jīng)驗的絕佳機會,。此外,,你還可以在簡歷中列出你所創(chuàng)建和貢獻的項目,這是一個很大的加分項,。 你可以在表格中看到,,去年貢獻最多的項目也是最有用的項目之一。例如,,Visual Studio Code 是最好的編程文本編輯器之一,。TensorFlow、React Native 和 Kubernetes 也是如此,。它們成為了無價的工具,,人們喜歡它們并希望用自己的貢獻來改進它們也就不足為奇了。 頂級編程語言 現(xiàn)在,,是時候分析一下編程語言了。不難看出,,作為 Web 的主要支撐語言,,JavaScript 仍然排名第一,這并不令人震驚,。我預(yù)計 Python 會在某個時候超越 JavaScript,,但具體什么時候,我們還得拭目以待,。事實上,,在 GitHub 之外,Python 可能已經(jīng)是第一大編程語言了,。和以往一樣,,Java 與 PHP、C++ 一起并駕齊驅(qū),。 讓我感到驚訝的是,TypeScript 的迅猛崛起,。我曾預(yù)言,,一旦 TypeScript 所有好的特性最終都出現(xiàn)在 JavaScript 本身中,,它就會像 CoffeeScript 和其他許多東西一樣被丟棄。相反,,只有少數(shù)幾個 TypeScript 特性最終出現(xiàn)在 JavaScript 中,,包括私有字段 / 靜態(tài)字段、可選鏈接和 null 合并,。TypeScript 保留了它的獨特特性,,并繼續(xù)在市場上大行其道。然而,,我仍然認(rèn)為,,使用簡單,、現(xiàn)代的 JavaScript 會讓 TypeScript 以簡單和干凈的方式脫穎而出,。TypeScript 增加了大量的復(fù)雜性,包括工具和依賴項(即第三方類型定一包),,我認(rèn)為這并不值得,。另一方面,我不是預(yù)言家,,所以我們只能拭目以待,,看看它是否與 CoffeeScript 有同樣的命運。 數(shù)據(jù)科學(xué)與機器學(xué)習(xí)2019 年是數(shù)據(jù)科學(xué)和機器學(xué)習(xí)的一年,。我完全期望,,在幾乎整個十年中,它將會以同樣的軌跡持續(xù)下去,。分析和理解海量數(shù)據(jù)具有很大的價值,。尤其是與機器學(xué)習(xí)相結(jié)合,這兩者所產(chǎn)生的的價值可能會超過計算機科學(xué)的其他所有分支,。我想說的是,,唯一能讓數(shù)據(jù)科學(xué)和機器學(xué)習(xí)退居幕后的是量子計算的突破。否則的話,,在計算機科學(xué)這個最熱門的分支領(lǐng)域投入一些時間是個好主意,。就像我常說的那樣,如果你投資一項正在發(fā)展的技術(shù),,你就能隨之成長,。 機器學(xué)習(xí)在生活的方方面面都有應(yīng)用,。利用機器學(xué)習(xí)預(yù)測購物行為并提供定制的推薦就是一個很好的例子,。像 Siri 和 Alexa 這樣的虛擬個人助理,像 Google 和 Microsoft Teanslate 這樣的自動化翻譯服務(wù),,垃圾郵件過濾器,、自動化客戶支持等等,,都越來越多的以機器學(xué)習(xí)為基礎(chǔ)。 云計算,、DevOps 與安全 軟件系統(tǒng)的復(fù)雜性和規(guī)模越來越大。此外,,像機器學(xué)習(xí)這樣的特定任務(wù)需要非常規(guī)的服務(wù)器硬件,,如 TPU,即張量處理單元(Tensor processing units),,這是一種定制設(shè)計的硬件,,用于加速機器學(xué)習(xí)任務(wù)。這就導(dǎo)致了企業(yè)內(nèi)部需要進行大量的工作來容納服務(wù)器并手動維護它們,。解決這個問題的最明智的做法是使用 DevOps 工具實現(xiàn)服務(wù)器部署和維護的自動化,。將這些服務(wù)器遷移至云計算供應(yīng)商那里也是合理的,這樣你就不必再看別的裸機服務(wù)器了,。 隨著對云托管和 DevOps 需求的增加,,這些技能在市場上越來越受到青睞。如果你有從事硬件和網(wǎng)絡(luò)工作的愿望,,那么嘗試一下云服務(wù)提供商和 DevOps 工具,,是一項不錯的投資。大多數(shù)云服務(wù)提供商都提供了慷慨的免費套餐,,因此,,你可以在 Google Cloud、Amazon Web Services,、Azure 或其他任何較小的云服務(wù)供應(yīng)商創(chuàng)建一個免費的賬戶,,并立即開始試驗和學(xué)習(xí)。 顯然,,將你所有數(shù)據(jù)都搬到云端上,會帶來重大的安全隱患,。這增加了任何從事 DevOps 或云的人對安全意識的需求,。此外,這也增加了對專用軟件和網(wǎng)絡(luò)安全工程師的需求,。投入時間去了解云計算和 DevOps 決策的安全影響至關(guān)重要,。如果你打算面試 DevOps 或任何基礎(chǔ)設(shè)施的職位,你應(yīng)該會非常強調(diào)安全性,。 總 結(jié) 軟件的發(fā)展如盛壯之時的騏驥,一日而馳千里,。它正在融合到其他所有的行業(yè)領(lǐng)域,。既然軟件是一個不斷發(fā)展的領(lǐng)域,,那么學(xué)習(xí)編程并提高自己的軟件工程技能,在未來會有巨大的回報,。此外,,找出軟件發(fā)展最快的領(lǐng)域,并將時間投入其中,,可以讓你獲得更好的發(fā)展,。 不斷學(xué)習(xí),努力尋找一切可以利用的機會,,或者是可以在不斷發(fā)展的軟件領(lǐng)域中,,找到可以為小眾服務(wù)的產(chǎn)品,當(dāng)這個小眾成為主流時,,你最終可以將一個成功的產(chǎn)品掌握在你的手中,,這可能成為你未來的成功。如果失敗了,,那將是成為產(chǎn)品專家之路的一次巨大的經(jīng)歷,。 |
|