算法工程师和前端工程师的社招求职分析
背景
从自身职业发展的角度出发,想了解一下算法工程师和前端工程师的薪酬分布情况,包括工作年限、学历、公司融资情况、公司规模、城市,以及工作岗位在地理上的分布情况。
本次报告只是在拉勾网爬取近几天的 JD,只能简单做一个玩具版的分析,后期可定期爬取数据,复用相同的预处理方式和代码做完整的求职分析。
假设
- 招聘岗位的薪酬会随工作年限增长而增加,增加速度趋缓,且会出现两极分化。
- 学历上,大专和本科差距较大,本科和硕士没有明显区别。
- 公司融资的轮次越多,提供的薪酬越高。
- 公司规模对薪酬影响不大。
- 薪酬/岗位数量,北京>上海>杭州;
- 工作机会会聚集在城市的几个聚集区。
过程和结论
采集数据
用后羿采集器采集拉勾网的招聘数据,根据需求对数据做一些限定。
- 需要找社招的招聘信息:把工作经验限制在 1-10 年
- 只想了解北上杭的招聘:限制城市
- 排除占比较的的质量较差的招聘:限制融资情况
智能爬取模式对网页元素的定位可能会有问题,例如将拉勾网招聘条目的标签分开。在后羿采集器中合并标签,并在数据处理功能中删除换行。
后羿采集器支持批量爬取,最后爬取了北京/上海/杭州三地的「前端」和「算法」两个岗位的招聘信息。如果直接用「算法工程师」筛选,会遗漏一些招聘,用「算法」筛选会把类似「算法讲师」包含进来,所幸无关数据不多,可预处理的时候删除。
数据预处理
导出数据,再把 Excel 文件里面的「,」换成「、」,之后导出 CSV 格式。
去重之后只有 1844 条记录,可以直接用 VSCode 打开,用正则表达式来清洗数据。主要是将工作经验、学历、薪酬、融资情况、公司规模和行业这些字段拆分出来,把薪酬变成数字的格式。处理后的部分结果如下。
预览数据
用 pandas 读取 csv 文件,数据很完整,只有标签字段有数据缺失,影响分析。
对数据进行分组统计,计算每组数据的个数,个数太少的分组可以剔除。
过滤掉工作经验「1 年以下」和公司规模「少于 15 人」的记录。再去掉「不限」学历。
薪酬分析
工作机会分布情况
不同城市的工作机会分布
- 前端工程师:北京>杭州>上海
- 算法工程师:上海>北京>杭州
3-5 年经验是拉勾网社招的招聘热门。
算法工程师的学历起点是本科,前端工程师大部分招聘也都要求本科。
上市公司释放的岗位较多,猜测互联网以外的行业也开始大量招聘程序员了。
规模越大的公司释放的岗位越大,小公司的数量不足以弥补规模上的差距。
薪酬按工作年限分布
-
相同工作经验,相同城市,算法工程师的薪酬大约比前端工程师高 60%,猜测其中可能的原因除了岗位本身的差异,还有两种岗位的学历要求不一样,还需要限定学历条件来分析。
-
前端工程师,相同工作年限,不同城市的薪酬存在差异
- 最低和最高薪酬方面,1-3 年,均是北京>上海>=杭州
- 最低和最高薪酬方面,3-10 年,均是北京>上海=杭州
-
算法工程师,相同工作年限,不同城市的薪酬也出现差异
- 最低和最高薪酬方面,1-10 年,均是上海>=北京>杭州,出乎意料上海的薪酬比北京略高,背后原因有待挖掘。
-
随着工作年限的增长,薪酬有所增长,但 1-3 年到 5-10 年的涨幅不到一倍,且薪酬上限平均值全场最高的上海 5-10 年算法工程师也只有不到 60K。猜测资深工程师(P6+)及以上级别的招聘渠道可能主要走其他招聘渠道。
前端工程师和算法工程师确实存在工种之间的薪酬差异,之前猜测的有学历成分不同的影响甚微。
薪酬按学历分布
- 前端工程师的薪酬受学历影响,本科>大专。
- 算法工程师的薪酬在本科和硕士之间没有明显差异,博士的薪酬略高于本科和硕士。
薪酬按公司融资情况分布
由之前的分析发现,拉勾网更适合分析 1-5 年的社招情况,不太适合分析 5-10 年的社招情况,这里不再关注 5-10 年的情况。
- 1-3 年工作经验,D 轮及以上的公司薪酬明显高于其他类型的公司。
- 上市公司比较看重工作经验。
- 天使轮的公司也较看重工作经验。
薪酬按公司规模分布
- 2000 人以上的公司薪酬明显高于其他规模的公司。
分析岗位在地理上的分布
前端和算法工程师的工作地点主要集中在余杭区、西湖区和滨江区。
下一步取例如「西溪」、「西兴」这类区域名称的前五个,查询具体坐标,按统计数量作为半径权重在地图上表示。
在地图上可以看出,西溪、古荡一带高校较密集的区域工作机会较多,其次是滨江区和阿里总部所在的仓前街道。
这一块之后可以取更详细的地址,用大的数据样本绘制。
词云分析标签的福利
公司福利词云
对算法工程师 JD 中的福利生成词云,可以明显看出六险一金、五险一金、股票期权、发展空间等是常见福利。
标签词云
行业词云
主要的行业是咨询、短视频、软件服务、内容资讯、人工智能服务等。
思考
本篇社招求职分析报告最大的问题是数据量只抓取了拉勾网近期的 JD,数据量不足导致分组统计时每组的数据量太少,容易受极端值影响,例如字节跳动发布的大量 JD 可能会影响 D 轮及以上公司和 2000 人及以上公司的统计值。其他的问题和疑惑如下:
- 由于数据源问题,较高端的 JD 质量不好,需要通过其他途径补充数据。
- 薪酬只是从 JD 获取,是一个区间,与入职的具体薪酬还是有差别,而且现金津贴和奖金两块的金额无法获取。
- JD 中对于工作经验的要求是以工作年限的方式呈现,如果有咨询公司发布的薪酬报告里通常采用的职级(初级、高级、专家等)会更好,也容易和正规薪酬报告比较。
- 工作机会分布图可以进一步优化。
本篇社招求职分析报告的优点是整个分析流程清晰且可以用批量处理或代码实现。因此后期如果定期爬取拉勾网数据,可以较快的更新报告,也方面迭代更精确的结果。
Changelog
- 2021-05-23 重新考虑统计偏差问题,添加地理分布和词云
- 2021-05-22 初稿