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