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