写点什么

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:003981
用户头像

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

关注

评论

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

从手工测试到自动化测试进阶,需要学什么?结合自身分享我10+年的测试经验!

伤心的辣条

Python 程序人生 软件测试 自动化测试 接口测试

飞桨云上沙龙——智能制造专场

百度大脑

网站开发进阶(三十六)String.getBytes()方法中的中文编码问题解决总结

No Silver Bullet

编码 5月月更 getBytes

一个小操作,SQL查询速度翻了1000倍。

TiDB 社区干货传送门

gRPC服务开发和接口测试初探【Go】

FunTester

华创视讯加入龙蜥社区,携手共建开源新生态

OpenAnolis小助手

开源 龙蜥社区 CLA 华创视讯 龙腾计划

模块一

Geek_28cf33

文章插图汇总

武师叔

基调听云研发总监杨金全出席CSDN可观测性与APM峰会

基调听云

云原生 APM 可观测性 基调听云

TiKV 缩容不掉如何解决?

TiDB 社区干货传送门

信息系统的建设周期

奔向架构师

信息系统 5月月更

去哪儿网MySQL日志分析实践,80%数据丢失都给你救回来!

Qunar技术沙龙

dba

Hadoop hdfs 的shell操作

Emperor_LawD

hadoop Shell 5月月更

在基础语法中Java与c++有哪些不同?(对于学过c++转Java必看)

工程师日月

c++ java 5月月更

Flutter 组件渲染模式详解

岛上码农

flutter ios 安卓开发 跨平台应用 5月月更

区块链系统开发,交易所交易平台搭建

Geek_56201b

建木持续集成平台v2.3.1发布

Jianmu

开源 DevOps 自动化 持续集成 gitops

恒源云 (Gpushare)_Restormer:用于高分辨率图像重建的高效Transformer

恒源云

人工智能 深度学习 Transformer

企评家|华润三九医药股份有限公司成长性评价报告摘要

企评家

塔米狗企评家 企业评价 企业成长性分析 企评家 企业投资价值评价

从活动能力层建设看业务架构

Qunar技术沙龙

业务架构

Java中容易混淆的基础知识

工程师日月

java 5月月更

开发板上新抢先知!居然可以用来跑游戏?

HarmonyOS开发者

开发板 HarmonyOS

疫情时代如何提高办公效率?

小炮

Redis命令HSCAN踩坑指南

Qunar技术沙龙

dba

技术干货| MongoDB如何查询Null或不存在的字段?

MongoDB中文社区

mongodb

用上这个 Mock 神器,让你的开发爽上天!

Liam

前端 前端开发 Postman Mock Mock 服务

行业案例| MongoDB在腾讯零售优码中的应用

MongoDB中文社区

mongodb

渗透测试工具一一Nmap(从初级到高级)

网络安全学海

网络安全 渗透测试 WEB安全 漏洞挖掘 nmap

LabVIEW仪器控制:智能示波器(普源DS1000E)

不脱发的程序猿

LabVIEW 串口通信 VISA LabVIEW示波器软件

解决方案| 阿里云数据库MongoDB版助力餐道显著提升运维效率,打造卓越餐饮/零售服务

MongoDB中文社区

mongodb

虎符交易所Hoo研究院|币海寻珠 2022年4月下半月区块链投融事件TOP20

区块链前沿News

虎符研究院

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