我们的现状
作为一名运维工程师,我们有着大堆的技术要研究。除了需要熟练数据库、网络、虚拟化、监控、服务器、备份等等常见技术,还要略懂PHP、JVM、AWS、JIRA等等这些环境以及调优、问题排查。
总之,各种技术一大堆,都需要我们研究。
面对的问题
可是我们的时间和精力是有限的。有些技术,对于运维工程师来说,并不是十分重要的。这些技术的ROI(投入产出比)是非常低的。
例如PowerShell脚本,对于运维工程师来说,花费时间研究PowerShell脚本,不如花费时间研究Linux Shell脚本。
因此,我们应该把精力放在那些,对于运维工程师,更广、更常见、更经久不衰的技术上。
本文目的
我们试图从技术的海洋中,找到运维工程师更应该关注的技术。
我们做了什么?
为了找到“那些技术”,我们从招聘网站中爬…………哦,不…………整理了所有“运维工程师”职位数据。
我们尝试从所有企业的招聘信息中,找到那些出现频率最高的技术关键词。这些技术也一定是大多数企业所需要的。
这些技术的收入不一定是最高的,关于薪资我们也会进行分析。我们也会找到各个薪资段中,对技术方向的要求。
如何处理数据呢?
首先,我们只过滤了职位描述中的英文及数字。为什么?(1)大多数中文描述内容都类似于“掌握容器技术”、“监控服务器的运行状态、系统性能”、“熟悉各云平台产品”等等,太过于笼统,没有指出具体技术要求。(2)某些任职描述偏向于品质,比如“有较强的抗压能力、沟通能力”、“较好的服务意识”等等,这些内容会影响到我们数据分析,因为我们分析的重点是技术。(3)还有一些描述,形如“高可用”、“监控”、“日志”等等,没有涉及具体技术的,都可视为干扰。例如高可用,当我们谈论它的时候,一定是某个服务的高可用,而不会说“如何搭建高可用”。
其他,我们将英文转为小写,并去除单个技术术语中的空格。比如SQL Server则转化为sqlserver形式,防止它被分解成SQL与Server两个词。
技术关键词的词云
首先让我们来看看词云图:
借助上面的词云图,我们“大致”可以得到以下几点结论:
(1)经常会有术语拼写错误的情况。比如“Rsync”写成“Rync”,这是我亲眼所见。
(2)而Linux则是运维工程师永恒的话题,当然这就要提一下CentOS发行版了。
(3)最显眼的几个词:Linux Python Shell MySQL Zabbix Jenkins Redis Nginx ELK Docker Kubernetes等等吧
(4)令人以外,但是情理之中的是Ansible居然比SaltStack的比重高,而Puppet是最少的。
当然这只是表面上,我们还要分析它们各自的比重。
技术关键词的饼图
下面是关键词的饼图,我们只取了前20名(这前20名足够我们喝一壶的了):
当然,要掌握的技术除了这Top 20外,还有与其周边技术(这一有一点小失误,图中TCP、IP部分,实际上是TCP/IP,没有单独进行处理)。
!!!明年三、四月份,我们还会进行一次统计,将结果与此次的饼图对比,找到这其中的技术变化趋势。
各薪资段的技术关键词
当然这也是大家最关心的部分。到底掌握哪些技术才能拿到高薪。
很显然,直接分析各薪资段的技术要求是没有意义的。因为每个城市的薪资水平不同。三线城市的10K薪资与一线城市的10K薪资,二者对技术能力要求是不同的。
因此,我们以城市为单位进行了统计分析,包括北京、上海、广州(深圳)、杭州。将薪资划分为五个段落,分别是5k-10k、10k-15k、15k-25k、25k-50k、50k以上。而薪资通常是范围,我们取了范围的中位数。
先说结论
# 要懂得多:结果非常符合运维工程师岗位特点:要懂的多,要会的多。薪资越高,技术关键字越多。
# 走向精通:当薪资没有超过10K时,技术要求很低。当薪资超过10K之后,基本上所有的关键字都冒了出来。从侧面可以推测,薪资水平越高,对技术熟练读要求越高(这一点可以通过岗位描述中的“掌握”、“熟练”、“精通”等词汇的频率进行验证)。
# 关注重点:我们并没有得到薪资与技术之间的关系。对于运维工程师这个岗位来说,还是要懂的多,但是依旧要有重要的关注点。像OpenShift、Mesos、PowerShell等等,我们可以稍微降低关注度,将更多的精力放在Kubernetes、Docker、ELK等技术上。