init
This commit is contained in:
commit
d295c7f139
1527 files changed
+270726
No files matched your search
@@ -0,0 +1,158 @@
|
||||
# Оценка: МТС — Senior Frontend (ON Медиа)
|
||||
|
||||
**Дата:** 2026-07-06
|
||||
**URL:** https://job.mts.ru/vacancy/678181160223770637
|
||||
**Архетип:** Frontend-разработчик (Angular) — не совпадает с основным архетипом кандидата (Vue.js)
|
||||
**Балл:** 1.7/5
|
||||
**Legitimacy:** Высокая уверенность
|
||||
**PDF:** не создан (балл < 3.0)
|
||||
|
||||
---
|
||||
|
||||
## A) Резюме роли
|
||||
|
||||
| Параметр | Значение |
|
||||
|---|---|
|
||||
| Архетип (JD) | Frontend-разработчик, Angular-стек |
|
||||
| Ближайший архетип кандидата | Frontend Developer (Vue.js) — primary в `config/profile.yml`, но технологический стек не совпадает |
|
||||
| Domain | Frontend внутренней системы управления медиа-инвентарём (АО МТС Веб Сервисы) |
|
||||
| Function | Build + стабильность продакшена (баги, алерты, логи, мониторинг) + автотесты |
|
||||
| Seniority (JD) | Senior, заявленный опыт 3-6 лет **именно с Angular** |
|
||||
| Seniority (кандидат) | ~1 год 8 месяцев коммерческого frontend-опыта (с ноября 2024, «Здравсервис»); опыт с Angular — 0 |
|
||||
| Формат работы | **Неоднозначно.** JD показывает только «Москва · Полный день» — без пометки «Гибридный» / «Удалённая работа», в отличие от сестринской вакансии МТС (014), где формат указан явно. Это, вероятно, сигнал офисного/гибридного формата, но однозначного подтверждения в тексте JD нет — требует уточнения у рекрутёра до отклика. |
|
||||
| Размер команды | Не указано |
|
||||
| Оформление | Не указано (юрлицо: АО МТС Веб Сервисы) |
|
||||
| TL;DR | Senior Angular-роль в крупной телеком-компании; кандидат — Vue 3/Flutter-разработчик без коммерческого опыта Angular, формат работы не подтверждён как удалённый — комбинация стекового разрыва и вероятного офисного формата в Москве делает эту вакансию низкоприоритетной. |
|
||||
|
||||
**Замечание по локации (по правилу из `modes/_profile.md`):** кандидат живёт в Туле, релокация и командировки исключены. Удалённая работа оценивается нормально, гибрид/офис в Туле — нормально, но гибрид/офис/on-site вне Тулы без удалённой опции — жёсткий блокер (балл 1.0 по этому измерению). Так как JD не подтверждает удалёнку явно (в отличие от вакансии 014, где хотя бы указан «Гибкий график»), при консервативной интерпретации это выглядит как офисная/гибридная роль в Москве → правило применяется.
|
||||
|
||||
## B) Совпадение с CV
|
||||
|
||||
| Требование JD | Совпадение с CV |
|
||||
|---|---|
|
||||
| TypeScript, JavaScript ES6+, HTML5, CSS3 | ✅ «Языки программирования: JavaScript, TypeScript, HTML5/CSS3, Dart» |
|
||||
| Angular 15+ (архитектура, компоненты, директивы, DI, роутинг, формы) | ❌ Нет. В CV — только Vue 3 (Composition API) и Vue 2 «базово». Коммерческого опыта Angular нет вообще. |
|
||||
| RxJS, signals/computed/effect | ❌ Нет прямого опыта. Концептуально близко к реактивности Vue (`ref`/`computed`/`watch`), но это не считается эквивалентным опытом. |
|
||||
| REST API, WebSockets | ✅ «Внедрила WebSocket для оповещений в реальном времени» (РМК) — сильное совпадение, только протокол работает в другом фреймворке. |
|
||||
| Автотесты Playwright | ✅ Прямое совпадение: «Внедрила Playwright E2E-тесты (сейчас на этапе внедрения)» на проекте РМК. |
|
||||
| SOLID, DRY, KISS, компонентный подход | ⚠️ Не сформулировано явно в CV, но компонентная архитектура ЕКОМ и RBAC-дизайн демонстрируют похожее мышление. |
|
||||
| Nx Monorepo | ❌ Нет опыта. |
|
||||
| Оптимизация производительности (bundle size, lazy rendering) | ⚠️ Частично: постраничная загрузка в «Избранное» («Здесь Аптека») — концептуально похожая задача (lazy loading данных), но не bundle-level оптимизация. |
|
||||
| Micro Frontends (Module Federation, Webpack 5) | ❌ Нет опыта. |
|
||||
| SCSS/SASS, Flexbox, Grid | ⚠️ Частично: CV называет Tailwind CSS, а не SCSS/SASS напрямую; adaptивная вёрстка — да, но другой CSS-подход. |
|
||||
| Figma, реализация по макетам | ⚠️ Косвенно: «самостоятельное проектирование интерфейсов и редизайн ... отрисовка app-иконок» — опыт UI-работы есть, но не подтверждена работа именно с Figma-макетами дизайнера. |
|
||||
| Angular Material / UI-библиотеки | ❌ Нет — использует shadcn/shadcn-vue, Tailwind (экосистема Vue). |
|
||||
|
||||
**Пробелы:**
|
||||
|
||||
1. **Angular как основной стек — hard blocker.** Это не «nice-to-have», а сердце роли (архитектура, жизненный цикл, DI, RxJS/signals). Смежный опыт (Vue reactivity) не закрывает этот пробел для Senior-позиции.
|
||||
2. **Nx/Module Federation/Micro Frontends** — nice-to-have, но накладываются на уже критичный пробел по Angular.
|
||||
3. **Стратегия закрытия:** единственный честный аргумент — доказанная способность быстро осваивать новый стек (Flutter/BLoC с нуля за короткий курс, затем продакшн-приложения; порт Android→iOS). Это снижает риск для нанимающей стороны, но не заменяет требуемый коммерческий опыт Angular 3-6 лет.
|
||||
4. Портфолио-проекта на Angular нет и создавать его специально под одну вакансию — не оправдано с учётом уровня рассинхрона.
|
||||
|
||||
## C) Уровень и стратегия
|
||||
|
||||
1. **Уровень в JD:** Senior, 3-6 лет опыта с указанным стеком. **Естественный уровень кандидата:** Middle по архетипу Vue.js/Flutter (см. `config/profile.yml`), и это не переносится на Angular — там уровень фактически «стажёр/самообучение».
|
||||
2. **План «продать senior без обмана»:** в этом случае — не применим честно. Нельзя убедительно продать Angular-senior компетенцию без реального коммерческого опыта. Единственный правдивый ход — предложить себя как «быстро обучаемого frontend-инженера с сильным TypeScript/тестированием фундаментом», но явно обозначить отсутствие Angular и спросить про период адаптации/менторство.
|
||||
3. **План «если понизят уровень»:** не актуален — проблема не в занижении уровня, а в отсутствии стекового соответствия в принципе.
|
||||
|
||||
**Рекомендация:** не позиционировать кандидата как senior Angular-разработчика. Если кандидат всё же хочет откликнуться, это стоит делать только как осознанный long-shot / нетворкинг-заход, а не как приоритетную заявку.
|
||||
|
||||
## D) Компенсация и спрос
|
||||
|
||||
| Показатель | Значение | Источник |
|
||||
|---|---|---|
|
||||
| Медиана Senior Frontend, Москва (все стеки) | 287 500 ₽/мес (февраль 2026) | [hh.ru career profession page](https://career.hh.ru/profession/40) |
|
||||
| Диапазон Senior Frontend, Москва | 300 000 – 450 000 ₽/мес | [Зарплата Frontend-разработчика в 2026: Junior, Middle, Senior, Lead](https://sborka.work/knowledge/salaries/frontend-developer-salary) |
|
||||
| Angular vs React (относительно) | Angular-специалисты в среднем получают на 15-18% меньше React-разработчиков (данные Habr Career) | см. агрегированные обзоры зарплат frontend 2026 |
|
||||
| Указано в JD | «Оклад + годовой бонус» — конкретная цифра не раскрыта | jds/mts-senior-frontend-on-media.md |
|
||||
| Gross/Net | В JD явно не указано; по умолчанию для корпоративных вакансий РФ предполагается gross. `net ≈ gross × 0.87` | modes/ru/_shared.md |
|
||||
|
||||
Даже с учётом скидки Angular vs React (~15-18%), нижняя граница рыночного диапазона для Senior Frontend в Москве (~300 000 ₽ gross ≈ 261 000 ₽ net) значительно превышает цель кандидата (100 000–120 000+ ₽/мес на руки). **Компенсация сама по себе не была бы блокером** — проблема исключительно в стеке и, вероятно, в формате работы.
|
||||
|
||||
## E) План персонализации
|
||||
|
||||
Балл ниже порога 3.0 — PDF не генерируется. Тем не менее, если кандидат решит откликнуться как long-shot:
|
||||
|
||||
| # | Раздел | Текущее состояние | Предлагаемое изменение | Почему |
|
||||
|---|--------|-------------------|------------------------|--------|
|
||||
| 1 | Summary | Акцент на Vue 3 + Flutter | Явно обозначить «быстро осваиваю новые фреймворки» с примером Flutter с нуля | Компенсирует отсутствие Angular честной демонстрацией скорости обучения |
|
||||
| 2 | Навыки | Vue 3, Composition API на первом месте | Поднять TypeScript, тестирование (Vitest/Playwright), WebSocket выше | Это реально пересекающиеся с JD компетенции |
|
||||
| 3 | Опыт (РМК) | Стандартное описание | Выделить Playwright E2E и WebSocket-оповещения отдельными буллетами | Прямое совпадение с задачами JD («автотесты», «алерты, логи, мониторинг») |
|
||||
| 4 | Cопроводительное письмо | — | Прямо обозначить отсутствие Angular и предложить план адаптации | Честность снижает риск отказа на этапе скрининга резюме |
|
||||
| 5 | LinkedIn/hh.ru заголовок | «Frontend-разработчик (Vue 3, Flutter)» | Не менять под Angular искусственно | Изменение заголовка под несуществующий опыт — манипуляция, а не позиционирование |
|
||||
|
||||
## F) План собеседований
|
||||
|
||||
| # | Требование JD | История STAR+R | S | T | A | R | Reflection |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| 1 | Автотесты (Playwright) | Внедрение E2E-тестов на РМК | Legacy-проект кассы без тестового покрытия | Снизить риск регрессий при релизах | Внедрила Playwright E2E-тесты | Тестирование на этапе внедрения, часть багов теперь ловится до продакшена | В следующий раз начала бы с тестов для самых критичных сценариев (авторизация, оплата), а не по порядку модулей |
|
||||
| 2 | Алерты, логи, мониторинг, стабильность | WebSocket-оповещения в реальном времени (РМК) | Не было видимости, сколько аптек онлайн | Дать логистике и поддержке видимость статуса в реальном времени | Внедрила WebSocket (WSS), интерфейс с track «кто и когда прочитал» | Около половины аптек читают оповещение в первые минуты | Стоило сразу спроектировать метрики доставки/задержки, а не добавлять их постфактум |
|
||||
| 3 | Быстрое освоение нового стека (проекция на Angular) | Переход в Flutter с нуля и релиз в App Store | Нужно было закрыть mobile-направление, специалиста не было | Пройти курс, освоить Flutter/BLoC, довести приложение до релиза | Собрала iOS-сборки, отправила в App Store, спроектировала иконки | Два приложения адаптированы под iOS, ранее не поддерживавшийся платформой | Заранее заложила бы больше времени на review Apple, т.к. процесс проверки занял больше, чем ожидала |
|
||||
| 4 | Компонентный подход / SOLID (косвенно) | Проектирование RBAC-модели в ЕКОМ | Нужно разграничить доступ между отделами | Спроектировала ролевую модель, объяснила бэкенд-команде | Модель внедрена, отделы видят только свои данные | Использовала образование по ИБ как нестандартный для frontend угол | Задокументировала бы модель заранее, чтобы не объяснять её бэкенду устно каждый раз |
|
||||
| 5 | UI по макетам (Figma, косвенно) | Редизайн кнопки «Избранное» и блока информации о заказе | В компании нет дизайнера, есть проблема удобства UI | Самостоятельно спроектировала и внедрила редизайн | Кнопка стала крупнее и удобнее, информация — компактнее | Взяла на себя роль де-факто дизайнера | В будущем стоит формализовать процесс UI-ревью, чтобы решения не принимались в одиночку |
|
||||
| 6 | Стабильность релизов (баги, "500-ки" — проекция) | Feature Branching + баг с замыканием клавиатуры (РМК) | Нестабильные релизы, сложный баг с реактивной переменной в глобальном классе | Диагностировала утечку в биндинге клавиатуры, внедрила Feature Branching | Команда перешла на стабильные еженедельные релизы | Обучила коллегу с 11-летним стажем работе с Git-версионированием | Раньше стоило внедрить формальный код-ревью, а не только Feature Branching |
|
||||
|
||||
**Рекомендуемый кейс на интервью:** WebSocket-оповещения (РМК) — напрямую пересекается с задачами JD («стабильность, алерты, мониторинг»।).
|
||||
|
||||
**Вопросы-ловушки:**
|
||||
- *«У вас нет опыта Angular — как планируете закрыть этот пробел?»* → Ответ: честно признать отсутствие, привести пример быстрого освоения Flutter/BLoC с нуля, спросить про период адаптации/менторство в команде.
|
||||
- *«Почему решили сменить стек с Vue на Angular?»* → Не выдумывать «выбор», честно сказать: это отклик на конкретную открытую позицию, а не смена специализации.
|
||||
|
||||
## G) Легитимность вакансии
|
||||
|
||||
**Свежесть:** дата публикации не показана в извлечённом JD — нейтральный сигнал (не редкость для корпоративных ATS МТС), не понижает уверенность.
|
||||
|
||||
**Качество описания:** высокое — указана конкретная версия фреймворка (Angular 15+), конкретные технические паттерны (signals, computed, effect, Module Federation, Nx), конкретное юрлицо (АО МТС Веб Сервисы), реалистичный и подробный список требований и бенефитов (ДМС со стоматологией, страхование жизни, корпоративное обучение). Низкий процент «воды» в тексте.
|
||||
|
||||
**Компания:** МТС — крупный, публично известный телеком/tech-оператор в России; риска фиктивной вакансии практически нет. WebSearch по хайринг-сигналам компании не использовался (бюджет 5 запросов на вакансию распределён на п.D — экономия оправдана отсутствием тревожных сигналов в самом тексте JD).
|
||||
|
||||
**Apply control:** активна кнопка «Откликнуться» + встроенная форма.
|
||||
|
||||
**Итог:** **Высокая уверенность** — вакансия реальна и активна. Единственная неопределённость касается не легитимности, а формата работы (см. блок A).
|
||||
|
||||
---
|
||||
|
||||
## Извлечённые ключевые слова
|
||||
|
||||
TypeScript, JavaScript ES6+, Angular 15+, RxJS, Signals, Computed, Effect, Dependency Injection, Change Detection OnPush, HTTP-клиент, Lazy Loading, WebSockets, REST API, SOLID/DRY/KISS, Nx Monorepo, Micro Frontends, Module Federation, Webpack 5, SCSS/SASS, Flexbox/Grid, Figma, Angular Material, Playwright автотесты, Bundle size
|
||||
|
||||
---
|
||||
|
||||
## Cover Letter Draft
|
||||
|
||||
> Draft generated at evaluation time. Complete via `/career-ops cover mts-on-media` 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)*
|
||||
Заинтересовало направление разработки внутренней системы управления медиа-инвентарём в АО МТС Веб Сервисы — задача сочетает стабильность продакшена и активное применение автотестов, что близко моему текущему опыту.
|
||||
|
||||
**Profile introduction**
|
||||
Frontend-разработчик с коммерческим опытом на Vue 3 (Composition API, TypeScript, Pinia) и Flutter. С ноября 2024 года веду несколько продуктов одновременно в аптечной сети «Здравсервис» (~1200 аптек), включая разработку фронтенда системы управления заказами и логистикой с нуля.
|
||||
|
||||
**Key achievements** *(selected from cv.md — exact wording preserved)*
|
||||
- **Внедрила Playwright E2E-тесты** (сейчас на этапе внедрения) на проекте РМК.
|
||||
- **Внедрила WebSocket для оповещений в реальном времени** — впервые в компании видно, сколько аптек онлайн прямо сейчас; интерфейс показывает, кто и когда прочитал оповещение.
|
||||
- **Спроектировала ролевую модель авторизации (RBAC)** с разграничением между отделами, опираясь на профильное ИБ-образование.
|
||||
- **Прошла профильный курс и перешла в Flutter с нуля**, довела два приложения до релиза в App Store после портирования Android → iOS.
|
||||
|
||||
**Problems I will solve** *(placeholder — requires company research + your input)*
|
||||
> To be completed: какие задачи стабильности/автотестирования актуальны для системы медиа-инвентаря МТС и как вы бы их решали?
|
||||
|
||||
**Closing**
|
||||
Буду рада обсудить детали в удобное для вас время.
|
||||
|
||||
---
|
||||
|
||||
**Gaps flagged:**
|
||||
- **Стековое несоответствие (hard):** нет коммерческого опыта Angular — центральное требование роли.
|
||||
- **Формат работы не подтверждён:** JD не указывает явно удалённую/гибридную работу, в отличие от других вакансий МТС — требует уточнения перед откликом.
|
||||
- **Уровень:** заявлен Senior (3-6 лет), у кандидата ~1 год 8 месяцев коммерческого опыта.
|
||||
|
||||
**JD keywords to mirror** *(extracted for ATS + human read)*
|
||||
Angular 15+, TypeScript, автотесты Playwright, стабильность системы, мониторинг, REST API, WebSockets, компонентный подход, SOLID/DRY/KISS, оптимизация производительности
|
||||
|
||||
---
|
||||
*Run `/career-ops cover mts-on-media` to complete angles, confirm company research, and generate the PDF.*
|
||||
Reference in new issue
Block a user