Java 17/21, Spring Boot, PostgreSQL и Kafka всё ещё образуют узнаваемый набор для вакансий Senior Java, но за одинаковым title нередко скрываются три разные роли. Senior Java разработчик может поддерживать продуктовый backend, строить низколатентные системы или фактически закрывать обязанности техлида. Для кандидатов и нанимающих команд это означает простую вещь: сравнивать нужно не названия позиций, а глубину задач и границы ответственности.
Такой вывод следует из разбора вакансий, о котором сообщает Habr / Карьера. Автор материала, IT-рекрутер Юлия, сопоставила описания позиций по стеку, типу задач и ожиданиям от человека. Базовый технический профиль действительно повторяется: Java, Spring или Spring Boot, реляционная база данных, брокер сообщений, API и микросервисная архитектура. В актуальных объявлениях к этому ядру регулярно добавляются Hibernate, RabbitMQ и Kubernetes.
Проблема начинается сразу после списка технологий. В одном случае компании нужен разработчик для привычного enterprise-backend: сервисы на Spring, интеграции, REST API, PostgreSQL и Kafka. В другом — специалист по высокоскоростным системам, который обязан уверенно работать с Java Memory Model, многопоточностью, сборщиками мусора, lock-free-алгоритмами и задержками. Формально обе позиции могут называться одинаково, но опыт, который поможет в первый рабочий день, у таких кандидатов будет разным.
Стек перестал быть кратким описанием роли
Даже совпадение по конкретной технологии мало говорит о реальной работе. Kafka для одной команды — это producer и consumer в уже настроенной инфраструктуре. Для другой — основа event-driven-архитектуры, Kafka Streams, гарантии доставки и разбор инцидентов вокруг потока событий. PostgreSQL может ограничиваться ORM и готовыми миграциями, а может требовать чтения execution plans, настройки индексов и поиска причин медленных запросов. Kubernetes иногда остаётся фоном, где просто работает приложение, а иногда становится ежедневным инструментом разработчика.
Отсюда и слабое место привычной самооценки «я совпадаю с вакансией на 80%». Одинаковый набор ключевых слов в резюме не показывает, кто писал бизнес-логику в готовой системе, а кто проектировал сервисы, устранял production-инциденты и принимал решения под нагрузкой. Рынок продолжает искать по словам Java, Spring и Kafka, но реальная ценность кандидата определяется тем, какие последствия он уже видел у своего кода — от неудачной миграции до деградации сервиса в продакшене.
Ещё сильнее размывает термин сам уровень seniority. В одних вакансиях senior самостоятельно реализует сложные части продукта. В других от него ждут участия в архитектуре, технических решений и code review. В третьих к этому добавляют наставничество, формирование подходов для новых сервисов и обучение команды. А в описаниях Senior Java Developer / Tech Lead уже появляются управление разработчиками, постановка задач, контроль выполнения и технические интервью — полноценная зона ответственности лида.
Годы опыта не заменяют карту пройденных задач
Поэтому вопрос «сколько лет нужно до Senior?» всё меньше помогает и кандидату, и работодателю. Пять или семь лет можно провести в одном типе систем и ни разу не столкнуться с low latency, сложной распределённой архитектурой или глубокой оптимизацией JVM. За тот же срок можно пережить несколько миграций, высокую нагрузку, дежурства по инцидентам, проектирование новых сервисов и менторство. Стаж легко превратить в фильтр в ATS, но он плохо описывает содержание опыта.
Показателен пример вакансии МТС Банка, приведённый в материале. В заголовке указан «Ведущий Java разработчик», а в самом описании компания пишет, что ищет Java-разработчика уровня middle. При этом требования включают Java 17+, Spring Boot, Kafka, PostgreSQL, Kubernetes, участие в архитектуре, code review и работу с инцидентами. Для соискателя это не просто редакторская шероховатость: из такой формулировки неясны ни уровень самостоятельности, ни полномочия, ни критерии оценки на испытательном сроке.
Практичнее раскладывать каждую позицию на три слоя: технологии, задачи и ответственность. По стеку стоит проверять не только наличие знакомого названия, но и требуемую глубину работы с ним. По задачам — искать собственный опыт highload, интеграций, миграций, распределённых систем или performance-задач. По ответственности — отдельно выяснять, ожидаются ли только разработка, архитектурные решения, наставничество или управление командой. У кандидата может быть сильное совпадение по стеку и слабое по техническому лидерству — и это не провал, а точное описание текущего профиля.
Для работодателей вывод не менее прикладной: title «Senior Java» уже не сокращает коммуникацию, если за ним не указаны контекст системы и пределы полномочий. Senior Java разработчик останется удобной рыночной меткой, но всё чаще она будет требовать расшифровки: какую проблему должна решить команда и за что именно новый человек отвечает. Чем раньше компании перестанут прятать эту информацию за набором из пятнадцати технологий, тем меньше собеседований будет заканчиваться взаимным удивлением.