Files
career-ops-vbleroy/reports/056-rtk-tsod-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

136 lines
23 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.
# Оценка: РТК-ЦОД — Ведущий фронтенд-разработчик (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, личный кабинет, релизный процесс, коммуникация в команде