Files
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

138 lines
21 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.
# Оценка: Bnovo — Senior Frontend разработчик
**Дата:** 2026-07-07
**Архетип:** Frontend Developer (Vue.js) — primary archetype, заявленный уровень Senior
**Балл:** 2.5/5
**URL:** https://hh.ru/vacancy/134897754
**PDF:** не создан (балл < 3.0)
**Legitimacy:** High Confidence
---
## A) Резюме роли
| Параметр | Значение |
|---|---|
| Архетип | Frontend Developer (Vue.js) |
| Domain | SaaS-платформа для автоматизации гостиничного бизнеса (hospitality management) |
| Function | Build + частично Lead (менторство джунов/миддлов, потенциальный tech lead трек) |
| Seniority | Senior, заявлено "4+ года опыта Frontend-разработки" |
| Формат работы | Санкт-Петербург, офис с возможностью удалённого формата ("удалённо" указано как доступный вариант) |
| Размер команды | Не указан явно |
| Оформление | Трудовой договор (ТК РФ) |
| Зарплата | Не указана |
| TL;DR | Senior-роль в устойчивой SaaS-компании с хорошей репутацией и подтверждённым удалённым форматом — сильное совпадение по стеку (Vue2→3 миграция, TS, WebSocket), но заявленный стаж (4+ года) и ответственность тимлид-трека выше текущего уровня кандидата. |
## B) Совпадение с CV
| Требование JD | Совпадение в CV |
|---|---|
| 4+ года опыта Frontend-разработки | ❌ **Пробел.** ~1 год 8 месяцев непрерывного коммерческого опыта (с ноября 2024) + 10 месяцев заказной разработки в 2022 |
| Vue.js 2 и 3, миграция legacy → Vue 3/TS | ⚠️ Частичное — прямого опыта миграции Vue 2→3 в CV нет, но есть работа с legacy-кодом на Vue 3 (РМК, ~6 месяцев, включая сложный баг с замыканием реактивной переменной) |
| JavaScript ES6+, TypeScript | ✅ Прямое совпадение (стек ЕКОМ) |
| Vuex/Pinia | ⚠️ Pinia — прямое совпадение; Vuex явно не встречается в CV, но это смежный, изучаемый инструмент того же экосистемного слоя |
| HTML5/CSS3/SCSS | ⚠️ HTML5/CSS3 — прямое совпадение; SCSS явно не указан (Tailwind CSS используется вместо) |
| REST, WebSocket | ✅ Прямое совпадение — WebSocket (WSS) внедрён на ЕКОМ и РМК |
| Архитектура компонентов по SOLID | ⚠️ Не описано явно в CV, но Feature Branching и структурированный подход к ЕКОМ (стек с Pinia/Vue Router/shadcn) косвенно говорит о структурированной архитектуре |
| Код-ревью, тестирование (Vitest/Jest/Playwright) | ✅ Прямое совпадение — Vitest, Storybook, Playwright (E2E на РМК) |
| Менторство junior/middle, потенциальный tech lead | ✅ Частичное совпадение — обучила коллегу с 11-летним стажем работе с Git/Feature Branching; не формальное менторство, но реальный опыт передачи знаний |
| AI-инструменты (Copilot, Cursor) | ⚠️ Не упомянуто явно в CV — не фабриковать, честно отметить как пробел |
**Пробелы:**
1. **Стаж (4+ года vs ~1.7-2.5 года)** — hard blocker, явно заявлен в требованиях. Компенсация "широтой" (3 параллельных продукта, greenfield с нуля) частично закрывает этот разрыв по факту компетенций, но не по формальному стажу, который ATS/рекрутер, вероятно, отфильтрует на скрининге.
2. **Опыт миграции Vue 2→3** — явно указан как желательный бонус в JD ("Vue 2→3 migration experience" в списке Bonuses), у кандидата нет прямого опыта миграции (только работа с уже существующим legacy Vue 3). План закрытия: честно указать опыт работы с legacy Vue 3 кодом (баг с замыканием) как смежный, не эквивалентный.
3. **Тимлид-трек/менторство на постоянной основе** — JD явно упоминает "potential tech lead role" — это ответственность выше текущего уровня кандидата. План закрытия: не претендовать на тимлид-аспект роли, фокусироваться исключительно на техническом фите, если решено откликаться.
## C) Уровень и стратегия
**Уровень в JD:** Senior, 4+ года, с элементами тимлид-трека (менторство, архитектурные решения).
**Естественный уровень кандидата для архетипа Frontend (Vue.js):** Junior→Middle (переходный) — сильный технический стек, но не тимлид-масштаб ответственности.
**План "продать senior без обмана":**
- Акцент на реальном масштабе: greenfield-продукт ЕКОМ с нуля, RBAC-дизайн, параллельное ведение legacy-проекта (РМК) — это ближе к Middle+/Senior-lite по объёму ответственности, но не по годам.
- Честно обозначить разрыв в стаже (4+ года заявлено vs ~2 года) — учитывая, что требование явно численное, не пытаться завуалировать.
**План "если понизят уровень":**
- Учитывая структуру роли (тимлид-трек, менторство), понижение до Middle с явным исключением менторских обязанностей — реалистичный сценарий, если компания заинтересуется техническим стеком кандидата, но не готова доверить Senior-ответственность.
- Принять понижение **только** при компенсации на уровне таргета кандидата (100 000–120 000+ ₽/мес на руки) — учитывая, что рыночная вилка для Senior Vue в СПб выше (см. Блок D), понижение грейда не должно означать понижение ниже таргета.
- Договориться о пересмотре через 6 месяцев с чёткими критериями (например, самостоятельное закрытие миграционных задач Vue 2→3 без сопровождения).
## D) Компенсация и спрос
Зарплата не указана в JD. Рыночные данные (WebSearch, RU, июль 2026):
| Источник | Данные |
|---|---|
| Senior Vue-разработчики, Москва/СПб (2026) | Медиана: Москва — 550 000 ₽/мес, СПб — 480 000 ₽/мес; специализированная вилка Senior Vue: 480 000–650 000 ₽/мес |
| Репутация компании (Habr Career, dreamjob, elsolo) | Рейтинг 4.78/5 на Habr Career (96% рекомендаций), 4.7/5 на elsolo (42 отзыва) — стабильно позитивные отзывы о своевременности зарплаты и адекватном менеджменте |
| Негативные сигналы из отзывов | Часть отзывов упоминает "низкую зарплату относительно нагрузки" и отсутствие ДМС в первый год — качественный сигнал, не количественно подтверждённый |
| Оформление | Трудовой договор (ТК РФ) — максимальная защита, +0.3 к стабильности по правилам РФ-специфики |
**Оценка (gross/net):** Не указано в JD, невозможно применить формулу `net ≈ gross × 0.87`. Заявленная рыночная вилка Senior Vue в СПб (480 000+ ₽/мес) значительно выше таргета кандидата, но это не гарантированное предложение — компания может предложить нижнюю границу вилки при пробеле по стажу, а часть отзывов сотрудников указывает на возможную зарплату "ниже ожиданий при высокой нагрузке".
## E) План персонализации
| # | Раздел | Текущее состояние | Предлагаемое изменение | Почему |
|---|--------|--------------------|--------------------------|--------|
| 1 | Summary | Общий акцент на Vue3 + Flutter dual-track | Вести исключительно с Vue 3 + TS + WebSocket + опытом работы с legacy-кодом | Роль явно про миграцию legacy → Vue3/TS, это точка входа |
| 2 | Legacy-опыт | РМК упомянут как один из проектов | Вынести РМК (legacy Vue 3, баг с замыканием) на первое место как прямое совпадение с "migrate legacy code" | Единственный прямой аналог требования по миграции/поддержке legacy |
| 3 | Менторство | Обучение коллеги Git/Feature Branching упомянуто вскользь | Явно сформулировать как "опыт передачи технических знаний коллеге с большим стажем" | Частично закрывает требование "mentor junior/middle developers" |
| 4 | AI-инструменты | Не упомянуты в CV | Не добавлять — честно уточнить на собеседовании реальный опыт использования Copilot/Cursor, если есть, до подачи | Не фабриковать отсутствующий опыт |
| 5 | Стаж | Не скрывать | Явно указывать ~2 года суммарно с акцентом на масштаб задач, а не годы | Численный пробел не исчезнет от формулировок — честность снижает риск отказа "на обмане" позже в процессе |
## F) План собеседований
| # | Требование JD | История STAR+R | S | T | A | R | Reflection |
|---|---|---|---|---|---|---|---|
| 1 | Работа с legacy-кодом, рефакторинг | Баг с замыканием в РМК (legacy Vue 3) | Клавиатура переставала работать после серии действий | Найти причину в глобальном классе биндинга клавиш | Диагностировала: реактивная переменная передавалась в глобальный класс без очистки | Баг исправлен, задокументирован паттерн | Поняла важность жизненного цикла реактивных переменных вне компонентной области Vue |
| 2 | WebSocket, real-time функциональность | WSS-оповещения в РМК | Не было видимости, сколько аптек онлайн в реальном времени | Внедрить real-time канал оповещений с отметкой прочтения | Реализовала WebSocket-канал, отслеживание прочтения по ~1200 аптекам | Видимость статуса в реальном времени, почти без задержки | Реальная enterprise-масштаба система, релевантна для SaaS-продукта Bnovo |
| 3 | Менторство/передача знаний | Обучение коллеги с 11-летним стажем Git Flow | Хаотичные релизы, отсутствие версионирования | Внедрить Feature Branching и обучить команду | Обучила коллегу, ввела процесс, команда перешла на еженедельные релизы | Стабильный процесс релизов, меньше "зависших" фич | Обучение более опытного коллеги — редкий, но ценный сигнал для tech-lead трека |
| 4 | Тестирование (Vitest/Jest/Playwright) | Внедрение Playwright E2E на РМК | Legacy-проект без автотестов | Внедрить E2E-покрытие критичных сценариев | Настроила Playwright, начала покрытие позитивных/негативных сценариев | Процесс тестирования на этапе внедрения | Приоритизация тестового покрытия в legacy требует больше суждения, чем в greenfield |
| 5 | Архитектурные решения, RBAC/доступ | RBAC-модель в «Здесь ЕКОМ» | Бэкенд не имел готовой модели прав доступа между отделами | Спроектировать и объяснить ролевую модель авторизации | Использовала ИБ-образование, спроектировала роли/группы/права | Внедрено разграничение по отделам | ИБ-бэкграунд — конкурентное преимущество в архитектурных решениях |
| 6 | Производительность/оптимизация (тяжёлые таблицы, Web Vitals) | Список заказов с 9 фильтрами в ЕКОМ (TanStack Table) | Неудобные таблицы 1С не справлялись с объёмом и фильтрацией заказов | Спроектировать производительный интерфейс с множественной фильтрацией | Реализовала на TanStack Table с 9 параметрами фильтрации | Используется логистикой, клиентским отделом, техподдержкой и разработчиками | Опыт с тяжёлыми таблицами данных релевантен для "heavy tables" оптимизации в Bnovo |
**Рекомендуемый кейс:** РМК (legacy Vue 3 + WebSocket) — наиболее прямое совпадение с ключевым требованием JD "migrate legacy code... to Vue 3/TypeScript".
**Вопросы-ловушки:**
- «У вас заявлено 4+ года, но по резюме меньше — как так?» → Честно: «около 2 лет коммерческого опыта, но за это время вела 3 параллельных продукта, включая greenfield с нуля и работу с legacy-кодом — по объёму задач это ближе к более опытному уровню, чем формальный стаж».
- «Готовы менторить junior/middle разработчиков?» → «Есть опыт передачи знаний — обучила коллегу с 11-летним стажем работе с Git Flow. Формального менторского опыта пока меньше, готова расти в этом направлении, но не позиционирую себя как готового тимлида».
- «Какой у вас опыт с AI-инструментами (Copilot/Cursor)?» → Отвечать честно по факту использования на момент интервью — не заявлять то, чего нет в CV.
---
## Vibe команды
Судя по формулировкам JD, упоминаются код-ревью, менторство джунов/миддлов, потенциальный tech lead трек и внедрение AI-инструментов в разработку — это сигналы зрелой инженерной культуры с фокусом на рост и современный тулинг. Внешние отзывы сотрудников (Habr Career 4.78/5, elsolo 4.7/5) подтверждают позитивную атмосферу, своевременную зарплату и адекватный менеджмент, хотя часть отзывов отмечает высокую нагрузку. Бенефиты явно указывают на заботу о балансе (ДМС с психологической поддержкой, day off на день рождения, книжный клуб) — качественный сигнал гибкости и человекоцентричной культуры, хотя явных упоминаний автономии/участия в RFC в самом тексте JD нет.
## G) Posting Legitimacy
**Assessment:** High Confidence
| Сигнал | Наблюдение | Вес |
|---|---|---|
| Свежесть | Опубликовано 6 июля 2026 | Positive |
| Apply-кнопка | Активна, отклик доступен | Positive |
| Качество описания | Детальный технический стек, конкретные обязанности (миграция, тестирование, менторство), реалистичные требования для Senior | Positive |
| Компания | Bnovo — аккредитованная IT-компания, SaaS-лидер в hospitality management, >200 сотрудников, >16 000 клиентов, устойчивая репутация (Habr Career 4.78/5) | Positive |
| Company Hiring Signals | WebSearch не выявил новостей о сокращениях или заморозке найма Bnovo в 2026 | Positive/Neutral |
| Reposting | По `data/scan-history.tsv` — первое появление этого URL в истории сканирования | Neutral |
**Context Notes:** Устойчивая, прибыльная SaaS-компания с давней историей и позитивной репутацией — сильные позитивные сигналы легитимности и стабильности.
---
## Извлечённые ключевые слова
Vue.js, Vue 2, Vue 3, TypeScript, JavaScript ES6+, Vuex, Pinia, SOLID, миграция legacy, jQuery, HTML5, CSS3, SCSS, REST, WebSocket, Core Web Vitals, Event Loop, код-ревью, тестирование, Vitest, Jest, Playwright, менторство, tech lead, микрофронтенды, FSD, CI/CD, дизайн-система, SQL, LLM, ДМС, Санкт-Петербург, hospitality SaaS
---
## Рекомендация
**Балл 2.5/5 — ниже порога 4.0/5 (AGENTS.md, Ethical Use). Настоятельно рекомендуется не откликаться** в текущем виде, при этом это наиболее "близкая" из трёх оценённых сегодня вакансий по совокупности сигналов:
1. Стажевый пробел (4+ года заявлено vs ~1.7-2.5 года у кандидата) остаётся hard-блокером для формального скрининга.
2. Роль включает элементы тимлид-трека (менторство, потенциальный tech lead) — ответственность выше текущего уровня.
3. Сильные плюсы: подтверждённый удалённый формат (проходит location-политику), отличная репутация компании, реальное совпадение по WebSocket/legacy-работе/RBAC.
4. Если кандидат готова рискнуть с честной позицией по стажу — это не безнадёжная попытка (в отличие от Selecty, где два независимых mandatory-блокера), но объективно балл ниже порога для рекомендации к отклику.