init
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

This commit is contained in:
redlineo committed 2026-07-13 10:14:00 +03:00
commit d295c7f139
1527 files changed
+270726

No files matched your search

+126
View File
@@ -0,0 +1,126 @@
# Оценка: СДЭК (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