Drive your career as React Developer with Symphony Solutions!
×Закрыть

Зарплатная аналитика в реальном времени. Как пользоваться телеграм-ботом Джинна

Каждый раз, когда на рынке происходит что-то непонятное, как сейчас, наблюдается резкий всплеск интереса к аналитике: компании и сотрудники хотят понимать, что происходит, к чему готовиться, что будет завтра. Мы видели это в 2014 году на ДОУ и видим это сегодня и на ДОУ, и на Джинне.

У Джинна, вероятно, сейчас больше всего данных о рынке, вакансиях, зарплатах. Каждый месяц у нас публикуется около 7500 ІТ-вакансий и происходит около 60 тысяч контактов. Больше, наверное, только у LinkedIn, но им вряд ли интересен украинский рынок. И уж точно ни у кого нет таких данных по наймам.

Чтобы помочь разобраться в происходящем, мы в авральном режиме доработали телеграм-бот Джинна (@djinni_jobs_bot). Теперь можно смотреть аналитику по зарплатам, кандидатам и наймам практически в реальном времени. В этой статье я расскажу, как им пользоваться и как правильно интерпретировать цифры, которые он вам показывает.

Поехали!

Как пользоваться ботом: открываете @djinni_jobs_bot в Телеграме, нажимаете /start и затем /salaries.

Для примера посмотрим на статистику по Java.

/salaries senior java kyiv/salaries junior java
Статистика на Джинне по запросу senior java kyiv:

Вакансий опубликовано: 151
Откликов на одну вакансию: 1,0
Вилка по зарплате: $3000-4500
Статистика на Джинне по запросу junior java:

Вакансий опубликовано: 19
Откликов на одну вакансию: 20,7
Вилка по зарплате: $500-1000
Кандидатов в поиске: 47
Ожидания по з/п: $4000-5000
Зарплата по наймам: $3800-5000
Наймов: 32
Кандидатов в поиске: 237
Ожидания по з/п: $400-600
Зарплата по наймам: $400-650
Наймов: 35

Бот умеет искать по тайтлу (позиции) и по городу. К синтаксису бота мы еще вернемся, а пока посмотрим на статистику. Что здесь интересного? Статистика состоит из трех частей: вакансии, кандидаты, наймы.

Вакансии

Первая цифра — вакансий опубликовано — это количество вакансий, которые опубликовали компании на Джинне за последние 30 дней.

Сюда попадают как новые вакансии, так и старые, которые компании включили повторно. Обычно это число чуть меньше числа вакансий, активных прямо сейчас, т.к. часть вакансий снимают с публикации раньше, чем пройдет месяц.

В нашем примере получилось 151 вакансия для Senior Java и 21 вакансия для Junior Java.

Несколько слов о том, как работает поиск: бот ищет только по тайтлу (названию вакансии). Если вакансия называется «Java-бог» или «Разработчик Java с большим опытом», то в статистику Senior Java она не попадет. А вот «синьор-помидор java» попадет, т.к. работают синонимы.

Идем дальше. Отклики.

Senior Java Киев получили в среднем по одному отклику на вакансию, Junior Java — 20.

Цифры по откликам не очень точные: для ускорения подсчета мы не пересчитываем их каждый раз заново, а берем счетчик откликов вакансии. Если вакансия висела несколько месяцев, то и откликов у нее будет больше. Но абсолютные цифры нас не очень интересуют, нам важнее относительные. На вакансию Senior Java вы получите примерно в 20 раз меньше откликов, чем на джуниор вакансию — sounds about right.

И, наконец, зарплаты.

Все вакансии на Джинне имеют зарплатную вилку, но она не публичная. Подробнее об этом я рассказывал в Телеграме, но если в двух словах — компании ее указывают, чтобы их вакансия попадала в рассылки/рекомендации нужным кандидатам.

Для статистики мы считаем медиану.

$3000-4500 означает, что медиана нижнего значения для вилки Senior Java составляет $3000, а медиана верхнего значения — $4500. Может оказаться, что вакансий, в которых буквально указана вилка $3000-4500, и нет, но этот диапазон — это наиболее точное среднее значение для всех вакансий senior java kyiv.

С вакансиями разобрались, дальше будет проще.

Кандидаты

Как вы, наверное, знаете, на Джинне кандидаты публикуют профиль, чтобы компании сами им писали и предлагали вакансии.

В этом изначально заключалась идея Джинна, и даже сейчас 60% контактов начинается с сообщения рекрутера кандидату. Средняя цифра тут обманчива — полагаю, 80% контактов синьоров начинается с сообщения рекрутера, и не больше 10% джуниоров (они чаще сами откликаются на вакансии).

Что мы видим в нашем примере?

47 профилей Senior Java Киев vs 237 профилей Junior Java. Это примерно три вакансии на одного синьора (151/47) и 0,08 вакансии на одного джуниора. Не удивительно, что Форум переполнен темами, как джуниору найти работу, и у нашего телеграм-канала джуниор-дайджест 25 тысяч подписчиков.

Вообще-то так считать нельзя (три вакансии на senior java vs 0,08 для джуниора), но нам важны относительные числа, а не абсолютные, они как раз говорят правду. Если интересно, я напишу в комментариях, почему неправильно считать количество вакансий так, как я посчитал.

Идем дальше: ожидания по зарплате.

Чтобы посчитать средние ожидания по зарплате, мы берем интервал между первым и третьим квантилем. Простыми словами, половина всех профилей кандидатов попадает в указанный зарплатный диапазон, а еще половина будет с зарплатами больше или меньше.

Для нашего примера разница почти в десять раз, $4000-5000 у синьора vs $400-600 для джуниора.

Наймы

Наконец добрались до самого, возможно, интересного — наймов. На Джинне компании платят нам только по факту найма кандидата, поэтому в наших интересах отслеживать их как можно точнее.

К сожалению, это и наименее точная статистика бота.

Во-первых, наймов в абсолютных значениях все равно мало, особенно если мы берем конкретную выборку, такую как Java Киев. Чтобы сгладить эффект малых чисел, мы берем данные по наймам за 6 месяцев, но это автоматически снижает точность, если зарплаты за эти полгода менялись вверх или вниз.

Во-вторых, ожидания в профиле кандидата и его фактическая зарплата могут отличаться. Часто на этапе оффера происходит торг в размере 10-15%, иногда даже больше, но в статистику это никак не попадает. Делать автоматический «дисконт» тоже неправильно, т.к. сумма торга значительно зависит от кандидата и ситуации на рынке. Если у вас есть три оффера на руках, то вы вряд ли будете сильно торговаться vs ситуация, когда оффер один, и других не предвидится.

С учетом всего сказанного выше я бы ориентировался не на наймы, а на информацию по вакансиям и кандидатам. Впрочем, наймы тоже сообщают нам кое-что полезное.

Давайте посмотрим.

Первое, на что обращаешь внимание — практически равное количество наймов для senior java kyiv и junior java (32 vs 35). Если поделить их на количество открытых вакансий, получим 0,2 для senior и 1,8 для junior. Абсолютные цифры опять же не показательны, смотрим относительные. Вакансию Junior Java закрыть примерно в 10 раз проще, чем синьора (1,8/0,2).

Второй важный момент — зарплата по наймам.

Интересно, что зарплатная вилка по наймам для синьоров выше, чем зарплатная вилка вакансий для них же ($3800-5000 vs $3000-4500). Для джуниоров ситуация обратная: $400-650 зарплатная вилка по наймам и $500-1000 для вакансий.

Самое простое и логичное объяснение — вакансию Senior Java закрыть сложно, поэтому компании вынуждены платить больше, чем рассчитывали. И наоборот — если джуниора можно найти даже на меньшие деньги, чем планировалось, то зачем платить больше?

Еще примеры

Какие вакансии закрыть сложнее всего, а на какие больше всего желающих?

Смотрим на количество откликов на вакансию, на соотношение количества открытых вакансий и кандидатов, сравниваем зарплатные вилки по вакансиям и наймам.

Я провел несколько дней, играясь с ботом, и лучший результат, который я смог найти — это junior frontend и node.js разработчики. Если у вас получится найти еще более экстремальные кейсы, добро пожаловать в комментарии.

/salaries senior node.js/salaries junior frontend
Вакансий опубликовано: 94
Откликов на одну вакансию: 2,5
Вилка по зарплате: $2500-4500
Вакансий опубликовано: 29
Откликов на одну вакансию: 63,9
Вилка по зарплате: $600-1300
Кандидатов в поиске: 17
Ожидания по з/п: $4950-6500
Зарплата по наймам: $3750-5000
Наймов: 11
Кандидатов в поиске: 786
Ожидания по з/п: $352-600
Зарплата по наймам: $350-600
Наймов: 50+

Как и в предыдущем примере, средние зарплаты по наймам node.js сильно выше, чем вилка зарплат. Интересно, правда, что зарплатные ожидания кандидатов еще выше — $5-6k vs $4-5k по наймам. По нашей статистике на Джинне, наймы выше, чем на $5k — это редкость для украинского рынка.

У джуниоров же ожидания по зарплате и зарплата по наймам совпадают, и оба показателя сильно ниже того, что готовы платить компании. При этом разрыв между количеством доступных вакансий и кандидатов самый большой из тех, что мне удалось найти: 5,5 вакансии на одного node.js кандидата и 0,03 вакансии на одного junior frontend кандидата — разница почти в 200 (!) раз. Для java разница была в 40 раз (3,2 для синьора и 0,08 для джуниора).

Еще обратите внимание на небольшой трюк: оператор ’vs’ позволяет получить статистику сразу по двум (или нескольким) выборкам одной командой. Попробуем еще.

/salaries senior iOS /salaries senior Android
Вакансий опубликовано: 32
Откликов на одну вакансию: 5,5
Вилка по зарплате: $3000-4300
Вакансий опубликовано: 26
Откликов на одну вакансию: 3,4
Вилка по зарплате: $3000-4500
Кандидатов в поиске: 56
Ожидания по з/п: $3500-5000
Зарплата по наймам: $3262-4500
Наймов: 14
Кандидатов в поиске: 46
Ожидания по з/п: $3500-4500
Зарплата по наймам: $3000-4000
Наймов: 21

Спрос на iOS и Android разработчиков плюс-минус одинаковый.

/salaries react/salaries angular
Вакансий опубликовано: 404
Откликов на одну вакансию: 9,7
Вилка по зарплате: $2000-3800
Вакансий опубликовано: 204
Откликов на одну вакансию: 3,6
Вилка по зарплате: $2000-3500
Кандидатов в поиске: 409
Ожидания по з/п: $650-2500
Зарплата по наймам: $800-2937
Наймов: 50+
Кандидатов в поиске: 115
Ожидания по з/п: $1200-3550
Зарплата по наймам: $1300-3500
Наймов: 41

React популярнее, но при этом зарплаты у Angular немного выше.

Зарплаты по городам

/salaries Харьков/salaries Львiв/salaries Одесса
Вакансий опубликовано: 1252
Откликов на одну вакансию: 7,1
Вилка по зарплате: $1000-3000
Вакансий опубликовано: 684
Откликов на одну вакансию: 7,0
Вилка по зарплате: $1500-3000
Вакансий опубликовано: 380
Откликов на одну вакансию: 6,3
Вилка по зарплате: $1000-3000
Кандидатов в поиске: 2646
Ожидания по з/п: $399-1500
Зарплата по наймам: $500-1825
Наймов: 50+
Кандидатов в поиске: 2469
Ожидания по з/п: $500-2000
Зарплата по наймам: $600-2500
Наймов: 50+
Кандидатов в поиске: 1220
Ожидания по з/п: $500-2000
Зарплата по наймам: $600-2300
Наймов: 50+

Вакансий в Харькове на Джинне практически вдвое больше, чем во Львове, хотя кандидатов примерно поровну. Похоже, что харьковские компании пользуются Джинном активнее, не знаю почему. Больше ничего особо интересного здесь нет, т.к. нет разбивки по специальностям.

Зарплаты для remote или relocate

/salaries remote/salaries relocate
Вакансий опубликовано: 671
Откликов на одну вакансию: 19,2
Вилка по зарплате: $1500-3000
Вакансий опубликовано: 212
Откликов на одну вакансию: 5,0
Вилка по зарплате: $3000-5000
Кандидатов в поиске: 14044
Ожидания по з/п: $600-2500
Зарплата по наймам: $779-3000
Наймов: 50+
Кандидатов в поиске: 5826
Ожидания по з/п: $900-3000
Зарплата по наймам: $1000-3000
Наймов: 50+

На релокейт вакансий довольно много, но при этом почти нет наймов. Небольшой caveat: на релокейт на Джинне чаще всего ищут наши украинские компании, на проекты в Европе. Наверное, если бы были варианты релокейта в США/Канаду/UK, то и откликов было бы больше.

Другое дело ремоут: 19 откликов на вакансию — это очень хорошо. Хинт-хинт: кандидатам интересна удаленная работа. А сейчас, очевидно, интерес только возрастет.

Кандидаты хотят ремоут

/salaries devops remote/salaries devops -remote
Вакансий опубликовано: 36
Откликов на одну вакансию: 10,0
Вилка по зарплате: $2000-4000
Вакансий опубликовано: 309
Откликов на одну вакансию: 2,3
Вилка по зарплате: $2000-4000
Кандидатов в поиске: 220
Ожидания по з/п: $1200-3500
Зарплата по наймам: $1000-2500
Наймов: 50
Кандидатов в поиске: 41
Ожидания по з/п: $1000-2500
Зарплата по наймам: $1000-2100
Наймов: 27

Откликов на вакансии devops remote в пять раз (!) больше, чем на «офисные».

Одно важное уточнение, которое касается remote/relocate: 80% кандидатов имеют в профиле галочку «удаленная работа» и 33% — галочку «готов к релокейту». В реальности у нас нет возможности узнать, был ли конкретный найм на ремоут/релокейт. Поэтому статистика по кандидатам/наймам в этих выборках точной не будет. С вакансиями такой проблемы нет — там рекрутер сама указывает тип занятости.

Поиск с boolean search

/salaries junior|trainee qa/salaries junior|trainee qa -strong -automation
Вакансий опубликовано: 78
Откликов на одну вакансию: 27,4
Вилка по зарплате: $500-900
Вакансий опубликовано: 48
Откликов на одну вакансию: 34,6
Вилка по зарплате: $400-800
Кандидатов в поиске: 692
Ожидания по з/п: $350-500
Зарплата по наймам: $400-662
Наймов: 50+
Кандидатов в поиске: 656
Ожидания по з/п: $350-500
Зарплата по наймам: $400-600
Наймов: 50+

Поисковый запрос по статистике у нас реализован через ElasticSearch, так же как и обычная подписка на вакансии. Поэтому можно использовать и обычный синтаксис boolean search.

Другие зарплаты

Как я говорил в начале статьи, бот выбирает вакансии/профили по совпадению в заголовке. Т.е. можно смотреть вакансии Erlang или Flutter, technical writer или Salesforce и любые другие экзотические направления и специальности. Если такие кандидаты/вакансии были на Джинне, то бот покажет статистику по ним.

Забавный пример напоследок: сравним зарплаты «менеджер» и «manager».

/salaries manager/salaries менеджер
Вакансий опубликовано: 610
Откликов на одну вакансию: 17,6
Вилка по зарплате: $800-1700
Вакансий опубликовано: 29
Откликов на одну вакансию: 8,8
Вилка по зарплате: $600-1100
Кандидатов в поиске: 2984
Ожидания по з/п: $1000-2995
Зарплата по наймам: $800-2500
Наймов: 50+
Кандидатов в поиске: 92
Ожидания по з/п: $600-1062
Зарплата по наймам: н/д
Наймов: 4

Лишнее подтверждение тому, что в ІТ учить надо английский.

Подписки

В каждом зарплатном отчете бота есть кнопка «Подписаться». Если на нее нажать, раз в неделю Джинн будет автоматом присылать свежую статистику по заданному запросу, а также — сколько вакансий и кандидатов прибавилось (убавилось) за эту неделю. Как мне кажется, удобный способ «держать руку на пульсе».

Только не перепутайте с «обычными» подписками на вакансии, где Джинн присылает новые вакансии по вашим параметрам поиска. Немного запутанно получилось, но сделать простой интерфейс для бота оказалось не так просто. Надо делать мобильное приложение :-)

Вместо заключения

В этой статье я не пытался собрать детальную аналитику по всему рынку. Моя задача — рассказать о возможностях нашего телеграм-бота и как с его помощью можно исследовать рынок самому. Такая себе DIY аналитика от Джинна.

Находите бота в Телеграме, пробуйте сами, делитесь интересными результатами в комментариях. Я не знаю, будет ли 2020 хуже, чем 2014-2015 или 2008-2009, но я уверен, что в этот раз у нас будет лучшая и более точная аналитика, чем когда-либо.

LinkedIn

4 комментария

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Очень интересно и полезно. Cпасибо!

Объявлена неделя карантина. Количество экспертов и аналитиков возросло втрое.

хорошая инновация — спасибо. А есть код бота в открытом доступе?))

Подписаться на комментарии