Files
career-ops-vbleroy/reports/051-vk-messenger-frontend-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

134 lines
22 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.
# Оценка: VK — Старший Frontend-разработчик (React, мессенджер-платформа)
**Дата:** 2026-07-07
**URL:** https://getmatch.ru/vacancies/34414-starshii-frontend-razrabotchik?s=offers
**Архетип:** Senior Frontend-разработчик (React) — вне архетипов кандидата (Frontend Vue.js / Mobile Flutter / Fullstack Vue+Node), серьёзный разрыв по стеку и уровню
**Балл:** 1.5/5
**Legitimacy:** Proceed with Caution (вакансия компании реальная, но конкретный листинг помечен как архивный/закрытый набор — см. Блок G)
**PDF:** не создан (балл < 3.0)
**Verification:** unconfirmed (batch mode, без Playwright) — однако сама страница getmatch.ru прямо содержит статус "archived / компания больше не набирает на эту позицию", это прямой сигнал закрытия, а не просто отсутствие проверки
---
## A) Резюме роли
| Параметр | Значение |
|---|---|
| Архетип | Senior Frontend-разработчик, React, разработка React-приложений внутри мессенджер-платформы (VK, Telegram, MAX) |
| Domain | Мессенджер / мини-приложения — SDK-интеграция, компонентные библиотеки, дизайн-системы |
| Function | Build + оптимизация производительности + интеграция SDK + кросс-командная работа |
| Seniority | **Senior**, явно указано "5+ лет" опыта |
| Формат работы | Удалённо (офис на Аэропорте указан как формальный адрес, по факту роль полностью дистанционная) |
| Размер команды | Не указан |
| Оформление | Не указано в JD |
| TL;DR | Тройной разрыв: (1) стек — роль целиком на React (hooks, context, жизненный цикл), у кандидата коммерческого React нет вовсе, весь архитектурный опыт на Vue 3; (2) уровень — явные "5+ лет", у кандидата ~1.5-2 года коммерческого опыта, естественный уровень Middle; (3) вакансия помечена как архивная / набор закрыт — отклик по этой ссылке технически невозможен или бессмысленен. |
**Локация — не блокер.** Роль полностью удалённая, соответствует политике кандидата (Тула, удалёнка предпочтительна, без переезда/командировок). Формальный адрес офиса (Аэропорт, Москва) не создаёт конфликта, поскольку JD явно описывает роль как remote-first.
**Vibe команды:** судя по формулировкам JD, упор на кросс-командное взаимодействие ("cross-team collaboration") и создание переиспользуемых компонентных библиотек, что может говорить о зрелых инженерных практиках. Явных упоминаний ownership/RFC-культуры, менторства или гибкого графика в тексте нет — недостаточно данных в JD, стоит уточнять на собеседовании (если бы оно было релевантно при текущем разрыве).
## B) Совпадение с CV
| Требование JD | Совпадение с CV |
|---|---|
| React (hooks, context, жизненный цикл), 5+ лет | **Отсутствует.** cv.md не упоминает React ни разу — весь фронтенд-опыт кандидата на Vue 3 (Composition API, Pinia, Vue Router) |
| "Непереносимость Vanilla JS" / глубокое ES6+ | Частично: JS/TS в cv.md присутствуют на общем уровне, но JD подразумевает React-специфичную экспертизу, а не общий JS |
| TypeScript | **Совпадение**: "JavaScript, TypeScript, HTML5/CSS3" в cv.md, использовался в проекте ЕКОМ (Vue 3 + TypeScript) |
| CSS-фреймворки, адаптация под дизайн-системы | **Частичное совпадение**: Tailwind CSS, shadcn/shadcn-vue — опыт с CSS-утилитами есть, но не с React-специфичными дизайн-системами |
| Vite | **Совпадение**: cv.md — "Vite" в разделе сборки и тулинга |
| Тестирование фронтенда | **Совпадение**: Vitest, Storybook, Playwright E2E (РМК) |
| Storybook (nice-to-have) | **Совпадение**: явно указан в cv.md |
| Разработка ботов/мини-приложений VK/Telegram/MAX | Отсутствует |
| Agentic-разработка (Claude Code, Codex) (nice-to-have) | Отсутствует в cv.md |
| Разработка JS SDK (nice-to-have) | Отсутствует |
| Принципы безопасности | **Косвенное совпадение**: профильное ИБ-образование, проектирование RBAC — но это авторизационная модель на уровне приложения, а не фронтенд-безопасность SPA/SDK в духе JD |
**Пробелы:**
1. **React как основной стек (hard blocker).** Роль на 100% про React-архитектуру внутри мессенджер-платформы. У кандидата нет ни одной строки коммерческого React в cv.md — весь опыт на Vue 3. Перенос концепций (компонентный подход, реактивность, state management) возможен, но JD прямо формулирует "непереносимость Vanilla JS", то есть ожидает глубокую, а не общую фронтенд-экспертизу именно в экосистеме React.
2. **Уровень — 5+ лет (hard blocker).** У кандидата ~1.5-2 года коммерческого опыта (Здравсервис с ноября 2024 + учебный проект ТулГУ 10 месяцев в 2022). Разрыв даже больше, чем в похожей вакансии VK (report 003, где требовалось "4+ года").
3. **Вакансия архивна (hard blocker для действия).** Страница getmatch.ru явно помечает позицию как закрытую для найма — отклик по этой ссылке не приведёт к результату независимо от степени соответствия.
4. **Nice-to-have навыки** (мини-приложения VK/Telegram/MAX, agentic-разработка, JS SDK) — отсутствуют, но это некритично при наличии более фундаментальных разрывов.
## C) Уровень и стратегия
1. **Уровень в JD** — явный Senior, 5+ лет опыта, самостоятельная архитектурная работа с React-компонентами и SDK. **Естественный уровень кандидата** — Middle, ~1.5-2 года опыта, вся архитектурная практика на Vue 3, а не React.
2. **План "продать senior без обмана" — неприменим.** Как и в похожей вакансии VK (report 003), попытка представить Vue-опыт как соответствие React Senior-роли была бы либо преувеличением (запрещено правилами `CLAUDE.md`/`AGENTS.md` — "keywords get reformulated, never fabricated"), либо гарантированным провалом на техническом интервью, где сразу проверят глубину React.
3. **План "если понизят уровень"** — неприменим: сама вакансия закрыта для набора, обсуждать понижение уровня офера нет смысла. Если кандидат заинтересована в будущем в подобных ролях у VK, реалистичный путь — сначала получить коммерческий React-опыт (например, через проект/смену стека внутри текущей компании), а не пытаться закрыть три разрыва (стек + уровень + доступность вакансии) одновременно.
## D) Компенсация и спрос
| Источник | Данные |
|---|---|
| Зарплата в JD | "от 300 000 ₽/мес на руки" (net, явно указано как "на руки") |
| VK — медиана по IT-специалистам (Хабр Карьера, 2026) | ~324 000 ₽/мес |
| Senior React-разработчик, рынок РФ, 2026 | 270 000 - 410 000 ₽/мес; медиана senior-разработчиков по рынку — около 550 000 ₽/мес по отдельным оценкам |
| Middle React-разработчик, 2026 | ~320 000 ₽/мес |
| React vs Vue (рыночная разница) | React в среднем на 8-12% выше Vue по зарплате — рынок объективно выше платит за React-экспертизу, что усиливает мотивацию для кандидата развивать этот стек в перспективе, но не меняет текущий разрыв |
Источники: [career.habr.com/salaries](https://career.habr.com/salaries?skills%5B%5D=react-js&spec_aliases%5B%5D=frontend), [skillbox.ru — зарплаты фронтенд-разработчиков 2026](https://skillbox.ru/media/code/zarplaty-i-skilly-frontendrazrabotchikov-raznykh-greydov-issledovanie-skillbox-media/), [enigmai.ru — Frontend-зарплата 2026 (React/Vue/Angular)](https://enigmai.ru/salary/frontend/frontend-salary-2026/)
Указанная зарплата (300 000+ ₽ на руки) значительно выше цели кандидата (100 000-120 000+ ₽ на руки) — почти в 2.5-3 раза. Комп объективно очень привлекателен, но это senior-diapазон рынка, соответствующий требуемому уровню, а не Middle-диапазону кандидата. Привлекательная цифра не отменяет разрыва по стеку и уровню, а сама вакансия недоступна для отклика (см. Блок G).
**Компания и рынок труда:** WebSearch по VK показал историю массовых увольнений осенью 2024 года (несколько сотен сотрудников, компания официально это отрицала, источники — The Bell, Forbes, Meduza). Данных о новых сокращениях или заморозке найма в 2026 году не найдено. Эта информация двухлетней давности, прямого сигнала о текущем состоянии найма не даёт, но добавляет фон неопределённости при оценке стабильности крупных подразделений VK.
**Оформление:** не указано в JD.
## E) План персонализации
**Рекомендация: не готовить персонализацию CV/PDF для этой вакансии.** При балле 1.5/5, тройном разрыве (стек + уровень + недоступность вакансии) точечная подгонка резюме не решает фундаментального несоответствия. Вместо плана персонализации — roadmap на будущее (аналогично report 003, но с добавлением явного отсутствия открытой вакансии):
| # | Что нужно закрыть | Как | Срок (ориентировочно) |
|---|---|---|---|
| 1 | Коммерческий React | Проектный опыт или переход в команду на React-стек — оценить реалистичность внутри Здравсервис или на новом месте | 6-12 месяцев практики |
| 2 | 5+ лет опыта | Продолжать накапливать опыт в текущей роли | 3-3.5 года |
| 3 | Мониторинг открытых вакансий VK | Следить за team.vk.company напрямую, а не за пересылками в Telegram-каналах, чтобы не тратить время на архивные листинги | Постоянно |
## F) План собеседований
*(Приведено для полноты формата — не рекомендуется использовать для реального отклика: вакансия недоступна для набора, разрыв по стеку и уровню критический.)*
| # | Требование JD | История STAR+R | S | T | A | R | Reflection |
|---|---|---|---|---|---|---|---|
| 1 | Компонентные библиотеки / переиспользуемость | ЕКОМ — интерфейс списка заказов с 9 фильтрами | Разрозненные неудобные таблицы 1С для разных отделов | Спроектировать единый переиспользуемый интерфейс | Построила фильтруемый интерфейс, используется логистикой, клиентским отделом, техподдержкой и разработчиками | Один компонент заменил несколько разрозненных инструментов | Компонентный подход переносим между Vue и React на уровне архитектурного мышления, но не на уровне синтаксиса — честно обозначать эту границу |
| 2 | Оптимизация производительности | «Здесь Аптека» — фикс бага «Избранное» через постраничную загрузку | Раздел не открывался, все товары грузились одним запросом | Диагностировать причину и предложить решение | Реализовала постраничную загрузку в связке с бэкендом | Жалобы пользователей прекратились | Поняла ценность профилирования запроса перед оптимизацией UI-слоя |
| 3 | Работа с SDK / real-time интеграции | РМК — внедрение WebSocket-оповещений | Не было realtime-видимости статуса ~1200 аптек | Внедрить WSS-канал для оповещений | Реализовала передачу и статус прочтения в реальном времени | Видимость статуса подключения появилась впервые в компании | WebSocket-опыт переносим на SDK-интеграции мессенджера, но не заменяет глубину React |
**Рекомендуемый кейс:** не применимо при текущем балле и статусе вакансии.
**Вопросы-ловушки (если кандидат всё же решит откликнуться на аналогичную открытую вакансию VK ради опыта):**
- *"Расскажите про архитектуру React-компонента с использованием hooks и context"* — честного ответа с реальным коммерческим опытом нет.
- *"Как вы оптимизировали производительность React-приложения внутри мессенджера?"* — вне текущего опыта кандидата (весь опыт — Vue/Flutter).
## G) Легитимность вакансии
**Оценка: Proceed with Caution.**
1. **Статус вакансии (ключевой сигнал):** страница getmatch.ru явно указывает, что позиция помечена как **archived** — компания больше не набирает по этой вакансии. Это прямое, а не косвенное свидетельство закрытия (получено через WebFetch с самой страницы, не через WebSearch-сниппет), поэтому классифицируется как надёжный сигнал, несмотря на отсутствие Playwright-проверки в batch-режиме.
2. **Качество описания:** хорошее — конкретные технологии (React, TypeScript, ES6+, Vite, RESTful API), конкретные задачи (SDK-интеграция мессенджера, компонентные библиотеки под дизайн-систему), явная зарплата "на руки". Не выглядит как шаблонный/спам-текст.
3. **Компания:** VK — крупная, реальная, публично известная компания. Дополнительных признаков фиктивности или мошенничества не найдено.
4. **Репост/повторный листинг:** проверка `data/scan-history.tsv` не показала повторных записей именно этого URL (`getmatch.ru/vacancies/34414...`) за предыдущие сканы — добавлена впервые 2026-07-07. Есть другие отдельные вакансии VK в истории (VK MAX, "Старший Frontend-разработчик сообщества", "VK Видео") — это разные позиции, не репост этой конкретной.
5. **Найм-сигналы:** WebSearch показал историю массовых увольнений в VK осенью 2024 года (официально отрицается компанией) — фон неопределённости, но устаревший (почти 2 года) и не специфичный для этой команды/продукта.
Итог: компания легитимна, описание качественное, но конкретный листинг закрыт для набора — источник (Telegram-канал с пересылкой вакансий) переслал неактуальную/архивную ссылку. Не классифицируется как "Suspicious" (нет признаков мошенничества), но и не "High Confidence", поскольку по факту откликнуться невозможно.
---
## Извлечённые ключевые слова
React, TypeScript, JavaScript ES6+, hooks, context, жизненный цикл компонентов, state management, RESTful API, Vite, CSS-фреймворки, дизайн-система, компонентная библиотека, оптимизация производительности, дебаггинг, кросс-командное взаимодействие, мессенджер, SDK-интеграция, тестирование фронтенда, безопасность фронтенда, Storybook, мини-приложения
---
## Cover Letter Draft
> Draft generated at evaluation time. **Внимание: балл 1.5/5 — тройной разрыв (React vs Vue, Senior/5+ лет vs фактический Middle/~1.5-2 года, и вакансия помечена как архивная/закрытая для набора). Настоятельно не рекомендуется откликаться на эту вакансию.** Раздел ниже приведён только для полноты формата отчёта.
**Gaps flagged:**
- **React (критично):** ядро роли — React-архитектура внутри мессенджер-платформы; у кандидата нет коммерческого React, весь опыт на Vue 3.
- **Уровень (критично):** JD требует 5+ лет и самостоятельную архитектурную ответственность; у кандидата ~1.5-2 года, уровень Middle.
- **Доступность вакансии (критично):** листинг помечен как archived — отклик по этой ссылке не приведёт к результату.
- **Локация:** не блокер — роль полностью удалённая, соответствует политике кандидата.
**JD keywords to mirror** *(для справки, не рекомендуется использовать активно при текущем разрыве)*
React, hooks, context, TypeScript, SDK-интеграция, оптимизация производительности, компонентная библиотека