Files
career-ops-vbleroy/reports/017-tsft-2026-07-07.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

159 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.
# Оценка: АО "ЦФТ" — Frontend-разработчик Vue
**Дата:** 2026-07-07
**Архетип:** Frontend Developer (Vue.js) — primary archetype
**Балл:** 2.1/5
**URL:** https://trudvsem.ru/vacancy/card/1025403199689/1b49c818-2f2d-11f1-8701-7ffab189dfea
**Legitimacy:** Proceed with Caution
**PDF:** не сгенерирован (балл < 3.0, порог для авто-PDF)
---
## A) Резюме роли
| Поле | Значение |
|------|----------|
| Архетип | Frontend Developer (Vue.js) — primary |
| Domain | Frontend / fintech (внутренние и клиентские веб-продукты) |
| Function | Build |
| Seniority (заявлено на других площадках ЦФТ для этой роли) | Middle, 3-6 лет опыта |
| Формат работы | **Не указан явно в вакансии на trudvsem.ru.** WebFetch вернул в основном навигационную обвязку портала (SPA-рендеринг), без salary/description/contact в самой карточке. По косвенным данным о найме ЦФТ на других площадках — типичная практика 5/2, удалённо/гибрид — но это НЕ подтверждено для конкретно этой вакансии |
| Размер команды | Не указано в извлечённом тексте; по внешним данным — подразделение Web Technologies ведёт 50+ веб-проектов (ЦФТ, Золотая Корона, ФСГ, РНКО, Карт Стандарт, Faktura) |
| Оформление | Не указано в извлечённом тексте |
| Локация | Новосибирская область (подтверждено и на trudvsem, и в scan-history.tsv) |
| TL;DR | Frontend Vue-вакансия в крупном новосибирском fintech-холдинге (ЦФТ) с сильным техническим совпадением по стеку, но с нерешённым конфликтом по требуемому стажу (3-6 лет по внешним данным vs ~1.7 года у кандидата) и неподтверждённым удалённым форматом. |
**Ограничение данных:** WebFetch по URL trudvsem.ru вернул почти исключительно элементы навигации портала "Работа России" — ни зарплата, ни полное описание, ни контакты не были доступны напрямую. Detали ниже восстановлены через WebSearch по внешним источникам (team.cft.ru, job.cft.ru, hh.ru), которые описывают похожую/ту же линейку вакансий ЦФТ Frontend Vue в Новосибирске, но НЕ являются 1:1 подтверждением текста именно этой карточки. Это существенно снижает уверенность в деталях ниже.
**Vibe команды** (качественный сигнал, не входит в числовую оценку): Судя по формулировкам из внешних описаний похожих вакансий ЦФТ (не текста самой карточки) — упоминаются код-ревью и поддержка "специалистов подразделения" при развитии навыков, что можно трактовать как признак менторской культуры. Прямых упоминаний автономии/участия в архитектурных решениях или гибкого графика в тексте самой вакансии нет. Недостаточно данных из JD этой конкретной карточки, чтобы делать уверенный вывод — стоит уточнить на собеседовании.
---
## B) Совпадение с CV
| Требование JD (реконструировано из внешних источников) | Совпадение с cv.md |
|---|---|
| Vue 3 (или Vue 2 с пониманием отличий) | Прямое совпадение: «Здесь ЕКОМ» — фронтенд с нуля на Vue 3, Composition API (см. cv.md, раздел «Здесь ЕКОМ») |
| TypeScript | Прямое совпадение: «Здесь ЕКОМ» — стек включает TypeScript |
| JavaScript, HTML5/CSS3 | Прямое совпадение (раздел «Навыки») |
| Pinia / state management | Прямое совпадение: Pinia указана в стеке ЕКОМ |
| Код-ревью, рефакторинг legacy-кода | Частичное совпадение: РМК — legacy-проект, ~6 месяцев, багфиксы включая сложный кейс с замыканием реактивной переменной |
| REST API / WebSocket | Прямое совпадение: WebSocket (WSS) на ЕКОМ и РМК |
| **Стаж 3-6 лет** (типичное требование для Middle на похожих вакансиях ЦФТ) | **Пробел.** У кандидата ~1 год 8 месяцев коммерческого опыта (с ноября 2024) |
| Работа в команде из нескольких разработчиков, командные процессы | Частичное совпадение: внедрение Feature Branching, обучение коллеги системе версионирования, участие в спринт-планировании |
### Пробелы
1. **Стаж (3-6 лет vs ~1.7 года)** — это hard blocker для формального ATS-фильтра в крупной компании уровня ЦФТ, но не обязательно blocker по факту компетенций.
- Может ли кандидат продемонстрировать смежный/эквивалентный опыт? Да — за 1.7 года кандидат единолично довела greenfield-продукт (ЕКОМ) от нуля до продакшена, спроектировала RBAC, параллельно вела ещё 2 проекта (РМК, «Здесь Аптека»). Это компенсирует калиброванный стаж «широтой» ответственности, но НЕ заменяет годы формально.
- Портфолио-проект, закрывающий пробел? Нет отдельного демо (portfolio_url пуст в profile.yml) — не выдумывать, не добавлять.
- Конкретный план: в сопроводительном/самопрезентации явно называть масштаб ответственности («вела 3 продукта параллельно, включая greenfield-разработку с нуля») вместо количества лет; готовиться к прямому вопросу рекрутера «у вас же меньше 3 лет» с честным ответом + переносом фокуса на объём поставленного функционала.
2. **Формат работы (удалённо/гибрид/офис) не подтверждён для этой вакансии** — hard blocker по локационной политике, если это окажется офис в Новосибирске без удалёнки (см. Block C).
- Стратегия закрытия: до отклика — уточнить формат работы у рекрутера ЦФТ напрямую (LinkedIn/HR-контакт), не подавать заявку вслепую.
---
## C) Уровень и стратегия
**Уровень в JD (по внешним данным о похожих вакансиях ЦФТ):** Middle, заявленный порог 3-6 лет.
**Естественный уровень кандидата для архетипа Frontend (Vue.js):** Junior→Middle (переходный) — сильный технический стек на уровне Middle (Vue 3 + Composition API + TS + Pinia в продакшене, RBAC-дизайн), но стаж соответствует раннему уровню.
**План «продать senior без обмана»:**
- Вести с масштабом: «спроектировала и реализовала с нуля фронтенд системы управления заказами для сети из ~1200 аптек» — это не typical junior-задача.
- RBAC-дизайн как дифференциатор: подчеркнуть, что кандидат самостоятельно объясняла бэкенд-команде модель разграничения прав — редкая для её грейда инициатива.
- Не заявлять стаж, которого нет — говорить «неполные 2 года коммерческого опыта, но веду 3 параллельных продукта» прямо, это честнее и работает в её пользу за счёт контраста.
**План «если понизят уровень» (вероятный сценарий здесь):**
- Принять понижение до Junior+/Middle- **только** если компенсация соответствует нижней границе таргета кандидата (100 000 ₽/мес на руки — см. profile.yml), а не ниже.
- Просить пересмотр грейда/оклада через 6 месяцев с чёткими критериями (например: закрытие межпродуктовых задач без сопровождения сеньора).
- **Важно:** если позиция окажется офисной в Новосибирске без удалёнки — это конфликтует с жёсткой политикой кандидата «переезд и командировки не рассматриваю» (modes/_profile.md, Location Policy). В этом случае вопрос уровня становится вторичным — переговоры не имеют смысла до прояснения формата работы.
---
## D) Компенсация и спрос
**Зарплата в самой вакансии:** не указана — ни в извлечённом тексте trudvsem, ни в доступных фрагментах внешних источников для этой конкретной карточки.
**Рыночные данные (WebSearch, RU market, июль 2026):**
| Источник | Данные |
|---|---|
| Общие отраслевые обзоры (2026) | Frontend middle-разработчик в РФ: ~177 000 ₽/мес (по совокупным данным HH.ru) |
| Региональный срез (Новосибирск/Екатеринбург/Казань) | 160 000–180 000 ₽/мес для middle, если компания не платит по московским ставкам |
| Vue.js vs другие стеки | Vue-разработчики в среднем получают на 8-12% меньше, чем React-разработчики того же грейда |
| Репутация компании (dreamjob.ru, отзывы сотрудников) | Есть сигналы, что зарплата в ЦФТ **ниже рыночной** по отзывам части сотрудников — не подтверждено количественно, качественный сигнал из отзывов |
| Условия (по общим описаниям вакансий ЦФТ, не этой конкретной) | График 5/2, официальное трудоустройство "в белую" с первого дня, соцпакет: ДМС, партнёрские скидки, корпоративный транспорт |
**Оценка (gross/net):** Не указано в JD, поэтому невозможно применить формулу `net ≈ gross × 0.87`. Рекомендация: уточнять у рекрутера ЦФТ явно — «gross или на руки?» — до обсуждения таргета.
**Вывод:** При отсутствии заявленной вилки и с учётом качественных сигналов о зарплате ниже рынка, а также реальном стажевом пробеле кандидата (что обычно означает предложение по нижней границе вилки, а не по верхней), реалистичный диапазон предложения — скорее всего **ниже** таргета кандидата (100 000–120 000+ ₽/мес на руки). Это не гарантировано, но риск существенный.
---
## E) План персонализации
| # | Раздел | Текущее состояние | Предлагаемое изменение | Почему |
|---|--------|--------------------|--------------------------|--------|
| 1 | Summary (PDF) | Общий акцент на Vue3 + Flutter dual-track | Для ЭТОЙ вакансии — убрать/сократить Flutter, вести исключительно с Vue 3 + TS + Pinia + масштабом ЕКОМ | Роль чисто Frontend Vue, Flutter — шум для этого ATS-фильтра |
| 2 | Опыт — заголовок роли | «Frontend/Flutter-разработчик» | Показать «Frontend-разработчик (Vue 3)» как ведущую роль в резюме под эту вакансию | Соответствие точному заголовку роли повышает keyword-match |
| 3 | Проектные буллеты | RBAC упомянут как один из пунктов | Вынести RBAC-дизайн в первую строку под ЕКОМ — это единственный по-настоящему дифференцирующий пункт против типичного Middle-кандидата с 3+ годами | Компенсирует пробел по стажу через уникальность экспертизы |
| 4 | Ключевые слова | TS, Vue 3, Pinia уже есть | Добавить явно «Composition API», «code review», «рефакторинг legacy» если применимо честно (РМК — legacy-фикс замыкания) | ATS-совпадение по типичным для ЦФТ формулировкам |
| 5 | LinkedIn/hh.ru заголовок | Не указано в profile.yml (LinkedIn пуст) | При отклике через hh.ru — заголовок «Frontend-разработчик Vue 3 / TypeScript» | Максимизирует релевантность в поиске рекрутера |
---
## F) План собеседований
| # | Требование JD | История STAR+R | S | T | A | R | Reflection |
|---|---|---|---|---|---|---|---|
| 1 | Vue 3 / Composition API в продакшене | RBAC-модель в ЕКОМ | Бэкенд не имел готовой модели прав доступа, отделы (логистика/заказы) видели чужие данные | Спроектировать и объяснить ролевую модель авторизации | Использовала ИБ-образование, спроектировала роли/группы/права, презентовала бэкенд-команде | Внедрено разграничение по отделам | Поняла, что нестандартный бэкграунд (ИБ) — реальное конкурентное преимущество, а не просто "интересный факт" в резюме |
| 2 | Legacy-рефакторинг / код-ревью | Баг с замыканием в РМК | Клавиатура переставала работать после серии действий | Найти причину в глобальном классе биндинга клавиш | Диагностировала: реактивная переменная передавалась в глобальный класс, старые версии не очищались | Баг исправлен, задокументирован паттерн | Осознала важность жизненного цикла реактивных переменных вне компонентной области Vue |
| 3 | Работа с командой / rollout процессов | Feature Branching в GitLab | Хаотичные releases, "зависшие" фичи | Внедрить Git Flow и обучить команду | Обучила коллегу с 11-летним стажем, ввела процесс | Команда перешла на стабильные еженедельные релизы | Мягкие навыки (обучение старшего коллеги) не менее значимы, чем код |
| 4 | UI/UX-инициатива без дизайнера | Редизайн кнопки «Избранное» и блока информации о заказе | Не было дизайнера, UI была неудобной | Взять на себя проектирование интерфейса | Самостоятельно спроектировала и внедрила изменения | Улучшенная эргономика интерфейса | Готовность закрывать пробел роли (дизайн) — сигнал проактивности |
| 5 | Работа с WebSocket/real-time | Внедрение WSS-оповещений в РМК | Не было видимости, сколько аптек онлайн | Внедрить real-time оповещения | Реализовала WebSocket-канал с отметкой прочтения | Видимость статуса ~1200 аптек в реальном времени | Реальная система масштаба, close к enterprise-требованиям ЦФТ |
| 6 | Диагностика продакшн-багов | «Избранное» не открывалось | Жалобы пользователей на баг | Найти причину без готового отчёта от QA | Диагностировала: все товары грузились одним запросом | Реализовала постраничную загрузку, жалобы прекратились | Проактивный дебаг до эскалации — ценно для команды с 50+ проектами |
**Рекомендуемый кейс для презентации:** «Здесь ЕКОМ» — greenfield-продукт с нуля, потому что это единственный проект кандидата, сравнимый по масштабу ответственности с типичными Middle-задачами в ЦФТ.
**Вопросы-ловушки:**
- «У вас же меньше 3 лет опыта, почему претендуете на Middle?» → честно: «неполные 2 года, но за это время вела 3 параллельных продукта, один — с нуля, включая архитектурное решение (RBAC), которое обычно не доверяют разработчику с таким стажем».
- «Готовы к переезду/командировкам в Новосибирск?» → прямо, без смягчения: «Нет, переезд и командировки не рассматриваю. Открыта к удалённому или гибридному формату при дневном графике» (по modes/_profile.md — не смягчать до "гибко").
- «Почему уходите от мобильной разработки к чистому frontend?» → «Не ухожу — веду оба трека параллельно в текущей компании; для этой роли я лучше подхожу именно по Vue 3/TS стеку, а Flutter-опыт остаётся дополнительным активом».
---
## G) Проверка легитимности вакансии (Posting Legitimacy)
**Assessment: Proceed with Caution**
| Сигнал | Наблюдение | Вес |
|---|---|---|
| Свежесть публикации | Не определена — `check-liveness.mjs` вернул статус `uncertain` («content present but no visible apply control found»), дата публикации не видна в извлечённом тексте | Neutral/Concerning |
| Качество описания (карточка trudvsem) | Само описание практически не извлекается (SPA-рендеринг, WebFetch вернул навигационную обвязку) — невозможно оценить качество текста ИМЕННО этой карточки | Concerning (по причине недоступности данных, не по содержанию) |
| Качество описания (внешние зеркала той же роли/команды) | На team.cft.ru/job.cft.ru/hh.ru встречаются структурированные описания похожих Frontend Vue ролей ЦФТ с конкретным контекстом команды (50+ веб-проектов, конкретные бренды-клиенты) | Positive |
| Company Hiring Signals | ЦФТ — крупный, давно существующий fintech-холдинг (владеет системой "Золотая Корона"); WebSearch не выявил свежих новостей о сокращениях или заморозке найма в 2026 | Positive/Neutral |
| Reposting Detection | По `data/scan-history.tsv` — это первое появление данной вакансии/URL в истории сканирования (единственная запись, добавлена сегодня) | Neutral (нет данных о повторных размещениях) |
| Role Market Context | Frontend Vue-роль в крупной fintech-компании с десятками веб-продуктов — типичная, регулярно заполняемая позиция (4-8 недель обычно) | Neutral/Positive |
**Context Notes:** Компания ведёт активный набор на похожие Frontend Vue позиции сразу на нескольких площадках (hh.ru, team.cft.ru, job.cft.ru) — это скорее говорит о continuous/pipeline-найме в растущем веб-подразделении, чем о разовой вакансии-призраке. Основная неопределённость — техническая (SPA не отдаёт контент WebFetch), а не поведенческая.
---
## Извлечённые ключевые слова
Vue 3, Vue.js, Frontend, TypeScript, Composition API, Pinia, JavaScript, CSS, HTML5, code review, рефакторинг, WebSocket, REST API, Новосибирск, ЦФТ, Центр Финансовых Технологий, Золотая Корона, Web Technologies, middle-разработчик, git, командная работа, ДМС, официальное трудоустройство
---
## Итоговая рекомендация
**Балл 2.1/5 — существенно ниже порога 4.0/5 (AGENTS.md, Ethical Use).** Настоятельно рекомендуется **не откликаться** на эту вакансию в текущем виде, по совокупности причин:
1. Стажевый пробел (3-6 лет заявлено на схожих ролях ЦФТ vs ~1.7 года у кандидата) — реальный риск отсева на этапе ATS/скрининга.
2. Формат работы не подтверждён — если окажется офис в Новосибирске без удалёнки, это прямой конфликт с жёсткой политикой кандидата (нет переезда/командировок), что обнулило бы оценку до 1.0.
3. Зарплата не раскрыта, а качественные сигналы указывают на возможную оплату ниже рынка и ниже таргета кандидата.
4. Данные о самой вакансии крайне ограничены (SPA-портал, WebFetch не смог извлечь описание) — высокая неопределённость всей оценки.
**Если кандидат всё же хочет двигаться дальше:** сначала письменно уточнить у ЦФТ (до отклика) формат работы (удалённо/гибрид/офис) и вилку зарплаты — это два блокирующих неизвестных, которые могут изменить оценку в любую сторону.