Сайт показывает IT-вакансии из открытых источников. hh.ru в выборку не входит: у него нет открытого API для такой задачи. Поэтому цифры описывают эти источники, а не весь рынок IT-вакансий России. «Кого ищут» и «Что просят» считаются по публичным Telegram-каналам: только у них есть история за несколько лет. Блок о вилках считается по вакансиям портала «Работа в России» с небольшой долей Хабр Карьеры и SuperJob: в Telegram вилку указывает меньшинство постов.
| Источник |
Что берётся |
Перекос |
| «Работа в России» (trudvsem.ru) |
открытые данные портала: ежедневные снимки всего набора вакансий и ежедневная выгрузка через API |
много госсектора, бюджетных организаций и регионов; IT-роли часто названы общо: «программист», «инженер» |
| Хабр Карьера |
вакансии IT-компаний |
вакансий меньше, чем на портале, сбор начат недавно |
| Публичные Telegram-каналы |
посты с вакансиями из веб-превью каналов |
уклон в ML и Python; считаются посты, а не вакансии |
| SuperJob |
вакансии через открытый API |
сбор начат недавно; на сайт выйдет, когда накопится история |
Это окна сбора по источникам. Сравнения на сайте идут с года: раньше набор каналов был другим и почти целиком фронтендовым. Данные выгружены , коммит .
Только агрегаты: число постов по навыкам, грейдам и годам, каждое вместе со своим знаменателем, и оценки моделей проекта из файлов results/ с их провенансом. Тексты вакансий Хабр Карьеры и постов Telegram на сайт не попадают, они хранятся только в локальном сыром слое. Персональные данные (имена контактов, телефоны, почты, ники) вычищаются ещё до записи в сырой слой.
Откуда навыки. Навыки из текста поста Telegram читает модель извлечения проекта (дообученная Qwen3-1.7B), названия приводятся к одному словарю. Портал «Работа в России» и Хабр Карьера собираются недавно и истории не дают, поэтому навыки на сайте считаются по Telegram.
Направления и грейды. Направление определяется по роли, которую модель прочитала в посте: Backend, Frontend, тестирование, аналитика (аналитики данных, бизнес- и системные аналитики), ML и Data Science (роли ), инженерия данных, DevOps и администрирование, мобильная разработка, Fullstack, инфобезопасность; «Всё IT» это все посты с одной IT-вакансией, кроме управления и дизайна: их посты называют мало инструментов и только разбавили бы доли. Грейды: стажёры и джуны, мидлы, сеньоры и лиды. Посты, где грейд не указан, входят только в «Все грейды». Сочетание направления и грейда показывается, если за - у него хотя бы постов. Доля навыка считается от всех постов сочетания, включая посты, где навыков не нашлось. Навык здесь это инструмент или технология: области знаний (машинное обучение, LLM, NLP, базы данных, английский язык) модель навыками не считает, так её учили по руководству разметки.
Что считается постом-вакансией. Пост с одной вакансией. Резюме и подборки резюме не входят (их отсекает правило по началу поста). Посты со списком из нескольких вакансий тоже не входят: модель их не разбирает, а их доля за эти годы выросла, так что каналы, которые публикуют списками, представлены слабее. Одинаковый текст в одну неделю считается один раз, в какой бы канал он ни попал; повтор того же поста через неделю и позже считается заново, потому что это снова объявление. Посты, которые канал удалил, не видны, поэтому за старые годы постов меньше, чем было опубликовано.
Какие навыки в списке. Тридцать самых частых навыков группы за - и десять самых быстрорастущих с года среди тех, что встречаются хотя бы в 0,5 % постов группы. Навык показан, если его назвали хотя бы постов группы. Если в году у сочетания меньше постов, сравнения нет и показана только доля сейчас: так у ML по отдельным грейдам, у инженерии данных и у джунов тестирования, аналитики и DevOps.
Рост доли. Изменение доли с года к - дано в процентных пунктах и считается внутри каналов. Каналы приходят и уходят, и один новый канал сдвигает общую долю сам по себе: так, канал, который начал активно публиковать фронтенд-вакансии в 2026 году, сдвигал доли всего направления. Поэтому в сравнении участвуют только каналы, где у направления были посты в оба периода, и каждый канал весит одинаково в обоих (вес n₁n₂/(n₁+n₂), как в оценке Мантеля-Хензеля для разности долей). Серая точка на графике это доля сейчас минус это изменение, то есть год в тех же каналах. Проценты от доли базового года здесь вводят в заблуждение: навык, которого в году почти не было, дал бы рост в сотни процентов при доле меньше процента. Изменение подписано числом, если оно выходит за случайный разброс и по постам, и по каналам (бутстрэп по каналам: каналы сами меняют, что публикуют, и рынок это разброс каналов, а не одна куча постов), и проходит поправку Бенджамини-Хохберга на число навыков сочетания. Иначе стоит «≈». Проверка на плацебо (недели каждого канала за один год случайно делятся на две половины, настоящих изменений нет) ложно находит изменение реже, чем в 5 % случаев.
Грейд из текста поста читает модель извлечения проекта. Доля каждого грейда считается среди IT-постов, где грейд указан; посты без грейда в доли не входят. Если вакансии одного грейда чаще называют его в тексте, уровни долей смещены, но тренд держится, пока эта привычка не меняется. Считаются только каналов, которые писали такие посты каждый год с -го, и вес каждого канала один и тот же во все годы. Без этого доля джунов выросла бы вдвое: за эти годы сильно выросли каналы, которые публикуют только вакансии для начинающих, а внутри каналов доля джунов почти не изменилась.
Доля направления это доля постов с его ролями среди всех IT-постов каналов, которые писали вакансии каждый год с -го, и вес каждого канала один и тот же во все годы (его доля постов панели за все годы). По всем каналам доли сдвигаются сами: каналы про ML и тестирование появились позже, тематические каналы выросли в разы, и фронтенд по общему счёту даже рос, а внутри каналов падает. Изменение подписано числом по тем же правилам, что у навыков. Плитки вместе с прочими ролями дают все IT-посты: десять направлений, по которым считаются навыки, плюс управление и дизайн. У менеджеров модель находит мало навыков, а «дизайнер» смешивает дизайнеров интерфейсов с художниками для игр, поэтому в фильтре навыков их нет. Прочие роли (программист без уточнения, поддержка, 1С и другие) названы в подписи.
Что считается постом-вакансией, описано в разделе о навыках. Пост не равен вакансии, а состав каналов по годам меняется. В 2019 году каналов было мало, и заметную часть выборки давали фронтенд-каналы, поэтому база для сравнений взята с 2022 года: с него каналов писали вакансии каждый год. Каналы про ML появились в 2023-2025 годах; изменения на сайте считаются внутри каналов, поэтому сами новые каналы роста не создают, но уровень доли «сейчас» от состава каналов зависит.
Вилка это сумма, которую работодатель написал в объявлении, а не то, сколько в итоге платят: рубли в месяц так, как их указал источник, вычет налога не учитывается, другие валюты не входят. Для навыков, которые часто встречаются и часто отсутствуют в вакансиях с вилкой, оценена разница середины вилки при равных роли, грейде, регионе, формате работы, опыте, источнике и остальных навыках (частично линейная модель, double ML), на вакансиях порталов. Оценка опирается не на все вакансии, а на сравнимые: те, где навык правдоподобен при их роли, грейде, регионе и прочем (полоса перекрытия по вероятности навыка, отсечка 5 % и 95 %). Чем отличнее вакансии с навыком от остальных, тем меньше сравнимых и тем шире интервал. Эффект это прибавка к вилке при том же остальном стеке; у связанных навыков (Java и Spring, 1С и ЗУП) деньги делятся между ними. Расчёт повторён без вакансий, где указана одна граница вилки (у них серединой считается эта граница), и без середин от 500 тыс. руб. (в данных есть заглушки вроде 999 999); навык в заголовке раздела назван, только если эффект подтвердился и там, а неподтверждённые помечены звёздочкой. В «повышают» и «понижают» навык попадает по поправке Бенджамини-Хохберга на проверок (доля ложных находок до 5 %): из ; более строгую поправку Холма прошли . Полоса на графике согласована с этой поправкой: это интервал Бенджамини-Йекутиели для отобранных навыков на уровне (1 минус × 5 % / ), поэтому он не пересекает ноль ровно у тех навыков, которые прошли поправку. Обычный 95-процентный интервал у части недоказанных навыков ноль не пересекает, но после проверок такое случается и с навыком без эффекта. Расчёт , коммит . Ограничения, как их записал расчёт:
За неделю или месяц доля навыка сдвигается примерно на столько же, сколько её случайный разброс, и даже квартал против того же квартала год назад почти ничего не показывает. Поэтому сводка выходит раз в квартал, но сравнивает последние двенадцать месяцев с предыдущими двенадцатью: изменение внутри каналов и проверка значимости те же, что на главной. Срез выходит релизом репозитория на GitHub.
- Нет hh.ru, поэтому доли навыков описывают открытые источники, а не весь рынок.
- Навыки читает модель, и она ошибается; качество извлечения на отложенных постах описано в README.
- Пост в Telegram не равен вакансии. Уровень доли зависит от того, какие каналы в выборке; изменение доли считается внутри каналов.
- Портал и Хабр Карьера собираются недавно, поэтому у них только срез, без истории.
- Цифры пересчитываются при каждой выгрузке и могут меняться задним числом, когда догружаются пропущенные дни.