Привет, Хабр! (И тебе, HR, который ставит в вакансию «Python, SQL, Linux, Docker, K8s, Spark, Airflow, английский C1, опыт 1-3 года, зарплата 40-60К». Особенно тебе.)
Сегодня будем препарировать рынок Python-разработки в России. По-настоящему. С графиками, цифрами и верой в светлое будущее.
Поехали.
P.S Если вводная часть того как я анализировал не интересна смело переходи к главе 2, не мучай себя избыточной информацией))
P.P.S Также хочу зарее предупредить, что многие наблюдения я могу утрировать, высмеивать. Но неизменными и честными остаются данные на графиках и таблицах. Так что если вам нужна серьёзность и точность данных, листайте смотрите и не читайте, я предупредил))
Глава 0. Зачем я это сделал и почему пожалел
Идея была простая: «А давай посмотрим, сколько на самом деле платят Python-разработчикам в России?». Звучит как пятничный pet-project на вечер. По факту - это были 9 месяцев парсинга, со всеми возможными приколами, то я накосячил и оставил разделитель csv в виде запятой, даже не задумавшись, что запятые в тексте везде, то hh API заблокировали и с апреля я наблюдаю статус 403 и мой план собрать большую аналитику за 1, а то и 2 года сорвался. Ну ладно, и так сойдёт, эта аналитика оказалась как и предполагалось весьма интересной и для новичков в IT и для тех кто уже долго крутится на этом рынке. Так что едем дальше...
Что хотелось узнать:
Сколько правда платят?
Где платят больше?
Какие навыки сейчас в тренде, а какие пора удалять из резюме?
Кто идеальный кандидат «по версии hh» и можно ли таким стать без продажи почки?
Вкратце для шустрых комментаторов - что получилось узнать:
Сыктывкар платит больше Москвы (нет, но да, но нет).
В Тбилиси медианная зарплата Data Scientist - 450 000 ₽ (n=4, конечно, но звучит).
Python как навык за 8 месяцев подешевел на 7.9 п.п. в Python-вакансиях. Сами вдумайтесь.
HR-ы Краснодара решили, что вилка 30К-80К - это нормальная вилка для одной вакансии.
Но обо всём по порядку.
Глава 1. Боль сбора данных: как hh.ru меня подставил
Изначально план был такой: парсим данные раз в две-четыре недели, копим год, потом красиво анализируем. Чисто и наивно.
Что пошло не так (всё):
Запятая как разделитель в CSV. Гениальное решение для языка, в котором запятая - это половина пунктуации. Спасибо, прошлый я. Первый датасет пришлось переразбивать руками-регулярками.
hh.ru в апреле 2026 убил API для вакансий. Просто вот так. Парсишь ты вечером, всё хорошо, утром просыпаешься -
403 Forbidden, finita la commedia. Поэтому моя «коллекция» обрывается на апреле 2026. Это уже не датасет - это археологический срез последнего открытого месяца((( Плак-плак.Распределение по датам - это слёзы статистика. Вот моя «равномерная» выборка:
Дата |
Вакансий |
|---|---|
2025-10-05 |
9434 |
2025-08-01 |
8793 |
2025-09-01 |
8599 |
2026-04-07 |
6635 |
2026-01-26 |
6474 |
2026-03-23 |
5990 |
2026-02-10 |
5288 |
2025-12-04 |
4769 |
2026-01-27 |
2819 |
2026-02-11 |
1680 |
2026-02-09 |
1526 |
2025-12-03 |
346 |
2026-04-08 |
250 |
Да, в ноябре я чем-то был серьёзным занят. Если кто из работодателей нанимал в ноябре - извините, вас в моих данных нет.
Итого: ~62 тысячи вакансий, 9 месяцев, запрос Python (поиск по навыку). Стек - Python, pandas, matplotlib, sklearn, networkx, Jupyter в VS Code, локально, без облаков. Олдскул.
Ну на вводной части всё, фух..., теперь к тому ради чего мы здесь все собрались.
Глава 2. Что у нас по цифрам и кто все эти люди?
Прежде чем погружаться в зарплатные ужасы и географические аномалии, давайте посмотрим на рынок с высоты птичьего полёта. У меня в датасете два графика, которые отвечают на два самых базовых вопроса: «сколько вакансий?» и «кому они вообще нужны?». И оба графика, как водится, поднимают больше вопросов, чем ответов.

Мы видим среднее: 7825 вакансий в месяц. Звучит солидно. Пока не посмотришь на разброс.
Что бросается в глаза:
Октябрь - пик найма. Бюджеты на следующий год ещё не утвердили, но «доедать» текущий нужно срочно. Классика корпоративной логики: «деньги остались - нанимаем, иначе срежут в следующем квартале».
Декабрь - провал в -40%. 5115 вакансий против 9434 в октябре. HR-ы массово ушли в новогодний корпоратив прямо с середины декабря, и до 15 января их не существует как класса. Если вы искали работу в декабре 2025 - соболезную, рынок физически был закрыт.
Январь - взрыв +82% за месяц. Самый резкий месячный рост за весь период наблюдения. Это не «рынок ожил» - это HR-ы вернулись из отпусков и одновременно опубликовали всё, что копили месяц. Если вы junior и думаете «когда искать работу» - получается ответ: январь-февраль. Не сентябрь, не «после праздников», а именно январь, пока пик ещё не съели быстрые соискатели.
А что в Апреле? - в апреле всё, API быстренько отключили для парсинга вакансий, вот и мы видим только то что получилось успеть собрать.
Вывод для тех, кто ищет работу: рынок Python - это синусоида с периодом «новогодние праздники». Хочешь много вакансий - пиши резюме в январе. Хочешь спокойно собеседоваться без конкуренции - в декабре (только готовься, что отвечать будут после 15 января, и это нормально).
Вообщем по этому графику мы видим относительно предсказуемую картину. Идём смотреть дальше...
Теперь второй график. И вот он уже не «забавный», а скорее слегка пугающий.

Топ-10 покрывает 73.4% рынка. Остальные 26.6% размазаны примерно по 60 другим ролям - от «Геолога» до «Агента по недвижимости». Да-да, в Python-вакансиях. Сейчас разберём, как такое возможно.
Что важного видно:
1. «Программист» - это 27.7% рынка. Один из четырёх. Категория «Программист, разработчик» на hh - это огромный размытый ярлык, под который HR валит всё подряд: бэкенд, фронт, скрипт-кидди, embedded, geek-в-одной-каске. По факту это не роль, это «мы не знаем, как назвать, но нам нужен кто-то с Python». Когда в категории «Программист» вилка 30К-800К и медиана 150К - это не статистика, это шум.
2. Аналитиков больше, чем тестировщиков и дата-сайентистов вместе. Если сложить BI-аналитика (4984) + Аналитика (2309) + смежные - получается, что аналитика данных на hh почти догоняет разработку. И это не «вкатуны» - это реальные позиции с медианой 130-140К. Junior-у, который выбирает «куда вкатиться», стоит обратить внимание: вакансий аналитиков на единицу конкуренции, скорее всего, больше, чем у разработчиков.
3. Учитель Python - 2.5% рынка (1548 вакансий). Полторы тысячи вакансий за 8 месяцев. Это больше, чем тех. поддержка. Вот они, эти 1548 счастливых работодателей, каждый со своим понятием о справедливой оплате преподавания Python. От 30К за вечерние курсы до 200К в корпоративном университете - и всё это одна категория на hh.
4. «Другое» - 3589 вакансий, 5.7%. Внутри «Другого», лежит дикая смесь: от геймдева до промышленной автоматизации, от QA-автоматизаторов, которых не пометили QA, до криптотрейдеров. Вообщем те кого мало в РФ... Хотя криптотрейдеров сейчас развелось, но не об этом))
5. Системный администратор - 2568 вакансий с медианой 130К. Удивил. Я думал, профессия сисадмина уже растворилась в DevOps. Оказывается, нет - она живёт, дышит, и от неё требуют Python для автоматизации Bash-скриптов. Поэтому она и попала в выборку. Это тот самый случай, когда Python - не «специализация», а просто инструмент. Но важное уточнение и достаточно логичное, Системные администраторы в большем своём количестве нужны не в Москве.
Из всего этого следует одна неудобная мысль:
Рынок Python в России - это не рынок профессии. Это рынок ярлыков, и HR-ярлык на твоей вакансии влияет на твою зарплату сильнее, чем твой реальный стек.
Запомни это, когда в следующий раз будешь обновлять резюме. Не «что я умею», а «как меня пометит HR-фильтр» - вот настоящий вопрос. Грустно? Грустно. Но это и есть данные.
Глава 3. Зарплатное молчание: 62% вакансий просто не говорят, сколько платят
Но вот первый шок (хотя для тех кто часто листает hh это наверное и база), ради которого можно было дальше не копать.

Из ~62 000 Python-вакансий зарплату указали только 38%. Остальные - «по результатам собеседования», «достойная», «обсуждается с успешным кандидатом», «зависит от вашей квалификации» (то есть «мы посмотрим, сколько готовы дать именно тебе, чтобы было побольнее»). Реалии рынка: middle который только пришёл может получать в одной компании больше чем senior который работает в этой компании уже 10 лет.

Хуже всех молчат - внимание - аналитики и системные аналитики (77–83% без ЗП). Те самые ребята, которые сами по работе должны бороться с пропущенными значениями. Метаирония.
Лучше всех говорят (то есть указывают ЗП чаще) - учителя и педагоги. И, забегая вперёд, лучше бы они молчали.
От куда здесь Фармацевт-провизор? Я не знаю и даже не представлю почему hh разметил и вернул мне это как, что-то, что соответствует тегу python. Так что давайте это воспринимать как шум на примере которого мы можем сравнивать ЗП не с рынком IT. Ну или напишите в комментариях почему я не обработал данные настолько идеально, а я отвечу что мне было лень...
Глава 4. Зарплатная вилка: 80% - это, оказывается, «нормально»
Вот мой любимый график. Просто посмотрите:

Учителя - это отдельный жанр на hh. Когда я увидел «80% ширина вилки», я сначала подумал, что это баг в коде. Перепроверил трижды. Нет, не баг. Это просто работодатели сферы образования настолько не знают, сколько готовы платить, что вилка получается шире, чем у кого-либо.
Город-чемпион по ширине вилки - Краснодар (60%, n=149). Все, кто едет работать в Краснодар: вас ждёт лотерея. Победителей не предусмотрено. Но попытаться можно))
Москва тут, кстати, выглядит почти прилично - 35% ширина при n=3069. Видимо, столичные HR-ы хотя бы делают вид, что что-то знают про рынок.
И ещё бонусом один график по вилке:

Глава 5. География: Сыктывкар, Магадан и другие столицы Python
Самое весёлое случилось, когда я построил карту «роль × город» по медианным зарплатам. И тут понеслось.


Топ парадоксов:
Тбилиси, Data Scientist: 450 000 ₽ (n=4). Я перепроверил эти 4 вакансии. Реально 450К. То ли релокация в Грузию ещё в тренде, то ли там сидят оставшиеся «эмигранты с инвестициями».
Тбилиси, DevOps: 400 000 ₽ (n=3). Та же история.
Но с Тбилиси мы не закончили. Семь (7!) вакансий с медианой 50 000 ₽. Какие-то реальные семь работодателей верят в такие цифры, и мало того что верят, получается к ним кто-то ещё и приходит и работает, и платят им как кассиру в Пятёрочке. Точнее по-грузински Гудвил (грузинский супер-маркет). Короче разрабы python в Грузии не в цене, другое дело Data Scientist или DevOps.
Жуковский: 200К за разработчика. Это уже почти Москва. Логично.
Жуковский, учитель: 85К (n=5). В Жуковский python-учителю платят 85к. В Москве - 100к. Логистика, как видите, делает своё дело.
Дубна, программист: 175К (n=10). Дубна (физики, ОИЯИ, атомы) - ожидаемо.
И отдельно - Москва: 3069 разработческих вакансий, медиана 190k. То есть половина всего рынка Python в России находится в одном городе. Если кому-то ещё нужны доказательства, что у нас всё централизовано - вот вам централизация в одном heatmap.
Но, не стоит уже складывать чемоданы в Москву и ехать на Курский вокзал, сначала гляньте-ка на этот график:

Здесь я думаю и без моих комментариев всё понятно, но здесь не всё так просто...

Глава 6. Зарплатная динамика во времени: американские горки для DevOps
А теперь садитесь поудобнее. Я взял топ-4 ролей и построил динамику медианной ЗП по месяцам.
Что должно было получиться: плавный рост, лёгкая инфляция, всё предсказуемо.
Что получилось:


Внимание на DevOps. В августе 2025 - 230К. В январе 2026 - внезапное падение на -26% (heatmap показывает). К апрелю слегка восстановился, но всё равно в минусе. Самая дорогая инженерная роль в моих данных просела за 8 месяцев.
Я долго думал, что это значит. Версии:
Хайп прошёл, DevOps стало много, ценник падает.
Часть «дорогих» DevOps ушла в найм без публикации (вакансии для своих).
Все DevOps уехали в Тбилиси и теперь работают за 400К оттуда (см. предыдущую главу).
А вот Data Scientist - это аттракцион не для людей со слабым вестибулярным аппаратом. Посмотрите на индекс:


Август 2025: 100%
Сентябрь 2025: 83% (-17%, что??)
Январь 2026: 164% (+64%)
Март 2026: 156%
Апрель 2026: 111%
Это не зарплата, это график биткоина. У меня единственное объяснение - маленькая выборка (n=344 за всё время) + редкие, но очень дорогие вакансии типа «ищем сеньора в банк за 500К». Одна такая вакансия в месяце с n=10 - и медиана улетает в космос.
Но если усреднить шум - рост реальный. Дата-сайентисты - единственная «инженерная» роль, которая стабильно растёт в цене. Учителям и тестировщикам это тоже удалось, но из совсем другой стартовой точки.
Короче DS новое золото для IT рынка... Как бы вы на это не смотрели...
Глава 7. Главный твист статьи: Python падает
Я долго смотрел на этот график, прежде чем понял, что я вижу. А вижу я вот что:
Доля упоминаний Python в вакансиях, помеченных как Python:
Август 2025: 62.8%
Февраль 2026: 54.9%
Дельта: -7.9 п.п.
То есть hh-теги - это, мягко говоря, не source of truth. Вакансия может быть помечена тегом Python, но в требованиях Python не упомянут. На графе навыков это видно отлично - Python-вакансии расцветают вокруг SQL, Linux, Docker, а сам Python всё чаще остаётся за кадром, в роли «ну и так понятно, что нужен». С этими курсами Python за 3 дня сам навык теряет свою ценность и вес. Его просто стало сложно оценивать и каждый год по +1000 желающих войти в IT. Обесценивают этот навык заставляя работодателей задрать планку отбора до небес хотя по итогу после трудоустройства ты сядешь и будешь писать всё тот же python-код изредко прибегая к этим вашим модным kubernetes, clickhouse, redis и тд
А сейчас держитесь крепче, будет нечто страшное и не слыханное ранее:

Да-да и ещё раз да. В Python-вакансиях растёт упоминание MS Excel. В вакансиях, где люди должны программировать на одном из лучших языков обработки данных. Excel. Я даже не знаю, плакать или открывать LibreOffice Calc и тренироваться. Ну конечно здесь можно оговориться, что к примеру для аналитика это важный навык, для преподавателя программирования это так же важный график, да, но сейчас 2026 год...
А ещё растут «софт-скиллы»: аналитическое мышление, работа с информацией. Это значит ровно одно: HR-ы поняли, что «знание Python» - это уже не выделяющий фактор, надо требовать что-то более душевное. Вроде «уметь думать». До такого мы дошли.

Теперь смотрим на топ навыков по встречаемости, всё очевидно, это просто вам для составления резюме. Берём топ 5, а лучше топ 10 навыков и добавляем в резюмешку, и готово, вы нужны 80% работодателей. Какой я оптимист)) Да?)
А теперь смотрите какой красивый граф я для вас нарисовал))

Что здесь можно увидеть? По сути ничего нового, но теперь становиться понятна связка одного навыка с другими. Здесь мы как будто в магазине и хотим сварить модную крутую кашу из видосика. Набираем крупу (Python), в месте с крупой берём молоко (sql), можно для вкуса взять масло (git), хотя оно как будто по умолчанию у всех уже в холодильнике есть, но типа взяли. Затем для красивой картинки и чтобы показать на фотке, что мы не просто кашу едим, покупаем ягод, роскошный максимум или базовый минимум, решайте сами (docker), так же подсластим сахарком тростниковым (kubernetes), ну или раз уж все на фотографиях с кашей улыбаются, берём хорошее настроение (Аналитическое мышление, ms excel, работа с большим объёмом информации).
P.S Про тарелку для каши я уже не говорю, это обязательно (linux).
И ещё бонусом:



Глава 8. Что я понял, пока всё это парсил
Несколько неудобных выводов, которые делают грустно, но полезно (сделали ещё выводы, пишите в комментах):
Рынок Python в России - это рынок Москвы по большей части. Всё остальное - статистическая погрешность с n<300.
62% вакансий без зарплаты - это не «hh виноват», это рынок не хочет торговаться публично. Когда работодатель не пишет вилку - он экономит на тех, кто стесняется спросить.
Теги hh.ru - это шум. Вакансия может быть помечена Python, в требованиях - «уверенный пользователь Excel и работа с большим объёмом информации». Кластеризация навыков (sklearn, KMeans) показывает огромный кластер C1, где Python, SQL и C++ свалены в одну кучу. Это не профессии - это попытка hh пометить хоть что-то.
DevOps больше не «золотая жила», по крайней мере по медианам открытых ЗП. Возможно, рынок дозрел.
Стагнация программистов в 0.0% - это, наверное, самое грустное число во всей статье. За 8 месяцев медианная ЗП Python-разработчика не выросла ни на копейку. При официальной инфляции это означает реальное падение примерно на 6-8%, но дамы и господа это по официальной...)))))
P.S. (как полагается)
Вакансий обработано: ~62 800
Уникальных городов: 1318 (из них 1300 имели ≤20 вакансий)
Самая высокая медиана: Тбилиси, Data Scientist - 450 000 ₽ (n=4, не повторять дома)
Самая низкая медиана: Путилково, Программист - 50 000 ₽ (n=7, это тоже не повторять)
Объём финального датафрейма: 600 мб в памяти.
Веры в открытость рынка труда: утрачено примерно 80%
Если у вас есть собственные наблюдения, замечания, или вы тот самый Data Scientist из Тбилиси за 450k - пишите в комменты, очень хочется понять, как там у вас.
Все прочитавшим до конца спасибо. На самом деле статья выдалась сложной и работа над тем что вы видите, если нужно будет в комментариях ссылочкой на гугл диск со всеми графиками которые получилось сделать. И многие на самом деле не вошли в статью, так как тогда бы эта статья была на час...
Комментарии (101)

Tishka17
19.05.2026 08:27А что не так с запятой в csv? Нормально же всё работает

MrSotnik Автор
19.05.2026 08:27Я накосячил с сепоратором и кодировкой))

Tishka17
19.05.2026 08:27Непонятно. Не важно какой у тебя сепаратор, главное чтобы ты при записи и чтении один юзал

Tanriol
19.05.2026 08:27С использованием предназначенных для этого библиотек - разумеется. Но CSV производит впечатление простого формата, который можно легко писать вручную, и лезть за библиотекой для записи часто лень, хочется обойтись обычным форматированием строк. И всё будет работать хорошо… пока записываемые поля не содержат сепаратор (например, в описании позиции, если его сохранять). А вот когда вспоминаешь про экранирование - понимаешь, что по честному с библиотекой всё-таки проще.

Andriuxa
19.05.2026 08:27текстовые поля в CSV надо в кавычках вводить, тогда содержимое не перепутается с сепараторами.

Arhammon
19.05.2026 08:27В CSV запятая разделитель, а точка разделитель разрядов, в "русском CSV" точка с запятой разделитель, а запятая разделитель разрядов. При смешивании(или данных или понятий CSV, русский CSV) ничего хорошего не происходит...

Tishka17
19.05.2026 08:27ну если полфайла написать в xml, а вторую половину в json тоже ничего хорошег оне будет. Вопрос получается не к csv и запятой, а к тому что забыли зафиксировать формат?

Arhammon
19.05.2026 08:27Это чисто локальная проблема изза регионального стандарта - все что ты можешь пару раз воткнувшись начать везде принудительно указывать сепаратор, а то он где-то жестко дефолтная запятая, а где-то может сам взять из системной русской локали точку с запятой как дефолнтую. От чужих данных это естественно не защищает...

RepppINTim
19.05.2026 08:27Поэтому лучше сразу приучить себя использовать табуляцию. TSV спасает от 99% проблем с разделителями в текстовых данных

RepppINTim
19.05.2026 08:27Работает пока в поле описания HR не напишет список скиллов через запятую, потом у тебя колонки съезжают вправо на полкилометра

Tishka17
19.05.2026 08:27У меня не съезжают. Покажите код, как вы csv создаете?

zamboga
19.05.2026 08:27Речь идёт о чтении, а не записи.

Tishka17
19.05.2026 08:27Специально сейчас создал файл:
Id, Name 1, ООО тстань 2, "ИП, Равда"Открыл его в libreoffice calc, ничего никуда не съехало.

zamboga
19.05.2026 08:27У вас кавычки и всего 2 строки, хотя строки, скорее всего тут вообще не роляют.
Сгенерируйте датасет на 100 строк и 20 столбцов только чур, без кавычек, и с зоопарком запятых (например, с адресами)

MrSotnik Автор
19.05.2026 08:27Понял, всех больше волнует сепоратор для CSV, а не тема статьи)))

TaskForce141
19.05.2026 08:27Пища для размышлений: сложно серьезно относиться к самому материалу, когда у его автора проблемы с грамотностью и компетентностью. Уверенные операторы ЭВМ, которые на формат грешат, а не на ошибку самого оператора, тоже воспринимаются негативно.

Remigrant
19.05.2026 08:27сложно серьезно относиться к самому материалу, когда у его автора проблемы с грамотностью и компетентностью.
Совершенно верно! Но у статьи, тем не менее, под сотню плюсов. :-(
(И объяснил бы ещё кто-нибудь автору, что слово "сепаратор" пишется через два "а". А то ему, поди, даже и невдомёк, что слова "спарсил" и "сепаратор" однокоренные.

Astroscope
19.05.2026 08:27Но это обычные грабли, на которые наступают примерно все и, нередко, многократно. А слишком очевидная для упоминания вслух причина в том, что назначенный символ сепаратора может присутствовать (и зачастую присутствует) в изначальных данных как часть самих данных. Не то, чтобы с этим нельзя было справиться, но когда обсуждается проблема, с которой сталкивались примерно все, неудивительно, что обсуждение получает широкий отклик и вовлечение.

domix32
19.05.2026 08:27В Python-вакансиях растёт упоминание MS Excel.
а это ни разу не шум. Многие доморощенные отделы аналитики как-то так и выглядят. На собеседовании тебя будут спрашивать про опыта с пандой, csv, ченить про сам язык спросят, а на деле выдадут машину без админских прав на винде, чтобы ты сидел генерировал дашборды для экселя БЕЗ ПИТОНА, потому что местные безопасники не разрешают. В итоге простенькие задачи, решаемые одним запросов в БД и однострочником в питоне превращаются в недели поедания кактуса через задний проход. И чем больше имя кампании близится на слух к "Рога и копыта", тем более вероятным становится подобный сценарий - некоторый корпоративный змеюшник с офисной же драмой, тоннами email и общением с не самыми светлыми заказчиками как внутренними, так и внешними, для которых исполняются подрядные работы.
Вот моя «равномерная» выборка:
не очень понятно что за числа в выборке. Если вакансия была не закрыта за месяц она попадёт в новый месяц или это произвольный срез активных вакансий на некотору. текущую дату?

MrSotnik Автор
19.05.2026 08:27Полностью поддерживаю вас, это срез. Но тут я поясню, что обычно на hh вакансия падает в архив спустя месяц после публикации автоматом

domix32
19.05.2026 08:27Ну, условно публикации случались 29 числа, а вы с парсером полезли 30 того же месяца и потом следующего взяли чуть пораньше числа 28. Вака пережила архивацию и попала в оба дайджеста.
Аналогичная история с виртуальными вакухами - их открыли, пару дней спустя закрыли, а вы их и не видели вовсе.
Срез конечно тоже неплохо, но стоило уточнить методологию сбора данных для понимания насколько цифры могут отличаться от реальности.

MrSotnik Автор
19.05.2026 08:27Ну так не получилось бы так как я собираю ID и актуализирую по ID даты её появления, последующие не собираю и игнорю

IvUs
19.05.2026 08:27Может, дело в другом совсем? Встроенный Python появился в Excel два года назад. Соответственно, постепенно начинают требоваться люди которые умеют применять Python в Excel.

domix32
19.05.2026 08:27А вот тут я не знаю. Это опыт знакомых вайтишников, которые подались после курсов в эти поля. Не могу сказать с какой средней версией экселей они там работают и какой средний процент легаси на VB был переписан на питон, учитывая что многие подобные кампании уже лет 10-15 существуют, а то и раньше.

hullaballoo
19.05.2026 08:27А однострочники на SQL в экселе можно писать с версии 2010.
Итого, получается золотое комбо: эксель, питон и SQL в едином интерфейсе.

MTyrz
19.05.2026 08:27Полный оффтоп: автор, у вас в подписи в профиле что лишнее, буква или запятая?
Паршу, чищу, обучаю

MrSotnik Автор
19.05.2026 08:27Это не опечатка, это диагноз судя по всему. Я действительно паршу данные)))
Окей, спасибо, поправлю, всё равно мне не нравилось это описание профиля. Ставлю лайк за внимательность, за пол года Вы первый кто обратил на это внимание.
MTyrz
19.05.2026 08:27Я действительно паршу данные)))
И это хорошо видно прямо из статьи. Но звучит так, что я не удержался )

DMariya
19.05.2026 08:27Если сделать аналитику текста вакансий, то обнаружите более интересные закономерности). Попробуйте в этом разрезе распарсить базу по параметрам работодателя и самого описания. Это вам подгон для продолжения статьи.))

RepppINTim
19.05.2026 08:2762% вакансий без вилки - это базовый фильтр на неуверенность. Никто не хочет светить бюджеты, чтобы текущие мидлы в штате не пошли просить прибавку

jskake
19.05.2026 08:27А сейчас можно как-то парсить или узнать какая зп на hh.ru является рыночной для опреденных профессий?

WASD1
19.05.2026 08:27Рынок Python в России - это не рынок профессии. Это рынок ярлыков, и HR-ярлык на твоей вакансии влияет на твою зарплату сильнее, чем твой реальный стек.
Оператор перфорационной машины / программист-кодировщик / программист на [ЯП-X, например - ]python - всё это временные профессии.
А по-сути навыки, которые на недолгое время стали профессией из-за несовершенства технических средств.
То есть ни (условно) в 2010 ни в 2026 году не нужен человек, который умеет только лишь писать код на python, а нужен челвоек, который решает проблему реального мира при помощи разработки программного продукта (где программировать на языке-X - полезный, но далеко не самый сложный навык).

zo0Mx
19.05.2026 08:27спасибо за интересную статью и оригинальную подачу. я так сильно уже устал читать нейрослоп местный, вы не представляете, ваша статья как глоток свежего воздуха.

MrSotnik Автор
19.05.2026 08:27Спасибо за комментарий, приятно) стараюсь

Ussuriiskiy_Bobr
19.05.2026 08:27Но ведь видно, что текст иишный. Вы, конечно, его отредактировали и работу сделали (надеюсь), сами, но текст-то написан чатом гпт. Без претензий, просто видно.

MrSotnik Автор
19.05.2026 08:27Даже не знаю, что и ответить...

affyt
19.05.2026 08:27Сложные речевые обороты по всему тексту и банальные ошибки, где недоглядели. ИИ никогда не делает грамматических ошибок, пока не попросишь. Обычный хороший человеческий текст, просто сухих выжимок много, отсюда и кажется

Altair2021
19.05.2026 08:27ИИ никогда не делает грамматических ошибок
В русском -- делает, хоть и редко. Уверен, если поискать -- и в английском будут.
А вообще, дожили -- отсутствие грамматических (да и не только) ошибок в тексте считается использованием LLM. Обесцениваете знания тех, кто хорошо учил язык.

SomebodyElse
19.05.2026 08:27У вас
волчанкаии-фобия. Нормально все с текстом, и даже тире все короткие.

Oieth
19.05.2026 08:27Вот эти рассуждения на тему меток ИИ-генерации текста уже начинают надоедать.
А на чем обучался ИИ? (а кто его сделал таким? кто?) Неужели ИИ обучался на реальных текстах реальных людей? Что первее - яйцо или курица?
Ставить длинные тире, придавать тексту структуру, резюмировать и ставить акценты - не преступление.
MrSotnik Автор
19.05.2026 08:27Ну эта история с длинными тире скорее для научных публикаций обычно, простой человек не будет каждый раз нажимать Ctrl + Alt + минус. Хотя бываю наверное и такие, кого приучили к этому в институте, или по роду деятельности

Oieth
19.05.2026 08:27Ставлю длинное тире в аутлуке. В нём работает автозамена короткого тире на длинное.
Я не знаю почему, но мне прям это нужно. Там, где нет такой автозамены - мне некомфортно. А хот-кей я тоже не использую.

Neusser
19.05.2026 08:27простой человек не будет каждый раз нажимать Ctrl + Alt + минус.
Не будет, потому что это ничего не дает.

MrSotnik Автор
19.05.2026 08:27Не перестаю удивляться хабру. Статистика по оценкам на 8:35 20.05.26

2 человека обладают очень ценным мнением 
Astroscope
19.05.2026 08:27Не перестаю удивляться хабру.
За низкий технический уровень я с проголосовавшим не согласен, но это мое мнение, я вполне могу быть неправ. А вот что текст похож на сгенерированный? Тут вот ведь какая загогулина получается. Любой текст, даже совершенно шизофазичный, похож на любой другой текст. Любой человеческий похож на любой человеческий или сгенерированный. Любой сгенерированный похож на любой человеческий или сгенерированный. То есть, чисто формально, вообще любой по сути без исключения текст похож на сгенерированный. Значит, причина минуса указана верно - текст статьи, как и вообще примерно любой текст в мире, похож на сгенерированный. Заметьте, кто-то поставил минус не за то, что вы, вместо писать вручную, скопипастили ИИ-генерацию - нет. Никто вас в этом и не думал подозревать. Кто-то поставил вам минус за то, что ваш текст похож на сгенерированный. Как и почти любой другой текст в мире. Выглядит так.

SomebodyElse
19.05.2026 08:27В последнее время в интернете развилась патологическая мания везде видеть ИИ. С одной стороны, причины понятны, действительно сгенерированного мусора стало много, но с другой вполне нормальных авторов и тексты обвиняют совершенно безосновательно, просто потому что “везде же сейчас ИИ, так ведь?”

Astroscope
19.05.2026 08:27Я даже более того скажу. Пишущему вручную (для удовольствия, из принципа или по другим подобным убеждениям) автору такие беспочвенные по сути, а иногда еще и хамские по форме обвинения могут, наконец, изрядно надоесть, и он, автор, писать вручную перестанет. Что при этом выиграют ИИ-фобы мне непонятно, потому что опустевшую нишу ручного текста намного легче заполнить ИИ-генерацией, а вот наоборот - не знаю, но сильно сомневаюсь. Так-то я тоже не поддерживаю подмену ручного труда убедительно выглядящей, но все же бездумной генерацией, однако огульно обвинять всех и каждого я бы поостерегся - это первое. А второе, будем откровенны, некоторые вручную пишут так, что после них ИИ-генерация - прямо изысканное удовольствие для тонкого ценителя печатного слога. Ни на кого конкретно не намекаю, да и не нужно ни на кого конкретно намекать - примеры повсюду в асортименте.

danon13
19.05.2026 08:27Это уже не датасет - это археологический срез..
По факту это не роль, это «мы не знаем, как назвать, но нам нужен кто-то с Python».
..это не рынок профессии. Это рынок ярлыков...
Это не зарплата, это график биткоина.
...это не «hh виноват», это рынок не хочет торговаться...
Это не профессии - это попытка...
Почему-то, когда пользователи в комментариях активно расписывают аргументы, и комментарии получаются большими, то таких речевых оборотов там не бывает. Заставляет задуматься...

DaneSoul
19.05.2026 08:27Учителя - это отдельный жанр на hh. Когда я увидел «80% ширина вилки», я сначала подумал, что это баг в коде. Перепроверил трижды. Нет, не баг. Это просто работодатели сферы образования настолько не знают, сколько готовы платить, что вилка получается шире, чем у кого либо.
А точно в вилке только полная занятость?
А то можно пару занятий в неделю проводить, а можно каждый день несколько групп на потоке, и было бы странно предлагать одинаковую зарплату с такой разной нагрузкой.

Nick0las
19.05.2026 08:27Аналитика конечно интересная, поразглядывал картинки. Спасибо за проделанную работу. Хотелось бы по другим языкам тоже, но с отключением АПИ видимо только если сделать бота с браузером.
Отдельно хочу отметить такой факт: сделка (покупка, устройство на работу, …) по своей сути напоминает квантовое измерение. Если сделка произошла - то цена (зарплата, … ) существует, а состояние существовавшее до измерения разрушается. Точно так-же как когда элементарная частица взаимодействует с детектором. Ну а если сделка не происходит - то цена (зарплата, …) не существует. А цифры в объявлениях это просто чьи-то ожидания. Но увы, данные о реальных зарплатах находятся совсем в других базах, и во первых нам недоступны, а во вторых там совсем нет метаданных по требованиям.

K0styan
19.05.2026 08:27Рынок Python в России - это не рынок профессии. Это рынок ярлыков
Касается примерно всего, что комплекснее одной очень узкой роли. Под "менеджером продукта", например, могут подразумевать и IT-продактов (что само по себе спектр), и специалистов по товарной линейке бренда, и даже медицинские представители с ассортиментщиками маркетплейсов встречаются. Даже в рабочих специальностях подобная каша не исключена - просто недоисследована.

Imperius14
19.05.2026 08:27Спасибо за проведенную работу, лайк поставил, но самая первая таблица ужасно оформлена, я беглым взглядом подумал что там сортировка по дате а не по колву, подумал что айти умер. Можно было бы специально пометить рядом или в самой таблице месяцы провалом, жирным шрифтом и звездочкой к примеру.

MrSotnik Автор
19.05.2026 08:27Извиняюсь за первую таблицу, просто показала всё как есть, её наличие в принципе то бессмысленно, так как далее идёт график уже чётко демонстрирующий устройство данных по датам. Спасибо за комментарий)

economist75
19.05.2026 08:27Как дата-аналитик плюсанул. Особо отмечу у автора нестандартный набор графиков с верным уклоном в hbar и отрицательными значениями (но подписи надо резать по длине, не дожидаясь перитонитов и наложений, тут хорошо помогает tight_layout=1).
Однако очень заметная часть выводов сделана по крайне малых выборках - так нельзя, да и удивляться после этого ничему не стоит (но читается, конечно, интересно).
По поводу сабжа и стека/навыков: да, тенденции выхвачены верно - HH превратили Python в еще один малозначащий флажок в резюме (как раньше произошло с SQL, HTML, 1С и даже Excel). Ведь все соискатели уже прошли курсы, после которых 80% из них не понимают ООП, а 40% не используют списковые включения и генераторы. Что, тащемто, не так и фатально: ИИ-агенты кроят рынок и само будущее человеческого труда в РФ совершенно непроглядно. Ждем epic fail ИИ-кода и планетарных техногенных катастроф для корректировки курса.

StjarnornasFred
19.05.2026 08:27Вроде бы сейчас есть подвижки в правильном направлении: хыхы внедрил проверки скиллов, можно выставлять уровень знаний и верифицировать его. Вряд ли это работает идеально (тесты, например, можно и списать), но всяко лучше, чем просто бессмысленный флажок.

shakhovska
19.05.2026 08:27Про Excel в Python-вакансиях это прям боль и реальность одновременно, иногда кажется, что стек требований живёт своей жизнью

StjarnornasFred
19.05.2026 08:27Почему? Я вот не питонист, но сейчас очень много работаю в Excel и мне несколько раз доводилось писать на питоне (с помощью Qwen) скрипты для экселя, которые очень помогли с автоматизацией рутины. Возможно, кто-то использует таблицы в качестве источника данных для обработки их программой, написанной на питоне. Почему бы этим двум навыкам не сочетаться?

sYB-Tyumen
19.05.2026 08:27"Python для автоматизации Bash-скриптов" - это сильно. Просто есть эмпирическое правило. Если bash-скрипт требует сложной логики и уже плохо читается, возможно, стоит его переписать на python, рефакторить потом проще будет.

mmg26
19.05.2026 08:27Это не зарплата, это график биткоина. У меня единственное объяснение - маленькая выборка (n=344 за всё время) + редкие, но очень дорогие вакансии типа «ищем сеньора в банк за 500К». Одна такая вакансия в месяце с n=10 - и медиана улетает в космос.
Но если усреднить шум - рост реальный. Дата-сайентисты - единственная «инженерная» роль, которая стабильно растёт в цене. Учителям и тестировщикам это тоже удалось, но из совсем другой стартовой точки.
Зарубежные компании с ERP, MDM и пр. сборищем большого количества данных ушли. Это все нужно перетаскивать в 1С и всякие полуживые opensource решения, у всякого ритейла, финтеха и остальных данных пруд пруди, а цена ошибки слишком высока.

max9
19.05.2026 08:27про декабрь-январь все просто. в декабре поток кандидатов падает до минимума, никто не рыпается и ждет годовую-квартальную премию, поэтому найм просто понимает что бесполезно чота искать. это я вам как наниматель говорю.
и да, интересно почему в Путилково, в котором плюнь в окно в мкад попадешь, такой +к зп. совершеннейшая аномалия.

314Sun
19.05.2026 08:27Рынок Python в России - это рынок Москвы по большей части.
Насколько знаю от людей, публикующих вакансии, там действует правило - всё, что подразумевает удалёнку(полную, без гибрида и и прочего мелкого шрифта), публикуется в Москве для повышения охватов, где бы компания не находилась. На то собственно она и дефолт сити

MrSotnik Автор
19.05.2026 08:27Такие вакансии публикуются по всем городам миллионникам, не только по Москве. Скажу как человек который очень хорошо общающийся с рекрутёром. Как раз они и помогли мне разжевать некоторые данные для анализа))

1fid
19.05.2026 08:27Вы можете проанализировать, сколько позиций реально закрывается, а какие вакансии являются перманентными?

molnij
19.05.2026 08:27Это не зарплата, это график биткоина. У меня единственное объяснение - маленькая выборка (n=344 за всё время) + редкие, но очень дорогие вакансии типа «ищем сеньора в банк за 500К». Одна такая вакансия в месяце с n=10 - и медиана улетает в космос.
Могли бы пояснить этот момент? Вроде ж медиана как раз для того и медиана, а не среднее, чтобы слабо реагировать на выбросы?

MrSotnik Автор
19.05.2026 08:27Да, но выборка на 64К+ в 344 довольна мала для целого направления в IT. Это примерно 38 вакансий (если просто тупо поделить на 9 месяцев) в месяца на всю страну. Так как здесь тем болеем не приводились данные к джунам, мидлам, сеньорам, по этому если в 1 месяц набирали чисто синьоров в ML, а в другой стажёров или джунов, то это количество можно считать маленьким для нормального построения медианы на общую более точную оценку. По этому как я и говорю в статье я не бросаюсь с громкими заявлениями о DS. Как то так))






atues
Интересно. Но что по другим языкам? Там такие же тенденции? А то получается, что только один Python так себя ведет, а у остальных - шоколад и смузи на пляже.
Плюсую
MrSotnik Автор
Сам хотел после тега Python поставить код на Linux-сервер и собирать данные по всем популярным языкам каждый день, но API hh внесла свои коррективы(( Грустно, по этому статья вышла сейчас, а не спустя год или 2
RepppINTim
Можно б было конечно поднять ферму ботов с имитацией браузера, но это уже скорее реверс-инжиниринг, а не дата-саенс...