«Сколько платят программисту» не имеет одной цифры. Junior в Польше и senior в Швейцарии — разные рынки, разные налоги, разный договор. Таблица «2026, gross/год» из блога протухает быстрее, чем вы дочитаете. Она ещё и смешивает месячные злотые с годовыми долларами в одной сетке — так сравнивать нельзя.
Ниже — какие оси вообще имеют смысл, чем gross не равен «на руки», как собрать личную вилку по живым слотам и почему грейд внутри страны обычно важнее языка. Конкретных медиан США/Германии/Сербии здесь нет: берите текущие объявления и калькулятор налога, не скрин из статьи. Скачок junior→senior в деньгах: что прибавляет грейд. Торг: первый день и пакет.
Коротко:
- Страна и право платить вам — сильнее стека. Один и тот же middle в разных юрисдикциях живёт в разных вилках.
- Внутри страны грейд и зона вреда двигают деньги сильнее, чем «перешёл с PHP на Go» без смены объёма.
- Сравнивайте один формат: валюта, gross/net, месяц/год, трудовой/B2B. Смешанная таблица врёт.
- Высокий gross при высоких налогах и аренде может проиграть среднему gross в более дешёвом городе.
- Личную вилку собирайте из 15–20 живых слотов вашего стека и формата в каталоге, не из годового обзора.
Четыре оси, не одна «средняя по IT»
Страна и регион задают потолок и пол. Хаб дороже периферии той же страны. Remote «worldwide» часто всё равно режет географию внизу объявления.
Грейд внутри страны — обычно второй по силе фактор. Разница junior и senior кратная, не «ещё один фреймворк». Title врёт: читайте объём. Ожидания уровня: что ждут на грейде.
Роль: дефицитные контуры (платформа, данные, security) часто стоят дороже широкого frontend или ручного QA на том же грейде. Это тенденция, не приговор: сильный senior frontend обгоняет слабый backend. Не меняйте профессию только из таблицы «DevOps платят больше».
Тип компании: бигтех и финтех часто кладут акции и бонус, аутсорс — ставку. Сравнивать TC FAANG с B2B аутсорса в одной строке бессмысленно. Даже два «продукта» не равны: внутренний банк в Варшаве и биржа в Лондоне — разные комитеты и разные потолки. Смотрите юрлицо оффера, не бренд на футболке.
Размер команды и онкол входят в цену, хотя в вилке вакансии их нет. Единственный на платежи ночью — это не тот же middle, что закрывает тикеты в рабочее время. Пакет без строки про дежурства неполон. Деньги за вред читайте в договоре, не в обзоре «по ролям».
Почему таблица из блога ломает голову
В одной сетке смешивают: США за год в долларах с RSU, Германию gross/год, Польшу PLN/месяц, Сербию евро в месяц. Без приведения к одному базису вы «сравниваете» несопоставимое. Плюс дата: вилка 2024-го в Берлине не ваш оффер в 2026-м.
Levels.fyi полезен для публичных грейдов больших продуктовых компаний. Он плохо переносит junior QA в Нови-Саде. StepStone — про Германию, не про «весь ЕС». Локальные обзоры — про выборку агентства. Живая вакансия с вилкой ближе к вам, чем все три, если совпали роль, грейд, формат, город.
Не цитируйте на созвоне «в статье было €65–80k middle». HR не покупает блог. Он покупает слот. Как говорить цифру: ожидания по зарплате.
Gross, net, жизнь
Gross — до налога и взносов. Net — на счёт. Аренда, страховка, транспорт — уже третий слой. Высокий немецких gross после налога и мюнхенской квартиры может не «победить» более скромный пакет в городе дешевле. Это не призыв ехать «где дешевле». Это запрет сравнивать заголовки офферов как счёт в банке.
B2B «больше на руки» без отпуска, больничного и без визового основания — четвёртая ось, не победа. Польский JDG vs umowa — в первом шаге по Польше и полном визовом гайде. Не считайте B2B-ставку как трудовой оклад.
Акции и sign-on не равны месячной ставке. RSU весятся годами и падают. Sign-on — раз. На руки первого года ≠ на руки третьего. Читайте vesting, не «TC как в твите».
Как собрать свою вилку за неделю
- Зафиксируйте сегмент: роль, грейд по объёму, формат договора, гео команды, валюта.
- Откройте 15–20 актуальных слотов: каталог, плюс доска страны, если она есть. Германия: срез. Польша: срез. Сербия: срез. Удалёнка: remote.
- Выкиньте карточки без объёма: «динамичная команда». Они не якорь.
- Не усредняйте США с Польшей. Медиана только внутри сегмента.
- Нижняя: ниже не возьмёте даже при интересной задаче. Верхняя: готовы объяснить объёмом.
Вилки в объявлении нет — это не «мало». Это «якорь только ваш». Не подставляйте таблицу из этой статьи: её больше нет специально.
Пример 1. Таблица блога против десяти карточек
Илья middle backend, цель — Берлин. В чате «middle Германия 65–80k». Он пишет это в скрининге. Оффер 62k gross employment, гибрид, онкол. Илья обижен на блог.
За неделю он выписывает двенадцать живых Berlin backend middle: часть EU-only, часть sponsorship, часть B2B. В тех, куда он вообще проходим, вилки разные и часто ниже мема. Нижняя после выборки — конкретная, его. Обида на статью не аргумент для HR. Аргумент — объём слота и выборка того же формата. Если из двенадцати он проходим в три — якорь по трём, не по мему «Германия middle». Остальные девять не его рынок, даже если город тот же.
Гайд по немецкому поиску без порогов Blue Card: работа в Германии.
Пример 2. Месяц в злотых и год в евро
Аня сравнивает польский B2B «в месяц» с немецким gross «в год», делит одно на другое в голове и решает, что Польша «почти как Берлин».
Приведите оба к одному: год, одна валюта, налог по типу договора, аренда в конкретном городе. После этого разрыв обычно снова становится честным. Если цель — первый ЕС, деньги не единственная ось: статус, язык ведомства, очередь. Польша как первый шаг: отдельный текст. Калькулятор налога — официальный или бухгалтер, не «вычти 40% как в чате». Страхование и пенсионные взносы на B2B вы сами добираете в уме, иначе net вран.