Files
career-ops-vbleroy/reports/026-dev-company-23-2026-07-07.md
redlineo d295c7f139
Release Please / release-please (push) Failing after 4m2s
Web CI / web typecheck + build (push) Successful in 3m39s
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 1h1m49s
CodeQL Analysis / Analyze (go) (push) Failing after 1h1m49s
init
2026-07-13 10:14:00 +03:00

25 KiB
Raw Permalink Blame History

Оценка: Dev Company 23 — Frontend разработчик Senior

Дата: 2026-07-07 Архетип: Frontend Developer (Vue.js) — primary archetype (сильное техническое совпадение, разрыв по заявленному стажу) Балл: 2.4/5 URL: https://hh.ru/vacancy/134920082 Legitimacy: Proceed with Caution PDF: не сгенерирован (балл < 3.0, порог для авто-PDF)


A) Резюме роли

Поле Значение
Архетип Frontend Developer (Vue.js) — primary; стек — точное попадание в архетип кандидата
Domain Frontend (SPA-приложения на Vue 3, бизнес-логика на TypeScript)
Function Build + частично Mentor (код-ревью, менторство junior-разработчиков)
Seniority Senior: заявлено 4+ года опыта с Vue.js и 6+ лет общего фронтенд-опыта
Формат работы Полностью удалённо, из любой точки; график 5/2, 8-часовой рабочий день
Размер команды Не указано явно
Оформление Трудовой договор ИЛИ договор ГПХ (кандидату предлагается выбор — обычно означает вариативность в зависимости от статуса кандидата: самозанятый/ИП/физлицо)
Локация Москва (юридически), но роль полностью удалённая — конфликта с политикой кандидата «Тула, без переезда» нет
TL;DR Технически один из самых точных Vue 3/TS/Pinia матчей среди всех рассмотренных вакансий, с отличной компенсацией (от 270 тыс. ₽/мес до вычета налогов) и полностью удалённым форматом — но заявленный стаж (4-6 лет) более чем вдвое превышает фактический опыт кандидата (~1.7 года), что создаёт реальный риск отсева на этапе скрининга.

Vibe команды (качественный сигнал, не входит в числовую оценку): Судя по формулировке JD — «команда, которая ценит экспертизу, инициативу и желание делать крутые продукты» — явный акцент на инициативе и экспертизе, что можно трактовать как сигнал ценности автономии разработчиков. Роль явно предполагает участие в архитектурных решениях («участие в принятии архитектурных решений фронтенда») — прямое упоминание права голоса в тексте. Упоминание code review и менторства junior-разработчиков — сигнал в пользу культуры код-ревью. Прямых упоминаний гибкого графика сверх «5/2, 8 часов» нет, хотя формат полностью удалённый «из любой точки» сам по себе высокая степень гибкости.


B) Совпадение с CV

Требование JD Совпадение с cv.md
Vue 3 (Composition API) Прямое совпадение: «Здесь ЕКОМ» — фронтенд с нуля на Vue 3, Composition API
TypeScript, сложная бизнес-логика Прямое совпадение: ЕКОМ — TS в продакшене, сложная логика фильтрации заказов по 9 параметрам
Pinia (state management) Прямое совпадение: Pinia указана в стеке ЕКОМ
Оптимизация производительности Частичное совпадение: постраничная загрузка в «Избранное» («Здесь Аптека») как пример оптимизации, но не на уровне SPA-архитектуры целиком
Участие в архитектурных решениях фронтенда Совпадение: спроектировала RBAC-модель авторизации в ЕКОМ, самостоятельно, с презентацией бэкенд-команде
Код-ревью, менторство junior Частичное совпадение: обучила коллегу с 11-летним стажем работе с Git/Feature Branching — менторский опыт есть, но не формализованное код-ревью на постоянной основе
JavaScript, HTML5, UX/HTML Прямое совпадение (раздел «Навыки»)
Nuxt Пробел — Nuxt указан в cv.md только в разделе «Быстро осваиваю», нет продакшн-опыта
4+ года опыта с Vue.js, 6+ лет общий фронтенд-опыт Существенный пробел. У кандидата ~1 год работы с Vue 3 (ЕКОМ) + ~6 месяцев (РМК) = менее 1.7 лет коммерческого опыта в целом, из них с Vue — даже меньше формально заявленного порога

Пробелы

  1. Стаж (4-6 лет vs ~1.7 года) — hard blocker для формального ATS/HR-фильтра, хотя не невозможный для прохождения при сильном техническом собеседовании.
    • Может ли кандидат продемонстрировать смежный опыт? Да — greenfield-разработка ЕКОМ с нуля, самостоятельное архитектурное решение (RBAC), одновременное ведение 3 продуктов — это глубина ответственности, которая частично компенсирует нехватку календарного стажа.
    • Портфолио-проект, закрывающий пробел? Нет отдельного демо.
    • Конкретный план: в сопроводительном письме явно предложить проверку через тестовое задание/техническое интервью вместо формального отсева по годам — «не соответствую по формальному стажу, но стек и глубина ответственности за ЕКОМ (greenfield с нуля) могут быть интересны для технической оценки».
  2. Nuxt — nice-to-have (упомянут в списке требуемых навыков, но не выделен как обязательный). Стратегия: честно отметить «есть Nuxt в списке инструментов для быстрого освоения, готова закрыть за короткий срок при необходимости» — не заявлять продакшн-опыт, которого нет.

C) Уровень и стратегия

Уровень в JD: Senior, формальный порог 4-6 лет опыта. Естественный уровень кандидата для архетипа Frontend (Vue.js): Junior→Middle (переходный).

План «продать senior без обмана»:

  • Вести с масштабом ответственности, а не с годами: «спроектировала и реализовала с нуля фронтенд системы управления заказами и логистикой для сети ~1200 аптек, включая архитектурное решение по авторизации (RBAC)».
  • RBAC как дифференциатор — редкая для грейда/стажа инициатива, прямое попадание в требование «участие в архитектурных решениях».
  • Честно обозначить фактический стаж (~1.7 года) без попытки скрыть или размыть цифру — контраст между малым стажем и объёмом ответственности работает в пользу кандидата только при честной подаче.

План «если понизят уровень»:

  • Принять понижение до Middle только при сохранении компенсации в диапазоне ≥ таргета кандидата (100 000+ ₽/мес на руки) — учитывая, что даже нижняя граница этой вакансии (270 тыс. ₽ до вычета ≈ 235 тыс. ₽ на руки после НДФЛ) существенно выше таргета, есть большой запас для переговоров даже при понижении грейда.
  • Договориться о пересмотре через 6 месяцев с конкретными критериями (закрытие архитектурных задач без сопровождения сеньора, полноценное код-ревью на постоянной основе).

D) Компенсация и спрос

Зарплата в вакансии: от 270 000 ₽/мес, до вычета налогов (gross), верхняя граница не указана.

Пересчёт в net: net ≈ gross × 0.87 → от ≈234 900 ₽/мес на руки (нижняя граница; верхняя неизвестна).

Рыночные данные (WebSearch, RU market, июль 2026):

Источник Данные
Senior Frontend, Москва (медиана, hh.ru, февраль 2026) 287 500 ₽/мес
Senior Vue Developer (широкий диапазон) 480 000–650 000 ₽/мес для сильных специалистов
Vue vs React Vue-разработчики в среднем получают на 8-12% меньше React-специалистов того же грейда

Оценка: Нижняя граница вилки (270 тыс. gross ≈ 235 тыс. net) заметно выше таргета кандидата (100 000–120 000+ ₽/мес на руки) и близка к рыночной медиане для формального Senior. Даже если реальный оффер окажется на нижней границе вилки из-за несоответствия по годам стажа, компенсация всё равно останется существенно выше целевого диапазона кандидата.

Вывод: Компенсация одна из сильнейших сторон этой вакансии — единственный вопрос в том, пройдёт ли кандидат формальный отсев по годам стажа до того, как компания увидит реальную глубину опыта.


E) План персонализации

# Раздел Текущее состояние Предлагаемое изменение Почему
1 Summary (PDF) Общий акцент на Vue3 + Flutter dual-track Для ЭТОЙ вакансии — вести исключительно с Vue 3 + Composition API + TS + Pinia, убрать Flutter Роль чисто Frontend Vue Senior, Flutter не релевантен и отвлекает от сильного технического совпадения
2 Опыт — заголовок роли «Frontend/Flutter-разработчик» Показать как «Frontend-разработчик (Vue 3 / TypeScript)» Прямое совпадение с точным заголовком роли повышает ATS keyword-match
3 Проектные буллеты RBAC упомянут как один из пунктов Вынести архитектурное решение (RBAC) на первую строку под ЕКОМ — прямое попадание в требование «участие в архитектурных решениях» Компенсирует формальный пробел по стажу через демонстрацию реальной архитектурной ответственности
4 Ключевые слова Vue 3, TS, Pinia уже есть Явно добавить «Composition API», «код-ревью», «менторство» (обучение коллеги с 11-летним стажем — честный пример менторства) Прямое совпадение с формулировками JD («код-ревью и менторство junior»)
5 Сопроводительное письмо — Явно и честно указать разрыв по годам стажа и предложить решение через техническое собеседование/тестовое задание Честность повышает доверие рекрутера при формальном несоответствии критериям

F) План собеседований

# Требование JD История STAR+R S T A R Reflection
1 Участие в архитектурных решениях фронтенда RBAC-модель в ЕКОМ Не было модели разграничения прав между отделами (логистика/заказы) Спроектировать и объяснить бэкенду ролевую модель авторизации Использовала ИБ-образование, спроектировала роли/группы/права, презентовала бэкенд-команде Внедрено разграничение по отделам, объяснено и принято командой Архитектурная ответственность не всегда пропорциональна годам стажа — важно уметь показать это прямо, не извиняясь за малый стаж
2 Сложная бизнес-логика на TypeScript Список заказов с фильтрацией по 9 параметрам Неудобные таблицы 1С не позволяли эффективно отслеживать проблемные заказы Спроектировать и реализовать интерфейс с множественной фильтрацией на TS Реализовала фильтрацию по 9 параметрам, заменив legacy-инструмент Используется логистикой, клиентским отделом, техподдержкой и разработчиками Сложность бизнес-логики измеряется не только объёмом кода, но и числом заинтересованных отделов, которые полагаются на результат
3 Код-ревью / менторство junior Обучение коллеги системе версионирования Коллега с 11-летним стажем не работал с Feature Branching, хаотичные релизы Обучить и внедрить процесс версионирования Обучила коллегу, внедрила Git Flow в GitLab Команда перешла на стабильные еженедельные релизы Менторство «наоборот» (обучение более опытного коллеги новому инструменту) — сильный сигнал уверенности в экспертизе, несмотря на меньший общий стаж
4 Оптимизация производительности Диагностика и фикс бага «Избранное» Раздел не открывался — все товары грузились одним запросом Найти причину и реализовать постраничную загрузку Диагностировала проблему самостоятельно, реализовала pagination Жалобы пользователей прекратились Оптимизация производительности начинается с точной диагностики, а не только с готовых паттернов
5 Работа с state management (Pinia) График курьеров на базе vue-cal Расписание вносилось вручную SQL-запросами разработчиков по заявке логистики Спроектировать интерфейс drag-and-drop с использованием Pinia для состояния Реализовала календарь на vue-cal с управлением состоянием через Pinia Логистика полностью самостоятельно управляет графиком без участия разработчиков Grand-scale автономизация процесса — показатель того, что решение снимает нагрузку с целой команды, а не только с одного пользователя

Рекомендуемый кейс: «Здесь ЕКОМ» целиком — greenfield-продукт, максимально близкий по масштабу и характеру задач (Vue 3 SPA, сложная бизнес-логика, архитектурные решения) к описанной в JD роли.

Вопросы-ловушки:

  • «Мы ищем 4-6 лет опыта, у вас меньше 2 — почему претендуете на Senior?» → честно: «Формально меньше — 1.7 года, но за это время самостоятельно довела greenfield-продукт до продакшена, включая архитектурное решение (RBAC), которое обычно не доверяют разработчику с таким стажем. Готова подтвердить это на техническом собеседовании».
  • «Есть опыт с Nuxt?» → честно: «Продакшн-опыта нет, но Nuxt в списке инструментов, которые быстро осваиваю; Vue 3 + Composition API — основной стек последний год».
  • «Почему готовы работать по ГПХ, если это возможно?» → уточнить у рекрутера условия и разницу в защите (ГПХ vs трудовой договор) до согласия, не соглашаться вслепую.

G) Проверка легитимности вакансии (Posting Legitimacy)

Assessment: Proceed with Caution

Сигнал Наблюдение Вес
Свежесть публикации Опубликована 2026-07-07 (сегодня), кнопка отклика активна («Apply button active» по данным WebFetch) Positive
Качество описания Конкретный стек (Vue 3 Composition API, TypeScript, Pinia, Nuxt), конкретные обязанности (архитектурные решения, код-ревью, менторство), явно описан формат работы и график — не шаблонный/размытый текст Positive
Внутренние противоречия Требование 4+ года Vue.js специфично — Vue 3 с Composition API как мейнстрим-стек существует не так давно (Vue 3 стабильный релиз — 2020), поэтому формальные «4+ года именно с Vue» физически предполагают опыт ещё с Vue 2/переходного периода — не противоречие, но стоит уточнить, что именно засчитывается Neutral
Company Hiring Signals Название «Dev Company 23» — WebSearch дал только частичное совпадение с другой компанией («Компания 23 программиста», Бердск/Новосибирск) — связь не подтверждена, это может быть просто похожее название без отношения к текущей вакансии. Прямых новостей о сокращениях/заморозке найма не найдено Neutral (недостаточно данных для уверенного вывода)
Reposting Detection По data/scan-history.tsv — первое появление этой вакансии/URL в истории сканирования Neutral
Role Market Context Полностью удалённая Senior Frontend Vue-роль с конкурентной компенсацией — распространённый и обычно заполняемый тип вакансии (4-8 недель), не вызывает подозрений Neutral/Positive

Context Notes: Общее впечатление о вакансии положительное с точки зрения качества текста и активности отклика — риск здесь не в «вакансии-призраке», а в формальном несоответствии заявленному стажу. Название компании не удалось однозначно идентифицировать во внешних источниках (возможно, малоизвестная или недавно зарегистрированная компания) — рекомендуется уточнить юридическое название работодателя до отклика.


Извлечённые ключевые слова

Vue 3, Composition API, TypeScript, Pinia, Nuxt, JavaScript, HTML5, UX/HTML, SPA, архитектурные решения фронтенда, код-ревью, менторство, оптимизация производительности, удалённая работа, ГПХ, трудовой договор, Senior Frontend


Итоговая рекомендация

Балл 2.4/5 — ниже порога 4.0/5 (AGENTS.md, Ethical Use). Рекомендуется не откликаться в текущем виде без явного уточнения условий отбора, по совокупности причин:

  1. Разрыв по стажу (4-6 лет заявлено vs ~1.7 года у кандидата) — реальный риск отсева на этапе ATS/HR-скрининга, несмотря на очень сильное техническое совпадение стека (Vue 3 + Composition API + TS + Pinia — почти идеальный матч).
  2. Компенсация отличная (от 270 тыс. ₽ до вычета, ≈235 тыс. ₽+ на руки) — существенно выше таргета кандидата, что делает вакансию привлекательной, если разрыв по стажу удастся преодолеть на этапе собеседования.
  3. Компания не идентифицирована однозначно во внешних источниках — рекомендуется уточнить юридическое название и репутацию до вложения времени в подготовку.

Если кандидат всё же хочет откликнуться: делать это с максимально честной и прямой подачей разрыва по стажу, предлагая техническое собеседование или тестовое задание как способ компенсировать формальное несоответствие критериям — при полностью удалённом формате риск для кандидата минимален (нет конфликта с локационной политикой).