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

127 lines
26 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Оценка: СДЭК (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