2020軟件工程師必備的11項技能(2020軟件工程師必備的11項技能有哪些)
作者 | javinpaul
譯者 | 張濤
責(zé)編 | Carol
本文分享作者認(rèn)為每個程序員在2020年需要了解或?qū)W習(xí)的技巧。其中編程語言包括C 、Java,必需的計算機概念包括數(shù)據(jù)結(jié)構(gòu)、算法和計算機網(wǎng)絡(luò)概念,工具包括Git、Docker、Kubernetes和容器,云計算概念和平臺包括AWS、GCP、Microsoft Azure,常青樹技能包括SQL和UNIX,編輯器包括Eclipse、Visual Studio,文本編輯器包括VIM和NotePad 等。
本文提供的列表可能并不完整,但為程序員需要知道的技能提供了一個好的起點。如果你有志于軟件開發(fā)職業(yè)或想找編程方面的工作,那么本文的內(nèi)容是你所需要知道的,并且可以用來提高競爭力。
廢話少說,這里列出了一些我個人認(rèn)為每個程序員都應(yīng)該知道的技能,不管他從事的是什么工作。這些都是必要的技能,并且長期為你受用。任何在時間、金錢和努力方面的投資都會幫助你在整個職業(yè)生涯中獲得回報。
2020軟件工程師必備的11項技能
1、容器(Docker和Kubernetes)
在2020年,作者認(rèn)為程序員、軟件工程師、數(shù)據(jù)科學(xué)家,甚至項目管理人員都應(yīng)該了解一些Docker和Kubernetes這樣的容器和工具的相關(guān)知識。
Docker這樣的容器不僅可以幫助開發(fā)者在統(tǒng)一環(huán)境下測試有用,但是可以簡化部署過程。在Docker的幫助下,不僅可以快速部署應(yīng)用,還可以提供進(jìn)程隔離。與Docker類似,Kubernetes是一個容器工具,可以幫助管理容器。
也就是說,你無需擔(dān)心應(yīng)用的可擴展性,因為Kubernetes或K8s 可以自動解決這一問題。研究人員建議開發(fā)人員在2020年學(xué)習(xí)Docker和Kubernetes。
2、云平臺(AWS、GCP、Azure)
除了容器外,云計算是另一個軟件工程師和數(shù)據(jù)科學(xué)家2020年需要學(xué)習(xí)的知識。由于云計算的低成本和良好可擴展性,不同領(lǐng)域和規(guī)模的企業(yè)都在遷移到云平臺,也就是說你遲早需要與云應(yīng)用打交道。
對數(shù)據(jù)科學(xué)、機器學(xué)習(xí)和人工智能領(lǐng)域來說,更是如此。因為只有云平臺才能提供模型所需的計算能力。Amazon Web Service (AWS)、Google Cloud Platform (GCP)和Microsoft Azure是常見的云平臺,但你無需學(xué)習(xí)全部,學(xué)習(xí)一種就可以對其他平臺的知識有一定的了解。
研究人員建議從學(xué)習(xí)AWS開始,因為AWS是最主流和最成熟的云平臺之一,而且業(yè)界對擁有AWS知識的開發(fā)人員和系統(tǒng)管理員都有大量的需求。
3、數(shù)據(jù)結(jié)構(gòu)和算法
如果你想成為一個程序員,那么必須要了解數(shù)據(jù)結(jié)構(gòu)和算法。因為這是所有編程工作面試的主要論點,沒有數(shù)組、鏈表、圖、集合這樣的基本數(shù)據(jù)結(jié)構(gòu)知識,是不可能開發(fā)出現(xiàn)實的應(yīng)用的。
這也是為什么每個程序員在計算機科學(xué)課程中有大量的數(shù)據(jù)結(jié)構(gòu)和算法的課程。
4、版本控制工具(Git)
源控制是用來保存代碼的,如果你想成為程序員或軟件工程師,那么必須要了解Git和SVN這樣的版本控制工具。
目前有超過70%的組織使用Git,因此研究人員也建議從學(xué)習(xí)Git開始。
5、文本編輯器(VIM)
作為程序員,每天都會使用文本編輯器。甚至有些非程序員也會每天都使用文本編輯器。研究人員常用的兩款文本編輯器是NotePad(Windows)和VIM(Linux)。
目前,文本編輯器的選擇很多,研究人員推薦Sublime和NotePad 這些提供IDE功能的高級編輯器。
6、IDEs (VSCode或IntelliJIDEA)
Eclipse、Visual Studio Code這樣的IDES對編程人員來說是最重要的工具。對使用C、C 、C#語言的程序員來說,Visual Studio是毫無疑問的選擇,對Python開發(fā)者來說,Jupiter Notebook是不錯的選擇。
對Java程序員來說,有3款推薦的IDE,分別是Eclipse、NetBeans、和IntelliJ。作者最喜歡的IDE工具是Eclipse。
7、數(shù)據(jù)庫和SQL
SQL已經(jīng)有30年歷史了,已經(jīng)成為經(jīng)典,作者預(yù)測會再火30年。對程序員來說,熟悉SQL數(shù)據(jù)規(guī)范化和表設(shè)計這樣的數(shù)據(jù)庫概念是必須的。
目前主流的數(shù)據(jù)庫軟件有Oracle、MySQL、Microsoft SQL Server、PostgreSQL等等。最重要的一點是要熟悉數(shù)據(jù)庫,包括數(shù)據(jù)插入、更新、刪除和用SQL查詢來提取數(shù)據(jù)。了解join這樣的數(shù)據(jù)庫概念會成為加分項。
8、UNIX (Linux)
和SQL一樣,UNIX也有超過30年的歷史了。因為程序員在大多數(shù)情況下需要在Unix機器上工作,因此了解linux命令行知識是非常重要的。
因為這可以讓你更高效地工作,比如搜索文件、檢查CPU和內(nèi)存使用情況來了解系統(tǒng)運作情況,執(zhí)行基本和高級任務(wù)。
9、OOP編程語言(C 、Java、Python)
作為程序員,了解一些像C 、Java、Python、JavaScript這樣的編程語言是必須的。你可以選擇想學(xué)的語言,但作者個人推薦至少要學(xué)習(xí)和了解Java。
因為Java非常適合初學(xué)者,而且功能非常強大,有許多的庫函數(shù)可以直接使用,從web開發(fā)到大數(shù)據(jù)。
10、網(wǎng)絡(luò)基礎(chǔ)知識
當(dāng)今世界是一個互聯(lián)的世界,計算機網(wǎng)絡(luò)和WiFi遍布學(xué)校、辦公室。大多數(shù)應(yīng)用并不是單機運行的,客戶端-服務(wù)器模式中的客戶端可以通過互聯(lián)網(wǎng)請求從世界上的任意一個地方訪問服務(wù)器提供的服務(wù)和應(yīng)用。
作為程序員,必須要了解開發(fā)和支持應(yīng)用所必須的網(wǎng)絡(luò)基礎(chǔ)。
11、腳本語言
在第8個必備技能中,作者建議開發(fā)人員學(xué)習(xí)編程語言,這里又建議學(xué)習(xí)腳本語言,為什么呢?編程語言可以用作腳本語言嗎?
對OOP編程和python這樣的腳本,這樣的語言是可以做腳本開發(fā)的,但是如果你學(xué)習(xí)的是C/C 或Java,那么學(xué)習(xí)Python或Perl這樣的語言是非常重要的,因為腳本語言更加快捷。
在編程的世界里,腳本語言可以很容易地創(chuàng)建解決常見問題的工具和腳本。學(xué)習(xí)了Python這樣的腳本語言后,就可以輕松地實現(xiàn)日常事務(wù)地自動化。
以上就是作者認(rèn)為程序員應(yīng)當(dāng)學(xué)習(xí)的11個技能。計算機專業(yè)學(xué)生和有志成為程序員都可以根據(jù)以上請單來學(xué)習(xí)以成為一個好的程序員。
原文鏈接:
https://dev.to/javinpaul/11-essential-skills-software-developers-should-learn-in-2020-1bio