Зарплатная аналитика в реальном времени. Как пользоваться телеграм-ботом Джинна
Каждый раз, когда на рынке происходит что-то непонятное, как сейчас, наблюдается резкий всплеск интереса к аналитике: компании и сотрудники хотят понимать, что происходит, к чему готовиться, что будет завтра. Мы видели это в 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 месяцев, но это автоматически снижает точность, если зарплаты за эти полгода менялись вверх или вниз.
Во-вторых, ожидания в профиле кандидата и его фактическая зарплата могут отличаться. Часто на этапе оффера происходит торг в размере
С учетом всего сказанного выше я бы ориентировался не на наймы, а на информацию по вакансиям и кандидатам. Впрочем, наймы тоже сообщают нам кое-что полезное.
Давайте посмотрим.
Первое, на что обращаешь внимание — практически равное количество наймов для 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 хуже, чем