写点什么

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

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

关注

评论

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

八股MQ007——浅谈Broker的网络架构

Codyida

后端、

开源字节数字化乡村系统

源字节1号

开源 软件开发 小程序开发

谷歌全线反击!PaLM 2部分性能已经超越GPT-4

引迈信息

低代码 Google ChatGPT JNPF PaLM 2

如何使用apache的ab压力测试小工具传参数

北桥苏

AB apche A/B 测试

MySQL表分区的选择与实践小结

北桥苏

MySQL 表分区

中馥科技集团成为五粮液社交零售战略合作伙伴,强强联手布局白酒赛道

电子信息发烧客

PHP简单实现异步多文件上传并使用Postman测试提交图片

北桥苏

php OSS thinkphp

网心科技荣获第二十届“深圳知名品牌”荣誉称号

网心科技

iOS MachineLearning 系列(15)—— 可进行个性化更新的CoreML模型

珲少

从立项到发布仅三个月,开源技术问答社区 Answer 是如何诞生的?

万事ONES

聆心智能联合洪恩打造“AI问答”|国内首批儿童启蒙成长领域类ChatGPT式应用

硬科技星球

如何向大模型ChatGPT提出问题以获得优质回答:基于AIGC和深度学习的实践指南

GPU算力

IOS技术分享| 快对讲2.0会议场景实现

anyRTC开发者

ios 音视频 视频会议 移动开发 快对讲

在行 | “数智”为离散制造发展注入动能

用友BIP

Android 14 Beta 正式亮相, OPPO 连续五年稳居适配第一阵营

科技热闻

JMeter笔记5 |Badboy使用和录制

Jmeter 性能测试 自动化测试 接口测试 脚本录制

让开发者成为创新主体 | 阿里云云原生4月动态

阿里巴巴云原生

阿里云 云原生 月报

“三问五步”落地医疗行业数据安全建设体系|盾见

极盾科技

数据安全

解决centos的mysql服务3306端口无法远程连接10038问题

北桥苏

MySQL 安装宝塔

购买小间距led显示屏需要注意什么?

Dylan

图像 像素灰度 LED显示屏

从“能用”到“好用”:它的出现,解决你80%的转型困境【内含免费试用附教程】

加入高科技仿生人

低代码 数字化业务转型 数字转型

共筑数字化未来 金山办公携手华为云完成文档中心和GaussDB适配

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

提升打字速度,Master of Typing 3中文很简单~

真大的脸盆

Mac Mac 软件 打字练习 打字软件

来了!昇腾MindStudio全流程工具链分论坛精彩回顾,助力高效开发和迁移效率提升

极客天地

数据剖析更灵活、更快捷,火山引擎DataLeap动态探查全面升级

字节跳动数据平台

流控验证太麻烦?不敢上生产?MSE 有办法!

阿里巴巴云原生

阿里云 微服务 云原生 Spring Cloud Apache Dubbo

Prompt learning 教学[基础篇]:prompt基本原则以及使用场景技巧助力你更好使用chatgpt,得到你想要的答案

汀丶人工智能

人工智能 自然语言处理 深度学习 ChatGPT prompt learning

泰裤拉,安卓反编译居然可以这么简单——Jadx

吴脑的键客

瓴羊Quick BI数据可视化打造看板,助力极氪汽车决策

夏日星河

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