Files
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

26 KiB
Raw Permalink Blame History

Оценка: СДЭК (CDEK.Shopping) — Senior Frontend разработчик (Nuxt3)

Дата: 2026-07-07 Архетип: Frontend Developer (Vue.js) — прямое совпадение по фреймворку, разрыв по seniority/специализации (Nuxt3/SSR) Балл: 3.3/5 URL: https://rabota.cdek.ru/vacancies/item/8890 PDF: генерируется (балл 3.3 ≥ порога 3.0) Legitimacy: Proceed with Caution


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

Параметр Значение
Архетип Frontend Developer (Vue.js) — прямое совпадение с North Star кандидата
Domain E-commerce (CDEK.Shopping — шоппинг-сервис на базе логистической платформы СДЭК)
Function Build (поддержка legacy Vue2/Nuxt2 + развитие нового Nuxt3-стека)
Seniority Senior, от 5 лет опыта
Формат работы Удалённо (remote available), полная занятость
Размер команды Не указан явно; из описания следует смешанная команда — поддержка legacy (Vue2/Nuxt2) параллельно с новым стеком (Vue3/Nuxt3)
Оформление Официальное трудоустройство с соцпакетом (оплачиваемый отпуск/больничный упомянуты явно) — похоже на ТК РФ, но точная формулировка ("официальное трудоустройство") не уточняет ТК РФ / ГПХ явно
TL;DR Единственная роль в этой партии с прямым совпадением по фреймворку (Vue3/Nuxt3) и без локационного блокера (удалённо) — но требование 5+ лет и отсутствие у кандидата коммерческого Nuxt/SSR-опыта создают реальный разрыв по уровню, который сопроводительным письмом не закрыть полностью честно.

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

Требование JD Совпадение в CV
Vue 3 (Composition API) Прямое совпадение — «Здесь ЕКОМ»: Vue 3, Composition API, ~1 год, фронтенд с нуля
Nuxt 3 (и опыт с Nuxt 2) Нет прямого совпадения. cv.md указывает Nuxt только в разделе «быстро осваиваю» — коммерческого опыта с SSR-фреймворком нет
HTML, CSS, Tailwind CSS, кроссбраузерная адаптивная верстка Прямое совпадение — Tailwind CSS указан в стеке ЕКОМ, HTML5/CSS3 в языках
REST/JSON API интеграция Прямое совпадение — «Сеть: REST API, WebSocket/WSS»
Архитектурные паттерны (Feature-Sliced Design предпочтительно) Не упомянуто в CV — команда ЕКОМ использовала свой набор инструментов (shadcn, Pinia, TanStack Table), но не FSD явно
SSR, SEO, оптимизация производительности Нет совпадения. Опыт кандидата — SPA (ЕКОМ, РМК), не SSR-приложения
Код-ревью и менторство команды Частичное совпадение — обучила коллегу с 11-летним стажем git-версионированию, но не формальное код-ревью-менторство разработчиков
Плюсом: тестирование, CI/CD, миграция Vue2/Nuxt2→3, Docker, микросервисы Частичное совпадение — Vitest, Playwright E2E, CI/CD «рабочий опыт»; Docker и микросервисы отсутствуют в CV
Поддержка legacy Vue2/Nuxt2 интерфейсов Частичное совпадение — опыт работы с legacy-проектом (РМК, ~6 месяцев), но это Vue3, а не Vue2/Nuxt2

Пробелы:

  1. Nuxt3/SSR — центральный пробел роли. Название роли прямо указывает Nuxt3, и SSR/SEO — явное требование. У кандидата нет коммерческого опыта именно с SSR-рендерингом. Это hard requirement, но не hard blocker в духе "невозможно закрыть" — Vue 3 Composition API переносится напрямую, Nuxt — надстройка над тем же реактивным ядром. Честный план закрытия: явно указать в сопроводительном письме, что Nuxt не входит в коммерческий опыт, но Vue3 Composition API — прямой и глубокий; предложить пройти техническое интервью с акцентом на архитектурное мышление, а не только checklist по Nuxt-специфике.
  2. Seniority gap (5+ лет vs ~1.5-2 года) — существенный, но не абсолютный разрыв (в отличие от Playneta/X5/Сбер, здесь фреймворк совпадает, что частично компенсирует разрыв по годам за счёт качества пруф-поинтов).
  3. Менторство — заявлено в JD explicitly ("код-ревью и менторство команды"), у кандидата нет формального опыта код-ревью в роли менторя, только неформальное обучение коллеги процессам.
  4. Feature-Sliced Design — не упомянута в CV; можно быстро закрыть самостоятельным изучением до собеседования (это архитектурная методология, а не фреймворк — реалистично освоить базовые принципы за несколько дней).

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

Уровень в JD: Senior, от 5 лет. Естественный уровень кандидата: Middle (~1.5-2 года), но с прямым совпадением по core-фреймворку (Vue 3 Composition API), что для этого конкретного домена — сильнее, чем в остальных 4 вакансиях этой партии.

План "продать senior без обмана": Нечестно и нереалистично полностью закрыть разрыв в 3+ раза по годам опыта. Единственный добросовестный путь — явно позиционироваться на Middle/Middle+ уровень с акцентом на глубину архитектурных решений (RBAC, курьерский график с нуля, WebSocket-инфраструктура), а не на формальный стаж. В сопроводительном письме и на скрининге стоит сразу обозначить: «Мой стаж короче заявленного диапазона, но я разработала фронтенд продукта с нуля, спроектировала архитектуру доступа и веду legacy-модернизацию — готова обсудить понижение до Middle/Middle+, если это откроет процесс».

План "если понизят уровень": Принять понижение при справедливой компенсации (см. Блок D — даже Middle-диапазон Vue-разработчика в Москве выше целевого минимума кандидата), договориться о пересмотре через 6 месяцев с чёткими критериями (например, самостоятельная миграция одного модуля Vue2/Nuxt2 → Nuxt3).

Рекомендация: Балл 3.3/5 — ниже канонического порога 4.0 (AGENTS.md, Ethical Use), поэтому формально не рекомендуется откликаться без веской причины. Однако это единственная роль в текущей партии, где нет жёсткого локационного блокера и есть прямое совпадение по core-фреймворку — если у кандидата есть конкретная причина (интерес к e-commerce-домену, готовность инвестировать время в подготовку к Nuxt-специфике), это самый оправданный кандидат на отклик среди пяти оценённых вакансий.

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

Зарплата в JD не указана.

Источник Данные
WebSearch (рыночные данные 2026) Middle Vue-разработчик Москва: 290 000–380 000 ₽/мес; Senior Vue-разработчик Москва: 480 000–650 000 ₽/мес
WebSearch (Nuxt-премия) Специалисты с Nuxt.js оцениваются выше «чистых» Vue-разработчиков — разница около 40 000–60 000 ₽/мес на уровне Middle+
Целевой диапазон кандидата 100 000–120 000+ ₽/мес на руки
Отзывы о СДЭК IT-команде (Хабр Карьера/SuperJob, по WebSearch) Смешанные: сильная техническая команда и неформальные рабочие отношения хвалятся; также есть жалобы на переработки, отсутствие выделенных аналитиков (разработчики сами делают аналитику), ограниченный карьерный рост вне лидерских позиций

Gross vs Net: Не указано в JD; рыночные данные выше обычно gross. Ориентировочно net ≈ gross × 0.87 → даже нижняя Middle-вилка (290k gross ≈ 252k net) существенно выше целевого минимума кандидата (100k net). Это сильный аргумент в пользу роли при условии, что компания согласится рассматривать кандидата на Middle+ уровне, а не отсеет по формальному критерию 5+ лет ещё на скрининге резюме.

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

# Раздел Текущее состояние Предлагаемое изменение Почему
1 Summary Акцент на Vue 3 + Flutter dual-track Явно упомянуть Nuxt в контексте "быстро осваиваю" и подчеркнуть глубину Vue 3 Composition API JD ищет именно Nuxt3, но у кандидата нет опыта — честная формулировка снижает риск отсева по ключевому слову, но не скрывает пробел
2 Опыт (ЕКОМ) Общее описание фронтенда с нуля Добавить формулировку "SPA-архитектура с нуля: Vue 3 + Composition API + Pinia + Vue Router" ближе к языку JD Использовать точную терминологию JD (Composition API), которая уже есть в CV
3 Skills Tailwind CSS указан в стеке ЕКОМ Вынести Tailwind CSS в отдельный явный skill-тег, как в JD Прямое ключевое слово JD для ATS/скрининга
4 Проекты RBAC и график курьеров описаны как отдельные буллеты Явно обозначить как «архитектурные решения» (architecture decisions), созвучно с "участие в проектировании архитектуры и согласовании требований" из JD Показать, что кандидат уже принимала архитектурные решения, даже без формального Senior-титула
5 Сопроводительное письмо — Явно обозначить готовность обсуждать Middle/Middle+ уровень и подчеркнуть скорость освоения новых технологий (Flutter с нуля за короткий срок) Снять напряжение вокруг разрыва по годам стажа заранее, а не дать рекрутеру интерпретировать его негативно

Top 5 изменений LinkedIn/hh.ru: заголовок — "Vue.js / Nuxt.js Developer (изучаю)"; добавить Tailwind CSS и Composition API как отдельные skills; указать "готова к удалённой работе" явно в первой строке резюме; добавить формулировку про самостоятельное архитектурное проектирование (RBAC); указать релевантный домен (e-commerce/логистика — ЕКОМ управляет заказами и курьерами, что близко к e-commerce-домену CDEK.Shopping).

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

# Требование JD История STAR+R S T A R Reflection
1 Vue 3 Composition API, фронтенд с нуля Разработка ЕКОМ с нуля Компании нужна была внутренняя система управления заказами/логистикой, старой не было Спроектировать и реализовать фронтенд-часть с нуля Выбрала стек (Vue 3, Composition API, Pinia, TanStack Table), спроектировала архитектуру, реализовала ключевые модули Система используется логистикой, клиентским отделом, техподдержкой и разработчиками Поняла, как рано принятые архитектурные решения (стейт-менеджмент, структура компонентов) влияют на скорость разработки через год
2 Архитектурные решения / участие в проектировании Проектирование RBAC Нужна была ролевая модель авторизации между отделами (логистика/заказы) Спроектировать модель прав и объяснить её бэкенд-команде Использовала ИБ-образование, разработала модель ролей, защитила решение перед бэкенд-разработчиком Модель внедрена, отделы корректно разграничены Осознала ценность профильного образования как дифференциатора среди frontend-кандидатов
3 Поддержка legacy-интерфейсов наряду с новым стеком Работа над РМК (legacy Vue 3-проект) параллельно с ЕКОМ Нужно было одновременно вести новый продукт и поддерживать нестабильный legacy Исправить критические баги и внедрить надёжность в legacy без остановки разработки нового продукта Исправила ~20 багов, включая сложный кейс с замыканием в реактивной переменной; внедрила WebSocket-оповещения в реальном времени Впервые видно, сколько из ~1200 аптек онлайн; уведомления доходят почти без задержки Научилась переключаться между "фичевым" и "поддерживающим" режимом работы без потери качества в обоих
4 REST/JSON API интеграция с бэкендом Постраничная загрузка «Избранное» Раздел «Избранное» не открывался — все товары грузились одним запросом Найти причину и исправить без ломки существующего API-контракта Продиагностировала проблему, обсудила с бэкенд-разработчиком, реализовала постраничную загрузку Жалобы пользователей прекратились Поняла важность профилирования перед тем, как менять фронтенд-логику — проблема была в паттерне запроса, а не в UI
5 Код-ревью и менторство (частичное совпадение) Обучение коллеги git-версионированию Команда работала без единой git-стратегии, релизы были нестабильны Внедрить Feature Branching и обучить команду, включая senior-коллегу с 11-летним стажем Спроектировала процесс, лично провела обучение Команда перешла на стабильные еженедельные релизы, сократилось число «зависших» фич Осознала, что менторство не требует формального тайтла — важнее системный подход к передаче знаний
6 Оптимизация производительности (частичное совпадение, не SSR-специфика) Диагностика бага с закрытием (memory/reactivity leak) на РМК Клавиатура переставала работать из-за утечки в реактивной переменной, переданной в глобальный класс Найти root cause без доступа к профилировщику специализированному для этого паттерна Прошла по цепочке привязки данных, нашла источник утечки, переработала биндинг Баг устранён, клавиатура стабильно работает Поняла, как тонко реактивность Vue 3 может взаимодействовать с императивным (не-реактивным) кодом
7 Готовность работать в команде с разным уровнем формализации процессов Внедрение версионирования сборок на РМК Тестировщик не мог определить, в какой версии сборки был найден баг Внедрить систему версионирования сборок Спроектировала и внедряет схему версионирования (в процессе) Ожидаемый результат — точная привязка багов к версии сборки Признаёт, что решение ещё не завершено — показывает честность в самопрезентации незавершённой работы

Рекомендуемый кейс: «Здесь ЕКОМ» целиком (RBAC + график курьеров + список заказов с 9 фильтрами) — максимально близко к домену e-commerce/логистики CDEK.Shopping и демонстрирует полный цикл: от архитектуры с нуля до эксплуатации несколькими отделами.

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

  • «У вас нет опыта с Nuxt3, как вы предполагаете закрыть этот разрыв?» → честно: «Коммерческого опыта с SSR/Nuxt нет, но Composition API и реактивная модель Vue 3 — тот же фундамент; готова показать, как быстро осваиваю новый инструментарий, на примере Flutter, с которым начала работать с нуля».
  • «Почему вы претендуете на Senior-роль с 1.5-2 годами опыта?» → честно: «Не претендую формально на Senior-грейд — открыта обсуждать Middle/Middle+ при справедливой компенсации; за этот срок вела 3 продукта одновременно и самостоятельно спроектировала архитектурные решения уровня, который обычно ожидают от более опытного разработчика».
  • «Как вы относитесь к переработкам/сжатым срокам?» (учитывая отзывы о переработках в СДЭК) → честно: «Готова к периодам высокой нагрузки при чётких приоритетах, но системная переработка — не то, что ищу долгосрочно; уточню на собеседовании реальную практику в команде».

Vibe команды

Судя по формулировкам JD ("код-ревью и менторство команды", "участие в проектировании архитектуры и согласовании технических требований") — команда предполагает вовлечённость в архитектурные решения и практику код-ревью, что похожий на позитивный сигнал по автономии/ownership. По независимым отзывам (Хабр Карьера, SuperJob — судя по данным WebSearch) IT-команда СДЭК описывается как дружная и технически сильная, с неформальными рабочими отношениями, но также отмечаются переработки, сжатые сроки и отсутствие выделенных аналитиков (разработчики закрывают аналитику сами) — недостаточно данных, чтобы понять, насколько это применимо именно к CDEK.Shopping (отдельному продукту/юрлицу) в отличие от логистического ядра СДЭК — стоит уточнить на собеседовании.

G) Посадочная легитимность (Posting Legitimacy)

Assessment: Proceed with Caution

Сигнал Наблюдение Вес
Свежесть публикации check-liveness.mjs — "uncertain" (контент присутствует, кнопка отклика не распознана автоматически); дата публикации на странице не извлечена Neutral
Качество описания Очень конкретное: точный стек (Vue3/Nuxt3/Nuxt2, Tailwind, FSD), явная задача (поддержка legacy + новый стек), указан HR-контакт (Арина Булатова, email) Positive
Отсутствие зарплаты Зарплата не указана в JD Neutral
Сигналы найма компании Отзывы о команде смешанные (переработки, отсутствие аналитиков), но явных увольнений/заморозки найма в CDEK.Shopping не найдено Neutral
Повторные постинги Первое появление в data/scan-history.tsv, повторов не найдено Neutral
Рыночный контекст роли Senior Nuxt3-разработчик — растущий спрос (премия за Nuxt на рынке, по WebSearch), закрывается в разумные сроки Positive
Прямой HR-контакт указан Наличие персонализированного контакта рекрутера (не общая форма) — само по себе позитивный сигнал активного найма Positive

Context Notes: Указание прямого HR-контакта и очень конкретное описание задач (миграция legacy, поддержка двух стеков одновременно) — сильные позитивные сигналы легитимности. Отсутствие видимой кнопки Apply в автоматизированной проверке, вероятно, связано с SPA-рендерингом страницы, а не с закрытой вакансией.


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

Vue 3, Composition API, Nuxt 3, Nuxt 2, Tailwind CSS, HTML, CSS, кроссбраузерная верстка, REST API, JSON, Feature-Sliced Design, SSR, SEO, оптимизация производительности, код-ревью, менторство, тестирование, CI/CD, миграция, Docker, микросервисы, legacy, CDEK.Shopping, СДЭК, удалённо, e-commerce