阿里、微众、PingCAP专家分享如何解决可观测性带来的埋点成本上升、观测数据割裂等挑战。戳 了解详情
写点什么

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

  • 2020 年 5 月 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 年 5 月 04 日 07:002702
用户头像

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

关注

评论

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

GPU不可不知的指标项

AIWeker-人工智能微客

人工智能 gpu 5月月更

剧透!2022开发者关注的开源技术全解析

华为云开发者联盟

开源 mindspore kubeedge OpenHarmony open Euler

企业网站该怎样选择网站域名?

源字节1号

软件开发

洞见科技数据科学家王湾湾:隐私计算助推金融业数字化转型

洞见科技

数据挖掘 金融科技 隐私计算

静亦求精,罗技MX高性能键鼠组合上市!

Geek_2d6073

TDengine 社区问题双周精选 | 第一期

TDengine

数据库 tdengine

青藤《关键信息基础设施增强保护安全实践》论文入选中国科技核心期刊

青藤云安全

信息安全 关键信息 安全保护

数据治理项目调研环节思考

agileai

项目管理 数据中台 数据仓库 数据治理 主数据

如何实现客户自助服务?打造产品知识库

小炮

知识库

使用 Amazon DevOps Guru for Serverless 自动检测 Lambda 函数中的运行问题

亚马逊云科技 (Amazon Web Services)

DevOps Lambda severless

墨天轮高分技术文档分享——Oracle升级迁移篇(共96个)

墨天轮

MySQL 数据库 oracle postgresql 国产替代

国内私有云厂商有哪些?排名怎么样?

行云管家

网络安全 私有云 私有云厂商

错过了太后悔,九大绝招大公开,详解华为低时延技术

华为云开发者联盟

云计算 音视频 华为云

Seektiger DAO的共识增长计划 锁仓STI长线价值投资

威廉META

leetcode 69. Sqrt(x) x 的平方根(简单)

okokabcd

LeetCode 查找

发现一个开源项目优化点,点进来就是你的了

捉虫大师

开源 性能优化 sentinel 5月月更

单机GPU云服务器的深度学习训练和预测模型分析

Finovy Cloud

云服务器 GPU服务器

DCM:一个能够改善所有应用数据交互场景的中间件新秀

华为云开发者联盟

数据处理 数据交互 多样性数据源 DCM

主管发话:一周搞不定用友U8 ERP跨业务数据分析,明天就可以“毕业”了

葡萄城技术团队

数据分析 BI 用友

EAM系统解决方案

低代码小观

资产管理 企业管理系统 企业设备管理 设备巡检管理系统 企业管理软件

极客星球 | 机器学习赋能商业地产决策进阶

MobTech袤博科技

乏善可陈的Neuralink

图灵教育

直播预告 | 服务网格规模化应用下的 Istio Sidecar 灵活配置实践

阿里巴巴云原生

阿里云 云原生 直播 服务网格 Istio Sidecar

离线数仓建设,企业大数据的业务驱动与技术实现

数栈DTinsight

打开人工智能“黑盒”,发展可解释、可扩展、可信赖、安全可靠的人工智能

博文视点Broadview

有没有支持vmware/openstack/zstack私有云的堡垒机?

行云管家

私有云 云服务器 堡垒机 行云管家

Wallys/QCN9074 /11ax/ 4x4 /5G M.2

wallys-wifi6

QCN9074 11 ax

Spring Cloud OpenFeign 的 5 个优化小技巧!

王磊

SpringCloud

Techo Day 腾讯技术开放日「轻量级云开发与云应用」

Techo Day 腾讯技术开放日「轻量级云开发与云应用」

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