![880ace035843d4b5f4a57016493223cb.png](https://i-blog.csdnimg.cn/blog_migrate/7a90a1ec878208897b3bf523a24a58a6.jpeg)
作者 | javinpaul
译者 | 张涛
责编 | Carol
本文分享作者认为每个程序员在2020年需要了解或学习的技巧。其中编程语言包括C++、Java,必需的计算机概念包括数据结构、算法和计算机网络概念,工具包括Git、Docker、Kubernetes和容器,云计算概念和平台包括AWS、GCP、Microsoft Azure,常青树技能包括SQL和UNIX,编辑器包括Eclipse、Visual Studio,文本编辑器包括VIM和NotePad++等。
本文提供的列表可能并不完整,但为程序员需要知道的技能提供了一个好的起点。如果你有志于软件开发职业或想找编程方面的工作,那么本文的内容是你所需要知道的,并且可以用来提高竞争力。
![ba709d793beabe76ade2eb4b79495b5d.png](https://i-blog.csdnimg.cn/blog_migrate/bec26ebbd64c8f0e732b5f02e38c39c7.jpeg)
废话少说,这里列出了一些我个人认为每个程序员都应该知道的技能,不管他从事的是什么工作。这些都是必要的技能,并且长期为你受用。任何在时间、金钱和努力方面的投资都会帮助你在整个职业生涯中获得回报。
2020软件工程师必备的11项技能
1、容器(Docker和Kubernetes)
在2020年,作者认为程序员、软件工程师、数据科学家,甚至项目管理人员都应该了解一些Docker和Kubernetes这样的容器和工具的相关知识。
Docker这样的容器不仅可以帮助开发者在统一环境下测试有用,但是可以简化部署过程。在Docker的帮助下,不仅可以快速部署应用,还可以提供进程隔离。与Docker类似,Kubernetes是一个容器工具,可以帮助管理容器。
也就是说,你无需担心应用的可扩展性,因为Kubernetes或K8s 可以自动解决这一问题。研究人员建议开发人员在2020年学习Docker和Kubernetes。
![f861db2b73695377041a58e4b9dcf8a3.png](https://i-blog.csdnimg.cn/blog_migrate/3bebd24110df546228597e6899e17cc2.jpeg)
2、云平台(AWS、GCP、Azure)
除了容器外,云计算是另一个软件工程师和数据科学家2020年需要学习的知识。由于云计算的低成本和良好可扩展性,不同领域和规模的企业都在迁移到云平台,也就是说你迟早需要与云应用打交道。
对数据科学、机器学习和人工智能领域来说,更是如此。因为只有云平台才能提供模型所需的计算能力。Amazon Web Service (AWS)、Google Cloud Platform (GCP)和Microsoft Azure是常见的云平台,但你无需学习全部,学习一种就可以对其他平台的知识有一定的了解。
研究人员建议从学习AWS开始,因为AWS是最主流和最成熟的云平台之一,而且业界对拥有AWS知识的开发人员和系统管理员都有大量的需求。
![c4e2e986258ffae9e075afa1f9e1b209.png](https://i-blog.csdnimg.cn/blog_migrate/3253a1b1b1610af725a6783052f20104.jpeg)
3、数据结构和算法
如果你想成为一个程序员,那么必须要了解数据结构和算法。因为这是所有编程工作面试的主要论点,没有数组、链表、图、集合这样的基本数据结构知识,是不可能开发出现实的应用的。
这也是为什么每个程序员在计算机科学课程中有大量的数据结构和算法的课程。
![b7f824edfcdf595e8af622a7b05d15f7.png](https://i-blog.csdnimg.cn/blog_migrate/5ca11654422a5277d27bcc905d9f1d7d.jpeg)
4、版本控制工具(Git)
源控制是用来保存代码的,如果你想成为程序员或软件工程师,那么必须要了解Git和SVN这样的版本控制工具。
目前有超过70%的组织使用Git,因此研究人员也建议从学习Git开始。
![3a30b291570f3f3080b14a607fa59210.png](https://i-blog.csdnimg.cn/blog_migrate/4b2f60544c5e10c8b5b47b9dbbc65622.jpeg)
5、文本编辑器(VIM)
作为程序员,每天都会使用文本编辑器。甚至有些非程序员也会每天都使用文本编辑器。研究人员常用的两款文本编辑器是NotePad(Windows)和VIM(Linux)。
目前,文本编辑器的选择很多,研究人员推荐Sublime和NotePad++这些提供IDE功能的高级编辑器。
![e6ed0e869afd5e556e4055a97a3464b9.png](https://i-blog.csdnimg.cn/blog_migrate/e3f0354341498c1522fdcb2ec7b92aa8.jpeg)
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。
![77be45464a638d553dda9c2dabb61f8c.png](https://i-blog.csdnimg.cn/blog_migrate/04ad7fad032f1f938fe9389884f2f0b6.jpeg)
7、数据库和SQL
SQL已经有30年历史了,已经成为经典,作者预测会再火30年。对程序员来说,熟悉SQL数据规范化和表设计这样的数据库概念是必须的。
目前主流的数据库软件有Oracle、MySQL、Microsoft SQL Server、PostgreSQL等等。最重要的一点是要熟悉数据库,包括数据插入、更新、删除和用SQL查询来提取数据。了解join这样的数据库概念会成为加分项。
![eeca33184927c9f8b58d61465314e87d.png](https://i-blog.csdnimg.cn/blog_migrate/e1222b11c086e51aecc605da93db0df8.jpeg)
8、UNIX (Linux)
和SQL一样,UNIX也有超过30年的历史了。因为程序员在大多数情况下需要在Unix机器上工作,因此了解linux命令行知识是非常重要的。
因为这可以让你更高效地工作,比如搜索文件、检查CPU和内存使用情况来了解系统运作情况,执行基本和高级任务。
![3e8570b36433cb34080832bb74288765.png](https://i-blog.csdnimg.cn/blog_migrate/808e72bded487cbdf638e9a34a2ca665.jpeg)
9、OOP编程语言(C++、Java、Python)
作为程序员,了解一些像C++、Java、Python、JavaScript这样的编程语言是必须的。你可以选择想学的语言,但作者个人推荐至少要学习和了解Java。
因为Java非常适合初学者,而且功能非常强大,有许多的库函数可以直接使用,从web开发到大数据。
![0a78b2fee4ef7345c36d3794faee1518.png](https://i-blog.csdnimg.cn/blog_migrate/49330334477e30345f13127425354914.jpeg)
10、网络基础知识
当今世界是一个互联的世界,计算机网络和WiFi遍布学校、办公室。大多数应用并不是单机运行的,客户端-服务器模式中的客户端可以通过互联网请求从世界上的任意一个地方访问服务器提供的服务和应用。
作为程序员,必须要了解开发和支持应用所必须的网络基础。
![76cde7d3d2f28e77caed56060beeeee5.png](https://i-blog.csdnimg.cn/blog_migrate/2fcd328fa0bb171b3c4162af44032398.jpeg)
11、脚本语言
在第8个必备技能中,作者建议开发人员学习编程语言,这里又建议学习脚本语言,为什么呢?编程语言可以用作脚本语言吗?
对OOP编程和python这样的脚本,这样的语言是可以做脚本开发的,但是如果你学习的是C/C++或Java,那么学习Python或Perl这样的语言是非常重要的,因为脚本语言更加快捷。
在编程的世界里,脚本语言可以很容易地创建解决常见问题的工具和脚本。学习了Python这样的脚本语言后,就可以轻松地实现日常事务地自动化。
![bbac78abfdca41a31cf0f5f005d53353.png](https://i-blog.csdnimg.cn/blog_migrate/5a13c209b06f3e24622e498019e93b88.jpeg)
以上就是作者认为程序员应当学习的11个技能。计算机专业学生和有志成为程序员都可以根据以上请单来学习以成为一个好的程序员。
原文链接:
https://dev.to/javinpaul/11-essential-skills-software-developers-should-learn-in-2020-1bio