写点什么

2020 年开发者应该关注的五大技能

  • 2020-05-04
  • 本文字数:3292 字

    阅读完需:约 11 分钟

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


2020-05-04 07:003782
用户头像

发布了 36 篇内容, 共 19.3 次阅读, 收获喜欢 55 次。

关注

评论

发布
暂无评论
发现更多内容

ARTS-week one

Jokky💫

ARTS 打卡计划

Java是不是慢半拍?

X.F

Java 架构 编程语言

『PyTorch』使用指定GPU的方法

kraken0

人工智能 学习 图像识别

SpringBatch系列入门之Tasklet

稻草鸟人

spring SpringBatch 批处理

产品周刊 | 第 17 期(20200531)

八味阁

产品 设计 产品经理 产品设计 产品推荐

游戏夜读 | 什么是黑色一分钟?

game1night

CEO或业务负责人应该具备的数据分析能力

花生

工具 数据 CEO

学习没进步?也许反馈有问题

KAMI

学习 认知提升

霸榜18年,作者连续20年获得微软MVP,这本SQL书凭什么成为畅销经典

图灵社区

数据库 SQL语法 sql查询

奈学大数据开发工程师分享787个技术,快来收割

奈学教育

大数据

Docker 搭建 Postgres + pgAdmin 环境

姜雨生

Docker DevOps postgres

深入理解ContextClassLoader

Skye

深入理解JVM ContextClassLoader

Vue生成AST算法的解析

djknight

Java Vue AST

redis持久化RDB与AOF

wjchenge

redis

【译】业务转型是什么?

涛哥 数字产品和业务架构

业务中台 数字化转型

深入理解JVM内存管理 - 方法区

Skye

深入理解JVM 方法区 老年代

面试题:教你如何吃透RocketMQ

奈学教育

架构 RocketMQ 架构设计

手机是21世纪最成功的毒品

Neco.W

学习 提升效率 工作

Hive底层执行引擎的深度剖析(免费)

奈学教育

大数据 hive

万恶的NPE如何避免,几种你必须知道的方案!!!

不才陈某

后端

安全做到首位 统信UOS后激勃发

统小信uos

网络安全 操作系统

我们是活着,而不是活过

小天同学

个人感想 生活,随想 随笔杂谈 日常思考

CI/CD - Python Django 项目在 Jenkins 上的实践

meta-algorithmX

Python django TDD CI/CD

撸一串趣图,给晚上加班打个鸡血

码农神说

程序员 加班 段子

运维日志里隐藏的安全危机,你知道怎么挖吗?听听专家怎么说

secisland

态势感知 关联分析 SOC

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十四)编写测试-显示名

编程道与术

Java 编程 TDD 单元测试 JUnit

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十五)编写测试-断言\假设\使测试失效

编程道与术

Java 编程 TDD 单元测试 JUnit

美国黑客曝出政府惊天内幕,看区块链如何解决!

CECBC

CECBC 区块链技术 民生 不可篡改 信息公开

Vim使用总结

JDoe

vim

GcExcel:比 Apache POI 速度更快、性能更高

葡萄城技术团队

Apache POI GCExcel

收藏!如何有效实施devops?

禅道项目管理

DevOps 运维 持续集成 开发 自动化测试

2020年开发者应该关注的五大技能_语言 & 开发_SeattleDataGuy_InfoQ精选文章