利用数据分析深入研究IT工作描述及其缺陷

124 阅读11分钟

利用数据分析深入研究IT工作描述及其缺陷。

简介

几周前,我分享了一个交互式网络图,它描绘了工作描述中提到的IT技能的情况。最初的想法是分析IT工作描述,并量化它们有多大的不现实的期望。由于第一步是提取特征(IT技能列表),所以把它放在图表中并分享结果似乎很有趣。在这篇文章的基础上,我现在要看一下IT工作描述中经常包含的(不现实的)期望。

IT技能的网络图(图片由作者提供)

写关于工作描述中不切实际的期望的想法在我心中已经有一段时间了。你经常可以在Twitter或Reddit上看到人们分享荒谬的工作描述截图的帖子。甚至有这么一个人,在他的LinkedIn资料中加入了口袋妖怪,只是为了看看招聘人员是否会注意到。然后在去年,我通过一个共同的朋友认识了一个招聘人员。我问她是否觉得写工作描述很有挑战性,比如说IT,她的知识有限,她回答说:"哈哈,我们不知道,但这并不重要。这很难用语言来表达,但她说这话的时候有一种错位的自豪感,这让我觉得不得不开始查看数据,试图量化这个问题。

在我们深入探讨这个问题之前,我想明确指出,我知道绝大多数招聘人员在帮助我们和我们的雇主找到合适的人选方面做得很好。这个分析是针对招聘人员中的少数人,他们的工作方式......与众不同。

数据

在这个分析中,我使用了一个与网络分析不同的数据集。由于网络分析主要集中在特征提取方面,结构良好的数据非常有用。一旦完成了这个工作,我有了我的特征列表,我就可以使用一个有更多定性信息的数据集,比如完整写出的工作描述和工资。

在Kaggle上,我发现了这个数据集,它是基于Adzuna(英国的一个工作搜索引擎)提供的一个旧的比赛的数据。该数据集包含244768份工作描述,我过滤掉了其中的38483份IT工作。

每条记录由一个工作描述组成,列中提供了以下信息:

  • 地点
  • 公司名称
  • 完整描述
  • 薪资
  • 合同类型/时间
  • 资料来源

数据集的样本(图片由作者提供)

分析

在这个分析中,我们将重点关注三件事:

  • 经验年限
  • 所需技能
  • 典型的 "红旗"。

让我们从经验年限开始:

经验年限

这是从数据中的一个职位描述中摘录的。

"Unix 你是一个初级测试员吗?你有12年的测试经验吗?"

或者这一条呢。

"你将有12年的SAP FI/CO技术层面的工作经验。您将作为初级顾问提供第一和第二层次的支持。他们要求申请人会说英语、荷兰语和法语"

特别是你们中经验较少的人已经看到了许多这样的招聘信息。公司寻找毕业生、初级或入门级的职位,然后要求有不合理的经验。

使用NLTK和Rgex的组合,我试图从每个工作中提取所需的经验年限。一旦我得到这些信息,我就看一下标题,以确定初级和高级职位。这是很简单的,因为我只是把所有在职位名称中带有 "高级 "一词的职位标记为高级职位,对于初级职位,我使用了 "初级"、"入门级 "和/或 "毕业生 "等关键词。

将这些信息绘制成图显示如下:

各类职位要求的经验(图片由作者提供)

结果似乎相当合理。大多数初级职位几乎不需要任何经验。即使有些描述确实要求有远远超过两年的不合理的经验,但这似乎是相当例外的。此外,我还必须补充一点,这个分析中存在一些偏见。一些职位描述中提到了他们公司的经验,比如 "我们在......方面有15年的经验",这也会被脚本拾取。我运行了一些样本,这些错误的识别似乎并不经常发生,但它肯定占了数字的一小部分。

当看到相对的数字时(总的样本包括38000个职位描述),不合理的经验要求的数量是有限的,但仍然令人惊讶的是,近百个初级职位要求至少有5年的经验。

所需技能

图片来源。LinkedIn.com

有些招聘人员喜欢用大网捕鱼。他们列出一堆与职能隐约相关的技术,并希望以此来找到一个候选人。但是,这种懒惰的做法有多频繁呢?我使用了两个不同的指标来量化这一点。

技能总数;通过这个相当简单的指标,我计算了我的网络图中有多少特征(IT技能)出现在一个职位描述中。

技能分离;网络图由通过边连接的节点组成。如果技能密切相关,那么距离(形成连接的边的数量)就会很短。然而,如果技能之间没有任何关系,比如说MongoDB和Photoshop,那么需要覆盖的距离就会长很多。

网络路径长度和技能关系(图片由作者提供)

利用这一原则(和一些额外的参数),我通过使用最短路径中使用的边与节点总数的比率来计算不同技能的实际分布情况。

简而言之;数值为1意味着所有技能都密切相关。数值越高,意味着技能之间的关系越小。

将这两个指标结合起来,可以得到以下结果。

检测具有大量不相关技能的职位描述(图片由作者提供)

总的来说,结果不是那么糟糕。大多数职位描述都没有列出过多的技能,而对于那些列出的技能来说,这些技能是高度相关的。然而,在红色区域,有一些职位描述既有大量的技能(超过15种),又有不紧密相关的技能。在这里,你可以找到一个红色区域中这些数据点的例子。

Java/Spring开发人员 [...] 需要的关键技能。敏捷的工作实践 现代操作系统(内核和用户空间,内存管理,文件系统,基本的网络服务,用户 ) 消息驱动架构(最好是JMS和/或AMQP) ANSI SQL(最好是由大型RDBMS之一实现:Oracle数据库,MS SQL Server,PostgreSQL) Java EE Servlet容器或应用服务器(如Tomcat) 理想的技能。Spring Framework UNIX / Linux / OS X(良好的命令行技能(例如,为我找到所有昨天修改的、包含符合某种正则表达式的文本的文件),文件系统结构,守护程序)Maven、Spring Security Akka Groovy(Groovy语言);Grails Scala(函数式编程、Scala演员);将Scala与Spring应用集成 ObjectiveC(特别是用于iOS编程) CSS、JavaScript(jQuery优先) Ajax Ruby on Rails [...]

我必须承认,我的Java能力至少可以说是基础,这让我有点难以理解这些技能要求。但是,Java、Oracle、SQL、PostgresQL、ObjectiveC、Linux、Scala、Javascript、CSS、Ruby on Rails等等,似乎对开发人员的技能要求范围很广。

在我们讨论 "红旗 "之前,请记住,这个分析是基于我用于网络图表的技能。这意味着许多不在网络图中的其他IT技能并没有在这个分析中得到体现。在现实中,这些数字会更高。

典型的 "红旗"

很多社会媒体都提到工作描述中的典型 "红旗"。红旗被认为是诸如能预测低工资或不良工作环境的关键词。在滚动浏览了r/recruitinghell之后,我能够起草一份将成为红旗的关键词清单。利用这个列表,我看了一下包含这些关键词的职位描述的平均工资与总体平均工资的对比。

流行语和平均工资(图片由作者提供)

在这些关键词中,有很多似乎与工资有明显的关系,特别是_忍者_、Gogetter 和临时性的_职责_。但正如你所知,相关关系并不总是因果关系。可能有许多其他的变量在起作用。例如,这些流行语经常被创业公司使用,而众所周知,这些公司的工资较低。

其中一个有趣的关键词是 "激情 "或 "热衷于"。我使用一些重合词和NLTK,将雇主希望你有激情的最常见的事情可视化。

招聘人员认为你应该有激情的事情(图片由作者提供)

你可以争辩说,生活中还有更多令人兴奋的事情可以让你充满激情,但话说回来,我是一个在空闲时间为这个分析写代码的人,所以我有什么资格去评判¯\_(ツ)_/¯。

结论

总体上不坏

总的来说,它并不那么糟糕。绝大多数的职位描述似乎都有现实的要求(或者至少按照本分析中的衡量标准),而且写得很好。要求的经验似乎与头衔相符,"红旗 "或流行语的数量有限,要求的技能数量合理且相关。

就像许多数据问题一样,有一个暴露的偏见,即不好的例子会得到很多关注,这就产生了景观做得不好的想法。

但是,当它是坏的,它是真的坏

如前所述,总体而言,事情没有那么糟糕。然而,当事情变得糟糕时,它们往往会变得非常糟糕。初级职位需要长达15年的经验,职位描述中列出了超过15种技能,而这些技能之间甚至没有任何联系,......这样的例子对招聘行业来说不是一个好现象。在找工作时,看到这样的广告会让人非常沮丧,所以我们能把它们标为例外是件好事。此外,在这个社交媒体的时代,这些糟糕的例子经常被分享到各种平台上,为撰写职位描述的人带来了回弹效应。

桌子在转动

图片来源:giphy.com

事情正在发生变化。技术正在颠覆很多行业,招聘工作当然也是其中之一。这场颠覆运动的趋势之一,往往是砍掉中间人,用数字流程取代他/她。缺乏对角色和技能的理解的糟糕的职位描述往往是由第三方招聘人员写的。像LinkedIn这样的在线平台可以帮助连接雇主和候选人,而不需要中间人将两者联系起来。寻找工作对候选人来说是一个累人的过程,对公司来说是一个昂贵的过程。有很大的改进空间,所有相关方都会从中受益。

进一步的研究和改进

一如既往,一些改进点和未来研究的主题。

  • 改进技能清单。如上所述,技能清单是基于我为网络图提取的特征。尽管我对这个列表很满意,但它还远远不够完整。许多重要的框架/技术/库被遗漏了,它们可以为所需技能的分析提供关键性的见解。
  • 包括其他变量。薪水并不是工作满意度的一个重要指标。如果我能够以某种方式得到一个包含工作描述的大数据集,其中包括上述职位的留任率等数字,就能形成一个非常强大的分析。如果能将工作的描述与候选人的经历直接联系起来,就能很清楚地看到措辞的影响。
  • 看看其他行业。目前的分析只着眼于IT行业的工作环境。对我来说,这是一个熟悉的游乐场,这使我更容易看清数据。当然,这只是工作环境的一小部分,如果能看一下其他行业就更好了。
  • 更大、更好的数据。我知道我倾向于对几乎所有的分析/报告说这个,但它(几乎)总是适用。更多和更好的数据将改善分析。不幸的是,要找到巨大的(免费的)和最近的工作描述数据并不那么容易。

技术栈

数据分析(Python):pandas, numpy, regex, word2number, nltk和networkx

数据可视化(Python):matplotlib、seaborn和wordcloud