Аналитика для хантинга аналитиков
Ранее я уже писал об интерактивном дашборде "Анализ рынка вакансий аналитики и BI" – совместный проект Романа Бунина и Николая Валиотти. Сейчас авторы сделали его в виде карточек по разным направлениям аналитики – удобно сравнить разные профессии (см. Карточки на Табло Паблик). Необходимо учитывать, что это вакансии для Москвы и Питера по данным HH, а зарплаты указаны средними "чистыми".
Не так давно я нашёл исследование "Аналитика для хантинга аналитиков (продуктовых, маркетинговых и data scientists)" от команды хантинг-агентства NEW.HR.
Данный материал-лонгрид (!) уже основывается на данных, полученных авторами напрямую у кандидатов из разных продуктовых IT и Digital-компаний и не находящихся в активном поиске работы (Москва, либо удаленный формат работы в московских компаниях). В исследовании рассматривается (см. ссылки 1 и 2):
- сколько денег хотят аналитики, которые не ищут работу и как можно повлиять на их мотивацию
- что может влиять на стоимость аналитиков (факторы, повышающие ценность на рынке труда)
- основные компетенции аналитиков разного уровня
- какие типовые задачи решают аналитики разных специализаций и какими инструментами пользуются и т.п.
Меня больше заинтересовали графики, которых много, они также есть в самой презентации, состоящей из 83 слайдов с оглавлением 😱:
В отчёте представлено сравнение максимальных и минимальных значений зарплатных ожиданий аналитиков (кандидатов, не находящихся в активном поиске работы) в виде сгруппированной столбчатой диаграммы:
Как изящно визуализировать разницу между двумя показателями? Традиционный excel-style – выбрать сгруппированную столбчатую диаграмму (grouped bar chart). Столбчатые диаграммы могут быть не всегда идеальным вариантом визуализации данных, особенно когда у вас есть значения, которые очень близки друг к другу, то становится очень сложно визуализировать разницу между столбцами.
Точечный график это одна из моих любимых альтернатив сгруппированной столбчатой диаграмме. Точечные графики предложил Уильям Кливленд (Cleveland W.), один из пионеров исследований в области визуализации данных. В своей работе, написанной в соавторстве с Робертом Макгиллом (Robert McGill), У. Кливленд экспериментально показал, что столбиковые диаграммы, используемые для изображения сгруппированных значений количественных переменных, визуально плохо воспринимаются людьми (см. Cleveland W. S., McGill R. (1984) Graphical perception: theory, experimentation, and application to the development of graphical methods. Journal of the American Statistical Association 79(387): 531-554). В качестве альтернативы и были предложены точечные диаграммы. Точечный график использует точки, соответствующие значениям данных, иногда соединяемые линиями или стрелками.
Разновидность точечного графика – диаграмма гантелей (dumbbell chart) или иногда называемой диаграммой разрыва (gap chart), можно также встретить название "диаграмма ДНК" (в силу похожести на спираль ДНК):
Диаграмма гантелей – точечная диаграмма, в которой две точки соединены линией, что означает изменение (размах, диапазон, разницу) между двумя точками данных для каждого измерения. Точки данных соответствуют одной оси, а группы – другой, которые не обязательно должны быть упорядочены определенным образом, хотя сортировка может значительно улучшить восприятие визуализации. По сравнению с обычной столбчатой диаграммой гантельная диаграмма относительно более визуально привлекательна и выглядят намного чище, так как требует меньше чернил и меньше места (см. data-ink ratio или соотношение данных и чернил, предложенное Эдвардом Тафти). См. также 50 примеров точечных графиков для вдохновения.
Попробуем по-другому визуально представить зарплатные ожидания маркетинговых аналитиков.
Для этого воспользуемся данными из этой таблицы в PDF-отчёте:
Мы могли бы вручную скопировать данные из таблицы, но техника "копи-паст"– не инструмент настоящих аналитиков. Всё будем делать с помощью R, тем более, что есть специализированный пакет tabulizer для извлечения текста/данных из PDF.
# Извлекаем таблицу с мин и макс ЗП ожиданиями из PDF-файла презентации # remotes::install_github(c("ropensci/tabulizerjars", "ropensci/tabulizer")) library(tabulizer) library(tidyverse) library(glue) library(ggtext) library(showtext) library(here) library(ragg) # Загружаем PDF-файл презентации pdf_link <- "https://vacancy.newhr.ru/data/data/salary/HeadHunting_analytics_salary_IT-Digital_2020_from%20New.HR.pdf" out <- extract_tables(pdf_link) # Сохраняем исходник # saveRDS(out, "data_source.Rds") # сохраняем исходник # out <- readRDS("data_source.Rds") # загружаем локально исходник header <- out[[1]][3, 2:6] temp_table <- as.data.frame(out[[1]][4:20, 2:7]) #менеджеры и аналитики tbl_01 <- temp_table[1:4,] names(tbl_01) <- c("jobs", header) tbl_01Аналитика для хантинга аналитиков — Teletype Head | Chief`[1] <- tbl_01$Lead[1] tbl_01$group <- "Аналитики" tbl_01$group[1] <- "Менеджеры" # разработчики tbl_02 <- temp_table[5:16, 2:5] names(tbl_02) <- c("jobs", header[-c(1, 5)]) tbl_02$group <- "Разработчики" # CTO tbl_03 <- temp_table[17, 1:2] names(tbl_03) <- c("jobs", "Head | Chief") tbl_03$group <- "Директор" data_final <- bind_rows(list(tbl_01, tbl_02, tbl_03)) data_final <- data_final %>% pivot_longer(-c(jobs, group), names_to = "exp", values_to = "wage") %>% na.omit() %>% separate(wage, into = c("min", "max"), sep = "-") %>% mutate_at(c("min", "max"), as.numeric) %>% mutate( dif = max - min, percent = round((max - min)/min * 100), percent_text = paste0("+", percent, "%")) data_final$exp <- factor(data_final$exp, levels = header) data_final
Мы извлекли исходную таблицу с данными из PDF-отчёта, дополнив её несколькими расчетными столбцами (разница между макс и мин ЗП в абсолютных и % значениях):
Теперь можно визуализировать данные по отдельным категориям аналитиков.
# Загрузим шрифт для графика font_add_google("Istok Web", family = "Istok Web") font <- "Istok Web"
data_final %>% filter(jobs == "Маркетинговые") %>% ggplot(aes(exp, min)) + geom_segment(aes( y = min, x = exp, yend = max, xend = exp ), size = 1.5, color = "gray") + geom_point(stat = 'identity', color = "#003f7d", size = 10) + geom_point(aes(exp, max), stat = 'identity', color = "#ff8e00", size = 10) + geom_text(aes(exp, min - 10, label = min), size = 5, color = "#003f7d", family = font, show.legend = FALSE) + geom_text(aes(exp, max + 10, label = max), size = 5, color = "#ff8e00", family = font, show.legend = FALSE) + geom_text(aes(exp, (min + dif/2), label = glue("+{dif}")), size = 4, vjust = -0.35, color = "gray70", family = font, show.legend = FALSE) + scale_y_continuous(breaks = seq(0, 600, 25), limits = c(50,275)) + labs( title = glue("Зарплатные ожидания маркетинговых аналитиков"), subtitle = glue("<b style='color:#003f7d;'>Минимальная</b> и <b style='color:#ff8e00;'>максимальная</b> заработная плата после удержания налогов"), y = "Заработная плата, тыс. рублей", x = "Грейд", caption = glue("Источник данных: newhr.ru\nВизуализация: Юрий Тукачев, июнь 2022") ) + coord_flip() + theme_minimal(base_size = 18, base_family = "Josefin Slab") + theme( panel.grid.major.y = element_blank(), panel.grid.minor.x = element_blank(), panel.border = element_blank(), axis.title = element_text(size = 18), text = element_text( family = font, color = "#53565A", size = 20 ), panel.background = element_blank(), plot.title.position = "plot", plot.caption.position = "plot", plot.caption = element_text( color = "gray", size = 14, hjust = 1 ), plot.margin = margin(25, 25, 10, 25), plot.subtitle = element_markdown( hjust = 0, size = rel(0.9), family = font ), plot.title = element_text( size = rel(1.3), lineheight = 0.7, family = font, face = "bold", color = "gray20" ) )
В результате получаем диаграмму гантелей:
ggsave( here("salary.png"), device = agg_png, bg = "white", width = 7.5, height = 4.5, dpi = 300, scale = 1.5 )
Итоговый график можно скачать по ссылке.
1. статья: https://vc.ru/hr/136050-analitika-dlya-hantinga-analitikov-produktovyh-marketingovyh-i-data-scientists
2. презентация: https://vacancy.newhr.ru/data/data/salary/HeadHunting_analytics_salary_IT-Digital_2020_from%20New.HR.pdf
🔗 Что еще интересного по теме зарплат в IT?
- ⚡️ Как изменился рынок труда в IT и Digital в России за последние 4 месяца
- Вакансии аналитиков март-май 2022
- Калькулятор зарплат Хабр Карьеры можно узнать текущую зарплату любого специалиста из ИТ-отрасли
- Анализ вакансий и зарплат в Data Science
- Работа DS: зарплаты, занятость и желания
- Один из крупнейших форумов для разработчиков Stack Overflow опубликовал ежегодное исследование рынка ИТ
- Удалёнка vs офис: где и как разработчикам выгоднее работать
- Зарплаты айтишников в первой половине 2021: +6,2% за счёт регионов
- Зарплаты айтишников во втором полугодии 2021: +17% за счет поддержки и администрирования в регионах
- Исследование рынка аналитиков: решения, основанные на данных (2019)
- Аналитика для хантинга и рекомендации по найму ИТ-специалистов
- Опрос "Зарплата моей мечты", результаты можно увидеть на интерактивном дашборде в Power BI
Основной канал: https://t.me/People_Analytics