2020年開發者應該關注的五大技能

2020年的今天,如果你是一名開發人員,那麼你可能看到一些包含大量技能要求的職位招聘描述。以下面一份Indeed網站上的真實招聘要求爲例,它列出的技能不少,甚至閱讀期間都要中途休息一下。

職位描述:

  • 有使用Jenkins和Terraform管理AWS基礎架構的經驗;
  • 有AWS服務的相關經驗(ECR、Lambda、SQS、CloudWatch、Route53);
  • 用Elixir、Python和Java進行過實際編程;
  • 熟悉支持工具(Docker、Git、Bash、AWS CLI);
  • 具有通過ETL和asynchronous pipelines進行生產環境開發的經驗;
  • 熟悉關係型數據庫(Postgres/RDS)和nosql數據庫(DynamoDB);
  • 具備積極參與設計複雜系統的能力;
  • 熟悉生產環境網絡運維者優先;
  • 瞭解機器學習原理,擁有NLP經驗,有Kaggle競賽經驗者優先;
  • 有數據科學開發庫(Scikit、NLTK、Gensim、TensorFlow、Keras)的經驗。

你具備所有這些技能嗎?

顯而易見,這份工作是在尋找一個“多面手”,既是軟件工程師、數據工程師,又是機器學習工程師和DevOps工程師。從某方面說,這個要求有點“荒謬”。

現在的軟件工程師真需要掌握所有這些技能嗎?說句實話,差不多。這其中的很多技術都只是第三方工具。如果你是一名軟件工程師,那麼你很可能在某些情況下用過這些技術或與之類似的技術。

在我看來,招聘經理認爲你不能勝任工作,僅僅因爲你用過MySQL但從未在RDS上使用過MySQL,這非常荒謬。總而言之,幸好有AWS、Docker、Nagios等技術和服務,現在設計、開發、部署和監控軟件的工作變得更簡單。

所以,現在的軟件工程師需要與時俱進,保證自己的技能不會落伍。以下是開發者應該在今年開始學習的五項技能。

1.雲服務

不僅大企業在使用雲服務,現在連小型企業都在用雲。雲服務不僅有助於減低企業整體運營成本,而且能幫助客戶更高效地處理運維工作。

然而,隨着這項新技術的出現,開發人員也需要學習相應的新技能。但是,要跟上這個領域的所有技術趨勢,還要學會用各種方式來運行代碼、存儲數據和託管基礎架構。這看起來是一件不可能的事。

很多時候,我們感覺自己終於摸清一個雲服務,卻發現有另一個雲可以替代它,或者服務又添加了新功能。既然如此,我們至少應該瞭解哪些技術?

AWS、Azure和GCP:提到雲服務,AWS在美國擁有最大的市場份額,它可以說提供了最廣泛的服務種類,從IaaS、PaaS和SaaS無所不包。它提供了S3、RDS、Redshift和DynamoDB等數據存儲服務,以及EC2和Lamda等計算服務。雖然Auzre和GCP仍然落後於AWS,但是它們的使用量都在快速增長。這就意味着開發人員需要掌握更多技能。

2.容器化

在軟件世界,熟悉容器變得非常重要。簡而言之,容器將代碼及其依賴項打包,以便可以在不同的環境中可靠、高效地運行。

容器化是指將一個應用程序與它需要的庫、依賴關係和配置文件打包在一起,以便在多個計算環境中有效運行。

無論是本地環境還是雲環境,都可以輕鬆地部署基於容器的應用程序。市面上有很多容器技術的代表,最突出的要數Docker。如果你想了解更多關於Docker的信息和Kubernetes,你可以看看這個YouTube視頻

3.應用程序和服務器監控(Nagios)

對每套系統、每個網絡和每一片基礎設施進行監控,這是非常困難的,尤其考慮到現在的應用程序被用在許多不同類型的硬件上。

Nagios監控是一種開源技術,它可以幫助監視DevOps中的應用程序和業務流程。Nagios幾乎可以監控一切,從HTTP、SSH、SMTP、內存使用、微處理器負載到服務器等。只要你能說出來個類型,Nagios就能進行監控。

在2020年,開發人員將需要使用Naigios這樣的框架,以打造一個全天候的監控系統。這意味着我們需要熟悉像Naigios這樣的工具,才能成爲一名高效的開發人員。

4.Jenkins,Bamboo CI/CD

許多工程師新人可能不知道,一個沒有CI/CD的世界是什麼模樣。但是,這並不是說很多傳統的deployment shops不存在了。然而,使用CI/CD等輔助工具的趨勢將持續增長。

很多公司都在研究或使用關於CI的第三方工具,其中有兩個很好的例子就是Jenkins和Bamboo。Jenkins是一個開源工具,而Bamboo則是一個商業工具。

Bamboo提供了很多功能,這些功能通常取決於你的預算,並且很容易與Jira和Bitbucket集成。但是,這三者的結合創建了一個可以幫你輕鬆部署代碼,並提供檢測代碼中的錯誤等功能的CI/CD系統。

Jenkins是一個持續集成(Continuous Integration)開源服務器,它具有編排和執行一系列操作的能力。Jenkins可以在JAVA的幫助下執行,並具有監視項目和檢測可能出現錯誤的能力。Jenkins的檢測率相當高,這也是其迅速普及的原因之一。關於這些工具的更多知識請參考此處

5.數據庫

作爲一名開發人員,瞭解數據庫和數據存儲系統的各種選項是個人技能的一個重要組成部分。選擇如何在後端支持應用程序的決策會顯著影響性能和功能。

長期以來,大多數應用程序的數據庫選項都侷限在應用程序端的關係型數據庫上。然而,隨着服務器和計算機的存儲能力和性能提升,現在已經出現很多新型的數據存儲系統。

DynamoDB

例如,DynamoDB是一個與標準MySQL實現非常不同的數據庫。DynamoDB使用它所稱的屬性、條目和表作爲用戶經常使用的核心部分。它允許開發者自由使用非結構化數據集,這種數據集並不總是需要相同的值。

此外,還有像Hadoop/HDFS/Hbase這樣的技術棧,它們也允許更少的結構化和更分佈式的數據存儲。所有這些只會讓開發人員的工具箱變得更加複雜。

傳統RDBMS

就算有這麼多的新型數據系統,也並不意味着你可以忽略傳統的Mysql和SQL Server等關係型數據庫。使用RDBMS爲應用程序設計數據層仍然是一種非常流行的方法。所以不要忘記提高SQL和數據建模技巧。

編程語言

作爲一名程序員,你仍然需要知道如何編程!但是用哪些語言呢?

編程語言是開發人員賴以生存的基礎。大多數開發人員在這個行業工作幾年後就已經掌握多種編程語言。

如果你是新手,那麼你可能需要研究Python和Javascript。這兩套語言在大多數工作中都被廣泛使用。當然,這並不是說,像Java和C++這樣的語言已經沒有自己的位置。

至於工作崗位的需求,你可以從下面圖表中看到,需要Python和Javascript的工作崗位都在增加。

來源

爲什麼選擇Python?

之所以每個人都傾向於Python,是因爲它既簡單又很擅長處理大多數問題。現在,它已經不允許通過C或C++進行調優,也不能作爲原生Web語言。然而,它在各種事情上都處理的還不錯。幸好Google在諸如Tensorflow庫等方面的工作,Python經常與人工智能、機器學習等最新技術相聯繫。

如果想快速編寫一個網站,你可以很容易地使用Django和Flask來作爲後端。這比試圖配置一個Spring框架要容易得多。Python很容易支持並行計算,這減少了組織數據的麻煩。而Pydoop是一個Python的集成庫,可以讓我們在HDFS集羣的幫助下處理數據並表示出來。

隨着更多支持Jupyter筆記本工具的開發,Python在數據分析領域也佔有一席之地。在我看來,Python如此流行主要歸於其多功能性。

無論你是數據科學家還是開發人員,你都能使用Python作爲開發網站或機器學習建模的工具。針對你想學的東西,網上有很多的免費資料。例如,這裏有一個很棒的YouTube播放列表

React.js

React怎麼樣?無疑,它讓前端開發變得非常簡單。例如,使用DOM API可能是一件痛苦的事情。不過,React爲開發人員提供了在虛擬瀏覽器上開發的能力。本質上,這個虛擬瀏覽器是開發者和真實瀏覽器間的聯絡器。

關於React.js的另一個著名概念是可重用組件。在React中,應用程序由所謂的組件構成。有許多不同種類的組件,目的都是創建可以很容易移植到應用程序中的代碼片段

最後,React的單向數據流非常好用,因爲組件不允許在ReactJS中更改,而且組件中的數據具有相同屬性。當ReactJS監聽從上游流出的數據時,組件會平穩運行並保持同步。這個特性實際上讓ReactJS非常適合構建用戶界面。

小結

說實話,軟件開發領域,新技術不斷出現,開發者要學習的東西越來越多。有時候,軟件開發人員的職位描述看上去要一個人能幹一個開發團隊的活,從DevOps、數據庫管理到後臺和前端開發,甚至無所不包。

英文原文:

5 Technical Skills Developers Need In 2020

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