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

+135
View File
@@ -0,0 +1,135 @@
# Оценка: РТК-ЦОД — Ведущий фронтенд-разработчик (React)
**Дата:** 2026-07-07
**Архетип:** Frontend-разработчик (React / Next.js / GraphQL) — НЕ входит в целевые архетипы кандидата. Ближайшие: Frontend Developer (Vue.js) [primary], Fullstack Developer (Vue + Node.js) [adjacent]
**Балл:** 1.8/5
**Legitimacy:** High Confidence
**URL:** https://career.habr.com/vacancies/1000167021
**PDF:** not generated (score below 3.0 gate)
---
## A) Резюме роли
| Параметр | Значение |
|---|---|
| Архетип (по _profile.md) | Не совпадает ни с одним целевым архетипом. Ближайшие: Frontend (Vue.js) — primary; Fullstack (Vue+Node) — adjacent. Реальный стек роли — другая экосистема (React) |
| Domain | Frontend, enterprise (личный кабинет + корпоративный сайт, headless CMS) |
| Function | Build (разработка) + частичный ownership архитектуры (SSR, UI Kit) |
| Seniority | Senior / Ведущий |
| Формат работы | Гибрид или удалённо (Москва) |
| Размер команды | Не указан явно в JD |
| Оформление | ТК РФ, официальное |
| TL;DR | Ведущая позиция на React/TypeScript/Next.js/GraphQL в личном кабинете и на корпоративном сайте дочерней структуры Ростелекома — стек и уровень не совпадают с профилем кандидата (Vue 3 / Middle) |
**Vibe команды** (качественный сигнал, не влияет на числовую оценку): судя по формулировкам JD, это крупная корпоративная структура (дочка ПАО «Ростелеком») с акцентом на стабильность, льготы и формализованный рост через «корпоративный университет». Прямых сигналов о живой автономной команде, культуре RFC/архитектурных обсуждений, парном программировании или гибком графике в тексте нет — упоминается только формат «гибрид или удалённо» без деталей политики. Недостаточно данных в JD, чтобы оценить темп принятия решений и уровень бюрократии — стоит уточнить на собеседовании, если решение подавать всё же принято.
---
## B) Совпадение с CV
Прочитан `cv.md`. Сопоставление требований JD с точными строками резюме:
| Требование JD | Совпадение в CV | Статус |
|---|---|---|
| JavaScript | «Языки программирования: JavaScript, TypeScript, HTML5/CSS3, Dart» | ✅ Прямое совпадение |
| TypeScript | «Vue 3, Composition API, TypeScript, Pinia» (ЕКОМ) | ✅ Прямое совпадение |
| React | — | ❌ Не упоминается ни в одном проекте |
| Next.js / SSR | Только «Быстро осваиваю: Nuxt» (не подтверждённый опыт, wishlist) | ❌ Нет коммерческого опыта SSR |
| GraphQL | «REST API, WebSocket/WSS» — есть API-интеграция, но не GraphQL | ❌ Нет опыта GraphQL |
| HTML/CSS, Tailwind, UI Kit | «Tailwind CSS, shadcn/shadcn-vue, TanStack Table» | ✅ Совпадение (другой UI-стек, но принцип компонентных систем общий) |
| Git | «Git, GitLab, CI/CD... Внедрила Feature Branching в Git (GitLab), обучила коллегу» | ✅ Прямое и сильное совпадение |
| Unit/component-тестирование | «Vitest (unit-тесты Vue-компонентов), Storybook, Playwright E2E» | ✅ Прямое совпадение (другой фреймворк, тот же навык) |
| Компоненты и hooks | Composition API (Vue) — концептуально близко к React hooks (composable reactive state), но не то же самое | ⚠️ Частичное/переносимое |
| Интеграция API, отладка (DevTools) | «Диагностировала причину... через постраничную загрузку», «сложный кейс с замыканием» (РМК) — реальный опыт диагностики багов | ✅ Совпадение по навыку отладки |
| Понимание frontend-архитектуры | «Frontend ЕКОМ разработан с нуля», проектирование RBAC | ✅ Совпадение (архитектурный опыт есть, но не в React-экосистеме) |
| Кросс-командная коммуникация | «Кросс-командное взаимодействие (логистика, бэкенд, техподдержка)» | ✅ Прямое совпадение |
### Пробелы
1. **React (hard blocker).** Ни один проект в CV не использует React. Это не nice-to-have — JD прямо требует «уверенное знание React» для Ведущей позиции. Смежный опыт (Vue 3 Composition API) даёт концептуальный мостик (реактивность, компонентная модель), но не заменяет продакшн-опыт с JSX, React hooks API, экосистемой (React Router, state-менеджеры типа Redux/Zustand).
2. **Next.js / SSR (hard blocker).** Нет коммерческого опыта серверного рендеринга. Nuxt в CV указан только как «быстро осваиваю» — это заявка на потенциал, не на готовый навык.
3. **GraphQL (hard blocker для Lead-уровня).** Опыт кандидата — REST + WebSocket. GraphQL — отдельная экосистема (schema, resolvers, Apollo/urql на клиенте), не покрывается REST-опытом.
4. **Стратегия закрытия:** Пробелы 1-3 — это не то, что закрывается фразой в сопроводительном или пет-проектом за неделю: JD хочет человека, который сразу ведёт архитектуру SSR-приложения и GraphQL-интеграции. Пет-проект на React/Next.js мог бы частично закрыть пробел для позиции Junior/Middle React, но не для «Ведущего» — там нужен подтверждённый продакшн-опыт.
---
## C) Уровень и стратегия
1. **Уровень в JD:** Ведущий (Senior/Lead) — роль подразумевает самостоятельное владение архитектурой в двух продуктовых зонах (личный кабинет + сайт), включение SSR-миграции и GraphQL-интеграции, участие в релизах.
**Естественный уровень кандидата:** Middle — по `config/profile.yml` архетип «Frontend Developer (Vue.js)» зафиксирован как Middle. Даже в своей сильнейшей экосистеме (Vue) кандидат не Senior/Lead: коммерческий опыт — с ноября 2024 (Здравсервис), около 8 месяцев на момент оценки, плюс более раннее университетское проектное участие (ТулГУ, не индустриальный опыт).
2. **План «продать senior без обмана»:** Реалистично — не сработает для этой роли. Сильные лидерские сигналы у кандидата реальны: она спроектировала фронтенд ЕКОМ с нуля, самостоятельно продумала и объяснила бэкенд-команде модель RBAC, продвинула Feature Branching и обучила коллегу с 11-летним стажем, добилась включения в стратегическое планирование спринтов. Это поведенческие маркеры уровня «выше Middle». Но они полностью в экосистеме Vue/Flutter — ни один из них не демонстрирует владение React/Next.js/GraphQL, которые JD требует «уверенно» с первого дня. Лидерский трек-рекорд не компенсирует отсутствие стека для Lead-позиции конкретно на React.
3. **План «если понизят уровень»:** Даже гипотетическое понижение до Middle/Junior React не решает основную проблему — кандидат тогда учил бы React/Next.js/GraphQL «в процессе», а JD прямо ищет уверенное знание этого стека уже сейчас, не потенциал к обучению. Понижение уровня не устраняет технологический разрыв, только временно снижает ожидания по объёму ответственности.
**Итог блока C:** Комбинация «неверный технологический стек» + «разрыв в 1-2 грейда» — оба блокера одновременно, ни один не закрывается стандартными приёмами (переформулировка резюме, сопроводительное письмо, короткий пет-проект).
---
## D) Компенсация и спрос
| Показатель | Значение | Источник |
|---|---|---|
| Зарплата в JD | Не указана напрямую; Хабр Карьера показывает «зарплата похожих специалистов»: 280 000–437 000 ₽ (по всей видимости gross) | [Вакансия](https://career.habr.com/vacancies/1000167021) |
| Net-эквивалент (× 0.87) | ≈ 243 600 – 380 190 ₽/мес на руки | Расчёт: gross × 0.87 (стандартный НДФЛ 13%; реальная ставка может отличаться) |
| Рыночный контекст, Senior frontend (2026) | Медиана Senior-разработчиков в РФ — около 550 000 ₽ (по некоторым источникам архитектор/principal 450-700 тыс.); типичный диапазон Senior — 270-410 тыс. ₽ | [Практикум/аналитика зарплат Frontend 2026](https://practicum.yandex.ru/blog/skolko-zarabatyvayut-frontend-razrabotchiki/) |
| Хабр Карьера, React frontend (все уровни) | ~258 500 ₽ (медиана по выборке, вероятно смешивает грейды, не только Senior) | [career.habr.com/salaries](https://career.habr.com/salaries?skills%5B%5D=react-js&spec_aliases%5B%5D=frontend) |
| Оформление | ТК РФ, официальное | JD (+0.3 к стабильности по правилам оценки РФ) |
| Бенефиты | ДМС, корпоративный университет, корпоративный спорт, корпоративная мобильная связь | JD |
**Вывод:** диапазон значительно выше целевого (100 000–120 000+ ₽ на руки) — комп был бы привлекателен, если бы кандидат закрывала требования. Но при текущем технологическом разрыве (React/Next.js/GraphQL с нулевым коммерческим опытом на роль уровня Lead) этот комп практически недостижим — компания нанимает на подтверждённую экспертизу, а не на потенциал.
---
## E) План персонализации
Учитывая балл ниже порога 3.0 (гейт PDF) и структурный (не косметический) разрыв в стеке и уровне, персонализация CV/LinkedIn под эту конкретную вакансию **не рекомендуется**. Если кандидат всё же решит откликнуться (например, ради интервью-практики или из любопытства к компании), минимальные точки опоры:
| # | Раздел | Текущее состояние | Предлагаемое изменение | Почему |
|---|--------|--------------------|--------------------------|--------|
| 1 | Summary | Ведёт с Vue 3 + Flutter | Подчеркнуть JS/TS фундамент и Composition API как переносимый навык на компонентные фреймворки | Единственный реальный мостик к React-стеку |
| 2 | Skills | Vue-специфичные библиотеки на первом месте | Поднять «быстро осваиваю: любые UI-киты/дизайн-системы» ближе к началу | Сигнал открытости к смене стека, честно (не выдаёт несуществующий React-опыт) |
| 3 | Cover letter | — | Явно признать отсутствие React/Next.js опыта, но аргументировать через скорость обучения (Flutter выучен «с нуля» за 8 месяцев до продакшна) | Честность + фактическое доказательство скорости онбординга в новый стек |
Топ-изменений для LinkedIn/hh.ru — не применимо; риск того, что рекрутер отклонит на этапе резюме из-за явного отсутствия React, слишком высок, чтобы оптимизация имела смысл здесь.
---
## F) План собеседований
Даже при низком балле — банк историй STAR+R на случай, если кандидат решит подавать (например, чтобы потренироваться объяснять смену стека):
| # | Требование JD | История STAR+R | S | T | A | R | Reflection |
|---|---|---|---|---|---|---|---|
| 1 | Понимание frontend-архитектуры | Разработка ЕКОМ с нуля | Внутренняя система логистики без фронтенда | Спроектировать SPA с нуля | Vue 3 + Composition API + Pinia, WebSocket-интеграция | Логисты сами управляют графиком без разработчиков | Поняла, как выбор архитектуры (Composition API вместо Options) влияет на масштабируемость команды из 4 человек |
| 2 | Компонентные системы / hooks-подобная логика | RBAC-модель в ЕКОМ | Разграничение доступа логистика/заказы | Спроектировать ролевую модель | Использовала ИБ-образование, объяснила модель бэкенд-команде | Бэкенд принял модель без переделок | В следующий раз документировала бы модель раньше, до начала обсуждения с бэкендом |
| 3 | Отладка / DevTools | Баг с замыканием на РМК | Клавиатура переставала работать | Найти причину утечки реактивной переменной | Отследила передачу переменной в глобальный класс биндинга клавиш | Баг исправлен, клавиатура стабильна | Это подчеркнуло риски глобального состояния — стала осторожнее с shared mutable state |
| 4 | Тестирование (unit/component) | Внедрение Vitest и Playwright | Отсутствие тестов на легаси РМК | Добавить покрытие | Vitest для компонентов, Playwright для E2E | Тесты внедряются поэтапно, часть уже покрыта | Осознала, что внедрение тестов на легаси требует поэтапного плана, а не «всё сразу» |
| 5 | API-интеграция | WebSocket-оповещения в реальном времени | Не было видимости, сколько аптек онлайн | Внедрить WSS-канал оповещений | Реализовала клиент WebSocket, статус прочтения | Впервые видно ~1200 аптек в реальном времени | Поняла важность fallback-логики при разрыве соединения — на будущее добавила бы reconnect-стратегию явно |
| 6 | Кросс-командная коммуникация | Продвижение Feature Branching | Хаотичные релизы, зависшие фичи | Внедрить git flow и обучить команду | Обучила коллегу с 11-летним стажем, внедрила процесс | Команда перешла на стабильные еженедельные релизы | Узнала, что техническое внедрение процесса требует не меньше коммуникационных усилий, чем самого кода |
**Рекомендуемый кейс для показа:** ЕКОМ (график курьеров + RBAC) — лучше всего показывает архитектурное мышление и самостоятельность, даже вне React-контекста.
**Вопросы-ловушки:**
- *«У вас нет опыта с React — почему откликнулись на Lead-позицию?»* → Честный ответ: признать разрыв, но подчеркнуть скорость обучения нового стека (пример — Flutter с нуля до продакшна за несколько месяцев) и переносимые архитектурные навыки (RBAC, компонентный дизайн). Не оправдываться, не преувеличивать переносимость Composition API → React hooks как «то же самое».
- *«Как вы относитесь к тому, что позиция для Senior/Lead, а вы Middle?»* → Не спорить с грейдом; предложить обсудить траекторию роста и честно обозначить, что закрытие технологического разрыва потребует времени.
---
## G) Легитимность вакансии
**Tier: High Confidence**
Сигналы:
- **Качество описания:** Структурированный, детальный текст (две продуктовые зоны, конкретный стек, конкретные обязанности) — не шаблонный/пустой листинг.
- **Компания:** РТК-ЦОД — управляющая компания центра компетенций ПАО «Ростелеком» по дата-центрам, облачным платформам и CDN. Подтверждено независимым поиском: есть страница компании на career.habr.com/companies/rt-dc, официальный сайт rt-dc.ru, активный профиль работодателя на hh.ru (31 открытая вакансия), отзывы сотрудников на нескольких независимых площадках (Dream Job, Indeed) — компания реальная и активно нанимающая, не фиктивная.
- **Репост-проверка:** По `data/scan-history.tsv` эта вакансия (URL `https://career.habr.com/vacancies/1000167021`) встречена впервые сегодня (2026-07-07), добавлена один раз. Есть отдельная более ранняя запись того же дня для той же компании РТК-ЦОД, но с другой ролью («Разработчик TypeScript», канал `runello_rus_typescript`) — не дубликат этой вакансии, скорее сигнал, что компания одновременно набирает несколько frontend/JS-позиций (положительный сигнал активного найма, не red flag репоста).
- **Рыночный контекст роли:** Диапазон комп (280-437 тыс. ₽ gross по данным Хабра) согласуется с независимыми оценками рынка Senior frontend в 2026 (270-410 тыс. ₽ базовый Senior-диапазон) — цифры не выглядят завышенными или подозрительно заниженными.
- **Свежесть:** Не проверена через Playwright (batch-режим, только WebFetch/WebSearch) — не может быть подтверждена как «точно активна на момент чтения этого отчёта», но нет и сигналов истечения (сама страница вернула полный, живой текст вакансии, а не заглушку/404).
---
## Извлечённые ключевые слова
JavaScript, TypeScript, React, Next.js, GraphQL, HTML5, CSS3, Git, unit-тестирование, компонентное тестирование, hooks, состояние компонентов (state management), интеграция API, DevTools, отладка (debugging), frontend-архитектура, server-side rendering (SSR), headless CMS, Strapi, UI Kit, личный кабинет, релизный процесс, коммуникация в команде