Files
career-ops-vbleroy/reports/026-dev-company-23-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

153 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.
# Оценка: Dev Company 23 — Frontend разработчик Senior
**Дата:** 2026-07-07
**Архетип:** Frontend Developer (Vue.js) — primary archetype (сильное техническое совпадение, разрыв по заявленному стажу)
**Балл:** 2.4/5
**URL:** https://hh.ru/vacancy/134920082
**Legitimacy:** Proceed with Caution
**PDF:** не сгенерирован (балл < 3.0, порог для авто-PDF)
---
## A) Резюме роли
| Поле | Значение |
|------|----------|
| Архетип | Frontend Developer (Vue.js) — primary; стек — точное попадание в архетип кандидата |
| Domain | Frontend (SPA-приложения на Vue 3, бизнес-логика на TypeScript) |
| Function | Build + частично Mentor (код-ревью, менторство junior-разработчиков) |
| Seniority | **Senior**: заявлено 4+ года опыта с Vue.js и 6+ лет общего фронтенд-опыта |
| Формат работы | Полностью удалённо, из любой точки; график 5/2, 8-часовой рабочий день |
| Размер команды | Не указано явно |
| Оформление | Трудовой договор ИЛИ договор ГПХ (кандидату предлагается выбор — обычно означает вариативность в зависимости от статуса кандидата: самозанятый/ИП/физлицо) |
| Локация | Москва (юридически), но роль полностью удалённая — конфликта с политикой кандидата «Тула, без переезда» нет |
| TL;DR | Технически один из самых точных Vue 3/TS/Pinia матчей среди всех рассмотренных вакансий, с отличной компенсацией (от 270 тыс. ₽/мес до вычета налогов) и полностью удалённым форматом — но заявленный стаж (4-6 лет) более чем вдвое превышает фактический опыт кандидата (~1.7 года), что создаёт реальный риск отсева на этапе скрининга. |
**Vibe команды** (качественный сигнал, не входит в числовую оценку): Судя по формулировке JD — «команда, которая ценит экспертизу, инициативу и желание делать крутые продукты» — явный акцент на инициативе и экспертизе, что можно трактовать как сигнал ценности автономии разработчиков. Роль явно предполагает участие в архитектурных решениях («участие в принятии архитектурных решений фронтенда») — прямое упоминание права голоса в тексте. Упоминание code review и менторства junior-разработчиков — сигнал в пользу культуры код-ревью. Прямых упоминаний гибкого графика сверх «5/2, 8 часов» нет, хотя формат полностью удалённый «из любой точки» сам по себе высокая степень гибкости.
---
## B) Совпадение с CV
| Требование JD | Совпадение с cv.md |
|---|---|
| Vue 3 (Composition API) | Прямое совпадение: «Здесь ЕКОМ» — фронтенд с нуля на Vue 3, Composition API |
| TypeScript, сложная бизнес-логика | Прямое совпадение: ЕКОМ — TS в продакшене, сложная логика фильтрации заказов по 9 параметрам |
| Pinia (state management) | Прямое совпадение: Pinia указана в стеке ЕКОМ |
| Оптимизация производительности | Частичное совпадение: постраничная загрузка в «Избранное» («Здесь Аптека») как пример оптимизации, но не на уровне SPA-архитектуры целиком |
| Участие в архитектурных решениях фронтенда | Совпадение: спроектировала RBAC-модель авторизации в ЕКОМ, самостоятельно, с презентацией бэкенд-команде |
| Код-ревью, менторство junior | Частичное совпадение: обучила коллегу с 11-летним стажем работе с Git/Feature Branching — менторский опыт есть, но не формализованное код-ревью на постоянной основе |
| JavaScript, HTML5, UX/HTML | Прямое совпадение (раздел «Навыки») |
| Nuxt | **Пробел** — Nuxt указан в cv.md только в разделе «Быстро осваиваю», нет продакшн-опыта |
| **4+ года опыта с Vue.js, 6+ лет общий фронтенд-опыт** | **Существенный пробел.** У кандидата ~1 год работы с Vue 3 (ЕКОМ) + ~6 месяцев (РМК) = менее 1.7 лет коммерческого опыта в целом, из них с Vue — даже меньше формально заявленного порога |
### Пробелы
1. **Стаж (4-6 лет vs ~1.7 года)** — hard blocker для формального ATS/HR-фильтра, хотя не невозможный для прохождения при сильном техническом собеседовании.
- Может ли кандидат продемонстрировать смежный опыт? Да — greenfield-разработка ЕКОМ с нуля, самостоятельное архитектурное решение (RBAC), одновременное ведение 3 продуктов — это глубина ответственности, которая частично компенсирует нехватку календарного стажа.
- Портфолио-проект, закрывающий пробел? Нет отдельного демо.
- Конкретный план: в сопроводительном письме явно предложить проверку через тестовое задание/техническое интервью вместо формального отсева по годам — «не соответствую по формальному стажу, но стек и глубина ответственности за ЕКОМ (greenfield с нуля) могут быть интересны для технической оценки».
2. **Nuxt** — nice-to-have (упомянут в списке требуемых навыков, но не выделен как обязательный). Стратегия: честно отметить «есть Nuxt в списке инструментов для быстрого освоения, готова закрыть за короткий срок при необходимости» — не заявлять продакшн-опыт, которого нет.
---
## C) Уровень и стратегия
**Уровень в JD:** Senior, формальный порог 4-6 лет опыта.
**Естественный уровень кандидата для архетипа Frontend (Vue.js):** Junior→Middle (переходный).
**План «продать senior без обмана»:**
- Вести с масштабом ответственности, а не с годами: «спроектировала и реализовала с нуля фронтенд системы управления заказами и логистикой для сети ~1200 аптек, включая архитектурное решение по авторизации (RBAC)».
- RBAC как дифференциатор — редкая для грейда/стажа инициатива, прямое попадание в требование «участие в архитектурных решениях».
- Честно обозначить фактический стаж (~1.7 года) без попытки скрыть или размыть цифру — контраст между малым стажем и объёмом ответственности работает в пользу кандидата только при честной подаче.
**План «если понизят уровень»:**
- Принять понижение до Middle **только** при сохранении компенсации в диапазоне ≥ таргета кандидата (100 000+ ₽/мес на руки) — учитывая, что даже нижняя граница этой вакансии (270 тыс. ₽ до вычета ≈ 235 тыс. ₽ на руки после НДФЛ) существенно выше таргета, есть большой запас для переговоров даже при понижении грейда.
- Договориться о пересмотре через 6 месяцев с конкретными критериями (закрытие архитектурных задач без сопровождения сеньора, полноценное код-ревью на постоянной основе).
---
## D) Компенсация и спрос
**Зарплата в вакансии:** от 270 000 ₽/мес, **до вычета налогов (gross)**, верхняя граница не указана.
**Пересчёт в net:** `net ≈ gross × 0.87` → от **≈234 900 ₽/мес на руки** (нижняя граница; верхняя неизвестна).
**Рыночные данные (WebSearch, RU market, июль 2026):**
| Источник | Данные |
|---|---|
| Senior Frontend, Москва (медиана, hh.ru, февраль 2026) | 287 500 ₽/мес |
| Senior Vue Developer (широкий диапазон) | 480 000–650 000 ₽/мес для сильных специалистов |
| Vue vs React | Vue-разработчики в среднем получают на 8-12% меньше React-специалистов того же грейда |
**Оценка:** Нижняя граница вилки (270 тыс. gross ≈ 235 тыс. net) заметно **выше** таргета кандидата (100 000–120 000+ ₽/мес на руки) и близка к рыночной медиане для формального Senior. Даже если реальный оффер окажется на нижней границе вилки из-за несоответствия по годам стажа, компенсация всё равно останется существенно выше целевого диапазона кандидата.
**Вывод:** Компенсация одна из сильнейших сторон этой вакансии — единственный вопрос в том, пройдёт ли кандидат формальный отсев по годам стажа до того, как компания увидит реальную глубину опыта.
---
## E) План персонализации
| # | Раздел | Текущее состояние | Предлагаемое изменение | Почему |
|---|--------|--------------------|--------------------------|--------|
| 1 | Summary (PDF) | Общий акцент на Vue3 + Flutter dual-track | Для ЭТОЙ вакансии — вести исключительно с Vue 3 + Composition API + TS + Pinia, убрать Flutter | Роль чисто Frontend Vue Senior, Flutter не релевантен и отвлекает от сильного технического совпадения |
| 2 | Опыт — заголовок роли | «Frontend/Flutter-разработчик» | Показать как «Frontend-разработчик (Vue 3 / TypeScript)» | Прямое совпадение с точным заголовком роли повышает ATS keyword-match |
| 3 | Проектные буллеты | RBAC упомянут как один из пунктов | Вынести архитектурное решение (RBAC) на первую строку под ЕКОМ — прямое попадание в требование «участие в архитектурных решениях» | Компенсирует формальный пробел по стажу через демонстрацию реальной архитектурной ответственности |
| 4 | Ключевые слова | Vue 3, TS, Pinia уже есть | Явно добавить «Composition API», «код-ревью», «менторство» (обучение коллеги с 11-летним стажем — честный пример менторства) | Прямое совпадение с формулировками JD («код-ревью и менторство junior») |
| 5 | Сопроводительное письмо | — | Явно и честно указать разрыв по годам стажа и предложить решение через техническое собеседование/тестовое задание | Честность повышает доверие рекрутера при формальном несоответствии критериям |
---
## F) План собеседований
| # | Требование JD | История STAR+R | S | T | A | R | Reflection |
|---|---|---|---|---|---|---|---|
| 1 | Участие в архитектурных решениях фронтенда | RBAC-модель в ЕКОМ | Не было модели разграничения прав между отделами (логистика/заказы) | Спроектировать и объяснить бэкенду ролевую модель авторизации | Использовала ИБ-образование, спроектировала роли/группы/права, презентовала бэкенд-команде | Внедрено разграничение по отделам, объяснено и принято командой | Архитектурная ответственность не всегда пропорциональна годам стажа — важно уметь показать это прямо, не извиняясь за малый стаж |
| 2 | Сложная бизнес-логика на TypeScript | Список заказов с фильтрацией по 9 параметрам | Неудобные таблицы 1С не позволяли эффективно отслеживать проблемные заказы | Спроектировать и реализовать интерфейс с множественной фильтрацией на TS | Реализовала фильтрацию по 9 параметрам, заменив legacy-инструмент | Используется логистикой, клиентским отделом, техподдержкой и разработчиками | Сложность бизнес-логики измеряется не только объёмом кода, но и числом заинтересованных отделов, которые полагаются на результат |
| 3 | Код-ревью / менторство junior | Обучение коллеги системе версионирования | Коллега с 11-летним стажем не работал с Feature Branching, хаотичные релизы | Обучить и внедрить процесс версионирования | Обучила коллегу, внедрила Git Flow в GitLab | Команда перешла на стабильные еженедельные релизы | Менторство «наоборот» (обучение более опытного коллеги новому инструменту) — сильный сигнал уверенности в экспертизе, несмотря на меньший общий стаж |
| 4 | Оптимизация производительности | Диагностика и фикс бага «Избранное» | Раздел не открывался — все товары грузились одним запросом | Найти причину и реализовать постраничную загрузку | Диагностировала проблему самостоятельно, реализовала pagination | Жалобы пользователей прекратились | Оптимизация производительности начинается с точной диагностики, а не только с готовых паттернов |
| 5 | Работа с state management (Pinia) | График курьеров на базе vue-cal | Расписание вносилось вручную SQL-запросами разработчиков по заявке логистики | Спроектировать интерфейс drag-and-drop с использованием Pinia для состояния | Реализовала календарь на vue-cal с управлением состоянием через Pinia | Логистика полностью самостоятельно управляет графиком без участия разработчиков | Grand-scale автономизация процесса — показатель того, что решение снимает нагрузку с целой команды, а не только с одного пользователя |
**Рекомендуемый кейс:** «Здесь ЕКОМ» целиком — greenfield-продукт, максимально близкий по масштабу и характеру задач (Vue 3 SPA, сложная бизнес-логика, архитектурные решения) к описанной в JD роли.
**Вопросы-ловушки:**
- «Мы ищем 4-6 лет опыта, у вас меньше 2 — почему претендуете на Senior?» → честно: «Формально меньше — 1.7 года, но за это время самостоятельно довела greenfield-продукт до продакшена, включая архитектурное решение (RBAC), которое обычно не доверяют разработчику с таким стажем. Готова подтвердить это на техническом собеседовании».
- «Есть опыт с Nuxt?» → честно: «Продакшн-опыта нет, но Nuxt в списке инструментов, которые быстро осваиваю; Vue 3 + Composition API — основной стек последний год».
- «Почему готовы работать по ГПХ, если это возможно?» → уточнить у рекрутера условия и разницу в защите (ГПХ vs трудовой договор) до согласия, не соглашаться вслепую.
---
## G) Проверка легитимности вакансии (Posting Legitimacy)
**Assessment: Proceed with Caution**
| Сигнал | Наблюдение | Вес |
|---|---|---|
| Свежесть публикации | Опубликована 2026-07-07 (сегодня), кнопка отклика активна («Apply button active» по данным WebFetch) | Positive |
| Качество описания | Конкретный стек (Vue 3 Composition API, TypeScript, Pinia, Nuxt), конкретные обязанности (архитектурные решения, код-ревью, менторство), явно описан формат работы и график — не шаблонный/размытый текст | Positive |
| Внутренние противоречия | Требование 4+ года Vue.js специфично — Vue 3 с Composition API как мейнстрим-стек существует не так давно (Vue 3 стабильный релиз — 2020), поэтому формальные «4+ года именно с Vue» физически предполагают опыт ещё с Vue 2/переходного периода — не противоречие, но стоит уточнить, что именно засчитывается | Neutral |
| Company Hiring Signals | Название «Dev Company 23» — WebSearch дал только частичное совпадение с другой компанией («Компания 23 программиста», Бердск/Новосибирск) — **связь не подтверждена**, это может быть просто похожее название без отношения к текущей вакансии. Прямых новостей о сокращениях/заморозке найма не найдено | Neutral (недостаточно данных для уверенного вывода) |
| Reposting Detection | По `data/scan-history.tsv` — первое появление этой вакансии/URL в истории сканирования | Neutral |
| Role Market Context | Полностью удалённая Senior Frontend Vue-роль с конкурентной компенсацией — распространённый и обычно заполняемый тип вакансии (4-8 недель), не вызывает подозрений | Neutral/Positive |
**Context Notes:** Общее впечатление о вакансии положительное с точки зрения качества текста и активности отклика — риск здесь не в «вакансии-призраке», а в формальном несоответствии заявленному стажу. Название компании не удалось однозначно идентифицировать во внешних источниках (возможно, малоизвестная или недавно зарегистрированная компания) — рекомендуется уточнить юридическое название работодателя до отклика.
---
## Извлечённые ключевые слова
Vue 3, Composition API, TypeScript, Pinia, Nuxt, JavaScript, HTML5, UX/HTML, SPA, архитектурные решения фронтенда, код-ревью, менторство, оптимизация производительности, удалённая работа, ГПХ, трудовой договор, Senior Frontend
---
## Итоговая рекомендация
**Балл 2.4/5 — ниже порога 4.0/5 (AGENTS.md, Ethical Use).** Рекомендуется **не откликаться в текущем виде без явного уточнения условий отбора**, по совокупности причин:
1. Разрыв по стажу (4-6 лет заявлено vs ~1.7 года у кандидата) — реальный риск отсева на этапе ATS/HR-скрининга, несмотря на очень сильное техническое совпадение стека (Vue 3 + Composition API + TS + Pinia — почти идеальный матч).
2. Компенсация отличная (от 270 тыс. ₽ до вычета, ≈235 тыс. ₽+ на руки) — существенно выше таргета кандидата, что делает вакансию привлекательной, если разрыв по стажу удастся преодолеть на этапе собеседования.
3. Компания не идентифицирована однозначно во внешних источниках — рекомендуется уточнить юридическое название и репутацию до вложения времени в подготовку.
**Если кандидат всё же хочет откликнуться:** делать это с максимально честной и прямой подачей разрыва по стажу, предлагая техническое собеседование или тестовое задание как способ компенсировать формальное несоответствие критериям — при полностью удалённом формате риск для кандидата минимален (нет конфликта с локационной политикой).