Files
career-ops-vbleroy/reports/012-mts-middle-frontend-vue-garnet-2026-07-06.md
T
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

173 lines
25 KiB
Markdown
Raw 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.
# Оценка: МТС — Middle Frontend Developer (Vue) [GARNET]
**Дата:** 2026-07-06
**URL:** https://job.mts.ru/vacancy/679637913989810210
**Архетип:** Frontend-разработчик (Vue.js) — первичный архетип кандидата, лучшее стековое совпадение в пакете
**Балл:** 1.9/5
**Legitimacy:** Высокая уверенность
**PDF:** не создан (балл < 3.0)
---
## A) Резюме роли
| Параметр | Значение |
|---|---|
| Архетип | Frontend-разработчик (Vue.js), primary fit — самое точное стековое совпадение среди всех трёх вакансий пакета |
| Domain | Frontend (проект GARNET, МТС Веб Сервисы) |
| Function | Build (новый функционал + поддержка + переход на Vue 3 + совместная работа с дизайнером) |
| Seniority (в JD) | Middle, от 3 лет опыта на позиции Frontend |
| Формат работы | **Москва · Гибридный · полный день** |
| Размер команды | Не указан |
| Оформление | Не указано в JD (по умолчанию предполагается ТК РФ, стандарт для ООО «МТС Веб Сервисы») |
| TL;DR | Лучшее техническое совпадение по стеку во всём пакете (Vue 3 + Composition API + TS точь-в-точь), но тот же блокер локации — гибрид в Москве — обнуляет практическую ценность этого совпадения. |
**Ключевой блокер:** как и в вакансии 010, формат "Гибридный" подразумевает регулярное присутствие в московском офисе. Кандидат базируется в Туле, переезд и командировки исключены. Применяется то же жёсткое правило локации (`modes/_profile.md`): гибрид/офис вне Тулы → балл по этому измерению **1.0**, что тянет глобальный балл в диапазон 1.0-2.0 независимо от силы остальных измерений.
**Важное наблюдение:** если бы эта роль была удалённой (как 011) или базировалась в Туле, она была бы, вероятно, лучшим совпадением во всём пакете — стек, уровень и зона роста ("участвовать в переходе на Vue.js 3") совпадают с профилем кандидата почти идеально. Именно поэтому локация здесь — не формальность, а решающий фактор: технически сильная вакансия становится нерелевантной из-за формата работы.
## B) Совпадение с CV
| Требование JD | Совпадение с CV |
|---|---|
| Frontend от 3 лет | ⚠️ У кандидата ~1.5-2 года непрерывного коммерческого опыта — ниже требуемого порога |
| TypeScript, HTML5, CSS3, JS (ES6+) | ✅ Полное совпадение — «Языки программирования: JavaScript, TypeScript, HTML5/CSS3» |
| Vue.js 3 + Composition API | ✅ Точное совпадение — «Vue 3, Composition API» является основным стеком ЕКОМ и РМК |
| SCSS/LESS | ⚠️ Не упомянуты явно — кандидат использует Tailwind CSS/shadcn-vue; препроцессоры не в CV, но «быстро осваиваю... любые CSS-подходы» |
| Адаптивная и кросс-браузерная вёрстка | ✅ HTML5/CSS3 + Tailwind в проектах |
| Git | ✅ «Внедрила Feature Branching в Git (GitLab)» |
| Веб-безопасность | ✅ Профильное образование по ИБ + проектирование RBAC — прямое, нестандартное для frontend-кандидата преимущество |
| Webpack, Vite | ⚠️ Vite — да; Webpack не упомянут |
| Принципы UI/UX | ✅ Самостоятельные редизайны (кнопка «Избранное», блок информации о заказе), app-иконки — в компании без дизайнера |
| Алгоритмы, структуры данных, архитектура, паттерны | ⚠️ Явных упоминаний алгоритмических задач нет в CV, но архитектурная работа (RBAC, разделение по ролям) косвенно подтверждает системное мышление |
| Опыт создания сложных интерфейсов | ✅ ЕКОМ (график курьеров с drag-and-drop на vue-cal, список заказов с 9 фильтрами) — явно "сложные интерфейсы" |
**Пробелы:**
1. **3+ года опыта** — умеренный blocker (не hard, но заметный). Стратегия: акцент на плотность и объём ответственности за короткий срок (продукт с нуля, RBAC-архитектура, менторство), см. блок C.
2. **SCSS/LESS** — nice-to-have, не hard blocker. Стратегия: честно указать быстрое освоение любых CSS-подходов, сослаться на Tailwind как на демонстрацию владения современными CSS-методологиями.
3. **Webpack** — как и в 010, не критично при наличии Vite-опыта.
4. **Формальные алгоритмы/паттерны** — если на техническом интервью будет секция live-coding на алгоритмы, у кандидата нет прямых proof points в CV. Стратегия: подготовиться отдельно (LeetCode-style), не полагаться только на прикладной опыт.
## C) Уровень и стратегия
**Уровень в JD:** Middle, "опыт работы на позиции Frontend от 3х лет".
**Естественный уровень кандидата:** пограничный Junior+/Middle — около 1.5-2 лет непрерывного коммерческого опыта. Ближе к нижней границе Middle, чем к формальным "3 годам", но по глубине ответственности (продукт с нуля, RBAC, менторство более опытного коллеги) уже демонстрирует поведение, типичное для Middle+.
**План "продать senior/middle без обмана":**
- Открыто говорить о ~1.5-2 годах опыта, но подкреплять аргумент не стажем, а масштабом: единолично построила продакшн-продукт (ЕКОМ) с нуля, включая архитектуру доступа.
- Использовать формулировку: *"Меньше формальных лет, чем указано в вакансии, но за это время самостоятельно довела продукт от нуля до продакшна и участвовала в архитектурных решениях по доступу — готова обсудить тестовое задание или техническое интервью, чтобы показать это напрямую."*
- Подчеркнуть релевантность именно для GARNET: JD явно упоминает "участвовать в переходе на Vue.js 3" — у кандидата уже есть прямой опыт именно такого перехода (РМК — legacy-проект на Vue 3, где она системно исправляла технический долг).
**План "если понизят уровень":**
- Junior+/Middle-минус компенсация приемлема, если она всё равно перекрывает целевой минимум кандидата (100 000+ ₽ на руки — см. блок D, рыночная Middle-вилка Vue в Москве заметно выше этого порога).
- Договориться о пересмотре грейда через 6 месяцев по итогам участия в переходе на Vue 3.
**Но, как и в 010:** вопрос грейда становится второстепенным на фоне блокера локации — компания предлагает только гибридный формат в Москве, без варианта Тулы или полной удалёнки.
## D) Компенсация и спрос
WebSearch ("Vue.js frontend developer зарплата Москва hh.ru 2026 middle senior"):
| Уровень | Диапазон gross (₽/мес, Москва) | Net ≈ gross × 0.87 |
|---|---|---|
| Middle Vue Developer | 290 000 — 380 000 | ≈ 252 300 — 330 600 |
| Senior Vue Developer | 480 000 — 650 000 | ≈ 417 600 — 565 500 |
Источники: sborka.work, enigmai.ru, career.hh.ru (см. Sources ниже). Москва в целом платит на 15-30% больше, чем регионы — фактор, полностью нейтрализуемый требованием жить/присутствовать в Москве.
**Оценка для кандидата:** Middle-вилка (252 000-330 000 ₽ на руки после НДФЛ) значительно перекрывает целевой минимум кандидата (100 000-120 000+ ₽ на руки) — по чистой компенсации это была бы одна из самых сильных вакансий в пакете. Плюс сильный корпоративный соцпакет МТС (ДМС со стоматологией с 1-го месяца, страхование от несчастных случаев, 28+3 дня отпуска за ненормированный график, корпоративный университет).
**Но:** вся эта компенсационная привлекательность недостижима без переезда/регулярных поездок в Москву, которые кандидат исключает. Формально высокая компенсация не конвертируется в реальный оффер при данном формате работы.
Gross/Net не указаны явно в JD — типично для МТС, обсуждается на собеседовании.
## E) План персонализации
| # | Раздел | Текущее состояние | Предлагаемое изменение | Почему |
|---|---|---|---|---|
| 1 | Summary | Vue 3 + Flutter общий фокус | Сузить до Vue 3 + Composition API + TS, явно упомянуть опыт "перехода legacy → Vue 3" (проект РМК) | JD явно ищет опыт перехода на Vue 3 — прямое попадание |
| 2 | Порядок буллетов РМК | Баги, WebSocket, мотивация, Git — вперемешку | Вынести "работа с legacy Vue-проектом и системный рефакторинг" в заголовок раздела | Совпадает с "переход на Vue.js 3" и "поддерживать существующий функционал" |
| 3 | UI/UX буллеты | Разбросаны по разным продуктам | Собрать в один компактный блок ("самостоятельные UI/UX-редизайны при отсутствии дизайнера в команде") | JD явно просит "совместно с дизайнером прорабатывать UI/UX" — кандидат показывает дизайн-чутьё даже без дизайнера в команде |
| 4 | Skills | SCSS/LESS отсутствуют | Добавить: "CSS-препроцессоры и методологии — быстро осваиваю (опыт с Tailwind CSS, shadcn-vue)" | Закрыть формальный пробел честно, без выдумывания опыта с конкретными препроцессорами |
| 5 | Локация в форме | — | Указать явно с первого контакта: "Тула, удалённо или гибрид/офис только в Туле; переезд и командировки не рассматриваю" | Экономит время обеих сторон при явном офисном/гибридном требовании в Москве |
## F) План собеседований
| # | Требование JD | История STAR+R | S | T | A | R | Reflection |
|---|---|---|---|---|---|---|---|
| 1 | Переход на Vue.js 3 | Legacy-проект РМК на Vue 3 | Проект накопил технический долг (баг с замыканием, нестабильная клавиатура) | Стабилизировать и модернизировать legacy-код | Исправила ~20 багов, включая сложный кейс с утечкой реактивных переменных в глобальном классе | Кассовый модуль стал стабильным для ежедневной работы кассиров | Осознала, как аккуратно рефакторить, не ломая рабочий процесс живых пользователей |
| 2 | Сложные интерфейсы | График курьеров на vue-cal | Расписание вносили вручную SQL-запросами по заявке логистики | Спроектировать drag-and-drop календарь на Vue 3 | Логистика получила самостоятельное управление графиком без участия разработчиков | Устранена зависимость логистики от разработчиков в рутинной задаче | Поняла ценность самообслуживания для непрофильных отделов |
| 3 | Веб-безопасность / архитектура | RBAC в ЕКОМ | Нужно было разграничение доступа между отделами | Спроектировать ролевую модель, опираясь на профильное ИБ-образование | Реализовала и объяснила модель бэкенд-команде | Модель работает, разграничение соблюдается | Подтвердила, что ИБ-бэкграунд — реальное прикладное преимущество, не только формальность |
| 4 | Совместная работа с дизайнером / UI/UX | Редизайн кнопки «Избранное» и блока информации о заказе | Не было штатного дизайнера, но интерфейс требовал доработки | Самостоятельно спроектировать более удобные элементы | Кнопка стала крупнее и удобнее, блок компактнее | Оба изменения приняты в продакшн | Развила интуицию, когда решение можно принять самой, а когда нужен профильный дизайнер |
| 5 | Поддержание качества кода | Внедрение Playwright E2E + Vitest unit-тестов | Проект РМК не имел автотестов | Внедрить тестовое покрытие поэтапно | Playwright на этапе внедрения, Vitest — для Vue-компонентов ЕКОМ | Растущее покрытие снижает риск регрессий | Осознала важность постепенного внедрения тестов в уже работающий проект, а не "большого взрыва" |
| 6 | Оптимизация существующих решений | Постраничная загрузка «Избранное» | Раздел не открывался — все товары грузились одним запросом | Реализовать pagination совместно с бэкенд-разработчиком | Жалобы пользователей прекратились | Прямое улучшение производительности и UX | Поняла, что производительность — часть UX, а не отдельная техническая метрика |
**Рекомендуемый кейс:** РМК (legacy-проект, переход на Vue 3, рефакторинг) — прямое попадание в формулировку JD "участвовать в переходе на Vue.js 3" и "поддерживать существующий функционал".
**Вопросы-ловушки:**
- *"У вас меньше 3 лет опыта — почему откликаетесь?"* → Акцент на плотность ответственности и прямое совпадение с задачей "переход на Vue 3" (уже делала это на РМК).
- *"Готовы к гибридному графику в Москве?"* → Обязательный честный ответ: "Нет, база — Тула, переезд и командировки не рассматриваю. Готова обсуждать удалённый формат, если он возможен для этой роли."
## G) Легитимность вакансии
**Сигналы свежести:** Дата публикации не показана; статус отклика — активный ("Откликнуться" + встроенная форма "Отклик на вакансию"), что подтверждает открытый статус на момент извлечения.
**Качество описания:** Высокое. Указан конкретный проект (GARNET), конкретный стек (Vue.js 3 + Composition API, SCSS/LESS, Webpack/Vite), явная задача (переход с более старой версии на Vue 3), реалистичные и разнообразные требования (от вёрстки до алгоритмов и веб-безопасности). Список бенефитов детальный и специфичный для МТС, с явным указанием "+3 дополнительных дня за ненормированный рабочий день" — конкретная деталь, которую сложно взять из шаблона.
**Компания:** та же головная структура — ООО «МТС Веб Сервисы», официальный портал job.mts.ru. Ничего подозрительного не обнаружено. WebSearch по репутации компании не проводился — нет сигналов, требующих проверки (бюджет WebSearch использован на Block D, общий для всех трёх вакансий пакета).
**Вывод:** **Высокая уверенность.**
---
## Извлечённые ключевые слова
Vue.js 3, Composition API, TypeScript, HTML5, CSS3, JavaScript ES6+, SCSS, LESS, адаптивная вёрстка, кросс-браузерность, Git, веб-безопасность, Webpack, Vite, UI/UX, алгоритмы, структуры данных, архитектура, паттерны проектирования, сложные интерфейсы, GARNET, переход на Vue 3
---
## Cover Letter Draft
> Draft generated at evaluation time. Complete via `/career-ops cover mts-middle-frontend-vue-garnet` to fill in angles, confirm research, and generate the PDF.
> Gaps flagged below — address them during the cover flow.
---
**Opening** *(placeholder — refine with your "why this role" angle)*
Проект GARNET и переход команды на Vue.js 3 — именно та задача, которую я уже решала на legacy-проекте: стабилизация и модернизация Vue-кода без остановки продакшна.
**Profile introduction**
Frontend-разработчик с коммерческим опытом на Vue 3 (Composition API, TypeScript, Pinia). Параллельно с продуктом, построенным с нуля (ЕКОМ), веду legacy-проект на Vue 3 (РМК), где системно закрываю технический долг и внедряю тестовое покрытие. Профильное образование в информационной безопасности дало нестандартный для frontend-разработчика опыт — самостоятельно спроектировала и объяснила бэкенд-команде ролевую модель авторизации (RBAC), что напрямую перекликается с требованием "знания веб-безопасности" в вакансии.
**Key achievements** *(selected from cv.md — exact wording preserved)*
- **Внедрила Feature Branching в Git (GitLab), обучила коллегу с 11-летним стажем** работе с системой версионирования — команда перешла на стабильные еженедельные релизы.
- **Спроектировала ролевую модель авторизации (RBAC)** с разграничением между отделами, опираясь на профильное ИБ-образование.
- **График курьеров на базе календаря vue-cal с drag-and-drop** — заменил ручной ввод расписания SQL-запросами разработчиков.
- **Редизайн блока информации о заказе и кнопки «Избранное»** — самостоятельное проектирование интерфейса в компании без штатного дизайнера.
**Problems I will solve** *(placeholder — requires company research + your input)*
> To be completed: какие задачи стоят перед GARNET в рамках перехода на Vue 3 (миграция компонентов, производительность, совместимость)? Как бы вы к ним подошли?
**Closing**
Готова обсудить детали в удобное время. Отдельно хочу сразу обозначить: моя база — Тула, переезд и командировки не рассматриваю; открыта к обсуждению удалённого формата, если он применим к этой позиции.
---
**Gaps flagged:**
- **Локация (критично):** роль заявлена как гибридная в Москве. Кандидат не переезжает и не рассматривает командировки — прояснить с рекрутером в первом контакте.
- **Уровень:** JD просит от 3 лет опыта; у кандидата ~1.5-2 года. Обсуждается в блоке C.
- **SCSS/LESS:** не в CV явно — обозначить как быстро осваиваемую зону, не как готовый навык.
**JD keywords to mirror** *(extracted for ATS + human read)*
Vue.js 3, Composition API, TypeScript, переход на Vue 3, веб-безопасность, сложные интерфейсы, UI/UX, адаптивная вёрстка, Git, рефакторинг
---
*Run `/career-ops cover mts-middle-frontend-vue-garnet` to complete angles, confirm company research, and generate the PDF.*
---
## Sources (WebSearch, Block D)
- [Зарплата Frontend-разработчика в 2026: Junior, Middle, Senior, Lead | СБОРКА](https://sborka.work/knowledge/salaries/frontend-developer-salary)
- [Зарплата Frontend разработчика в 2026 году: детальный разбор React, Vue и Angular](https://enigmai.ru/salary/frontend/frontend-salary-2026/)
- [Профессия Frontend-разработчик | hh.ru](https://career.hh.ru/profession/40)