Files
career-ops-vbleroy/reports/004-ozon-2026-07-06.md
T
redlineo 9fdd27bb11
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 20s
Release Please / release-please (push) Failing after 20s
CodeQL Analysis / Analyze (go) (push) Failing after 30s
add vk, add AI, add pet project, add new vacancies
2026-07-14 11:40:07 +03:00

153 lines
27 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.
# Оценка: Ozon — Frontend-разработчик (ERP и учётные системы)
**Дата:** 2026-07-06
**URL:** https://ozon.tech/vacancies/cd28fe61-26c7-4a28-9d26-aafcde3fc189-frontend-razrabotchik-razrabotka-pol-zovatel-skikh-interfeisov/
**Архетип:** Frontend Developer (Vue.js) — primary
**Балл:** 4.2/5
**Legitimacy:** Высокая уверенность
**PDF:** output/cv-romanova-valeriya-ozon-erp-2026-07-06.pdf
---
## A) Резюме роли
| Параметр | Значение |
|---|---|
| Архетип | Frontend Developer (Vue.js) — прямое совпадение с primary-архетипом кандидата |
| Domain | Enterprise / ERP и учётные системы (ЭДО, работа с контрагентами, зарплатные расчёты складов) |
| Function | Build — разработка интерфейсов + прототипирование UX + участие в проектировании API |
| Seniority | Middle (заявлено в JD) |
| Формат работы | Офис / удалённая работа / гибрид — Москва, СПб, Иннополис, Новосибирск, Алматы, Астана. **Удалёнка указана явно** → не попадает под жёсткое ограничение по локации |
| Размер команды | Не указан (команда «ERP и учётные системы») |
| Оформление | Не указано в JD — предположительно ТК РФ (стандарт для Ozon), требует уточнения на собеседовании |
| TL;DR | Крепкая Middle-позиция на Vue 3/TS в высоконагруженной команде ERP Ozon (200K RPS чтение, 8K RPS запись) с удалённым форматом работы — сильное совпадение по стеку; главный риск — формальный порог «3+ года JS» при фактическом опыте кандидата около 2 лет. |
## B) Совпадение с CV
| Требование JD | Совпадение с CV |
|---|---|
| Опыт разработки на JavaScript от 3-х лет | Нояб. 2024 — наст. время (Здравсервис, Frontend/Flutter, ~1.5 года) + март–дек. 2022 (ТулГУ, заказная разработка на Vue.js, 10 мес.) = совокупно ~2 года практики. **Пробел** (см. ниже) |
| Экспертное знание JavaScript/TypeScript/HTML/CSS/Git | «Vue 3, Composition API, TypeScript, Pinia... Vite, ESLint, Prettier... Git, GitLab» (Навыки, cv.md) |
| Опыт разработки на Vue (NuxtJS) 2/3 | «Vue 3, Composition API, Vue Router, Pinia, Vue 2 (базово)» — коммерческий опыт на Vue 3 в проекте «Здесь ЕКОМ» (разработан с нуля). Nuxt не использовался коммерчески — **пробел** |
| Понимание принципов UX | «UI/UX: самостоятельное проектирование интерфейсов и редизайн ... в компании без штатного дизайнера» — редизайн кнопки «Избранное», редизайн блока информации о заказе |
| Клиент-серверная архитектура, опыт работы с API | «REST API, WebSocket/WSS»; «Внедрила WebSocket для оповещений в реальном времени» (РМК); проектирование RBAC во взаимодействии с бэкенд-командой (ЕКОМ) |
| Умение писать простой, структурированный, читаемый код | Feature Branching (Git Flow) внедрён в команде; Vitest unit-тесты, Storybook |
| Понимание классических алгоритмов и структур данных | Не отражено явно в CV — **пробел** |
| Опыт работы в команде | «менторство, кросс-командное взаимодействие (логистика, бэкенд, техподдержка, отдел работы с клиентами)»; обучила коллегу с 11-летним стажем работе с Git |
| Плюс: Figma | Не указано в CV — **пробел** (частично закрывается опытом самостоятельного UI/UX-редизайна) |
| Плюс: GitLab, Docker, Nginx, WebSockets | GitLab — да; Docker — в разделе «Быстро осваиваю» (не коммерческий опыт); WebSockets — да, коммерческий опыт (РМК) |
| Плюс: оптимизация Performance | Явно не отражена, но косвенно — оптимизация загрузки «Избранное» (постраничная загрузка вместо одного тяжёлого запроса) |
| Плюс: тесты (CodeceptJS/Playwright/Jest) | Playwright E2E внедрён на РМК; Vitest — юнит-тесты компонентов Vue |
**Пробелы и стратегия закрытия:**
1. **«3+ года JS»** — мягкий блокер (количественный, но не жёсткий фильтр уровня Middle в целом). Стратегия: не спорить с цифрой напрямую, а показать плотность и объём ownership — три продукта одновременно (веб с нуля, legacy-проект, мобильное приложение), проектирование RBAC, менторство разработчика с 11-летним стажем. Это поведение уровня выше формального стажа.
2. **Nuxt** — nice-to-have. Кандидат владеет Vue 3 core на продакшн-уровне и указывает Nuxt в «быстро осваиваю» — честно сказать: коммерческого опыта с Nuxt нет, но архитектурные принципы (SSR, роутинг, конвенции) осваиваются быстро при глубоком знании Vue 3.
3. **Алгоритмы и структуры данных** — риск на техническом интервью, а не блокер резюме. Стратегия: точечная подготовка к типовым задачам перед этапом.
4. **Figma** — nice-to-have. Закрывается через рассказ о самостоятельном UI/UX-проектировании (кнопка «Избранное», компоновка блока заказа, app-иконки) — дизайнерский вкус без инструмента Figma специально не терялся.
5. **Performance optimization** — nice-to-have. Использовать кейс с постраничной загрузкой «Избранное» как пример реальной оптимизации отклика интерфейса.
## C) Уровень и стратегия
1. **Уровень в JD:** Middle. **Естественный уровень кандидата для этого архетипа:** переходный Junior+/Middle — по формальному стажу (~2 года) ближе к Junior+, но по объёму ответственности (продукт с нуля, RBAC-дизайн, менторство сеньора) — на уровне Middle.
2. **План «продать Middle без обмана»:** делать акцент не на годах, а на фразах ownership — «разработала фронтенд ЕКОМ с нуля», «спроектировала и объяснила бэкенд-команде ролевую модель авторизации», «обучила коллегу с 11-летним стажем работе с системой версионирования — команда перешла на стабильные еженедельные релизы». Эти формулировки продают уровень ответственности, а не мнимый стаж.
3. **План «если понизят уровень»:** если предложат Junior+ по деньгам — принять только при условии пересмотра через 3-6 месяцев с чёткими критериями роста (закрытие пробелов по Nuxt/Docker/perf), зафиксированными письменно.
## D) Компенсация и спрос
| Источник | Данные |
|---|---|
| Рыночная вилка Middle Vue-разработчик, Москва | 180 000 – 380 000 ₽ gross (общий разброс по нескольким источникам); TypeScript добавляет +12-18% к зарплате, тестирование/CI/CD/Docker — ещё +15-22% к медиане |
| Ozon Tech — уровень оплаты | Компания оценивается как конкурентная по рынку; для Senior база от 550 000 ₽, суммарный доход с бонусами может превышать 12 млн ₽/год — сигнал, что Middle-вилка внутри Ozon также выше медианы рынка |
| Отзывы сотрудников (Хабр Карьера, Dream Job) | В основном положительные: интересные задачи, отсутствие микроменеджмента, высоконагруженные системы, гибрид/полная удалёнка сохраняются для большинства ИТ-команд. Есть критика: «хорошее место для старта карьеры, но сложно развиваться дальше» |
| Бенефиты (из JD) | ДМС со стоматологией + льготная страховка для близких, страхование от несчастных случаев, полис для выезжающих за рубеж, психолог, корпоративные курсы (Ozon Универ), спортивные клубы, льготная жилищная программа, оплата участия в конференциях |
**Gross vs Net:** в JD зарплата не указана явно. Если ориентироваться на рыночную вилку Middle Vue в Москве (180 000–380 000 ₽ gross), net ≈ gross × 0.87 → **~157 000–330 000 ₽ на руки** — существенно выше минимума кандидата (100 000 ₽ на руки) и выше цели (100 000–120 000+ ₽). Комп-дименсия оценивается высоко.
**Оформление:** не указано в JD, требует уточнения на собеседовании (ожидание — ТК РФ, стандарт для крупных ИТ-компаний вроде Ozon).
## E) План персонализации
| # | Раздел | Текущее состояние | Предлагаемое изменение | Почему |
|---|---|---|---|---|
| 1 | Summary | Общее описание Vue3+Flutter опыта | Добавить акцент на «клиент-серверная архитектура», «API design», «структурированный код» — точные формулировки JD | ATS-совпадение + человеческое чтение за 6 секунд |
| 2 | Компетенции | Общий список навыков | Вынести в грид: TypeScript, Vue 3 (Composition API), REST API, WebSocket, RBAC/авторизация, Git/GitLab, Vitest/Playwright, UI/UX-редизайн | Прямое зеркалирование JD-требований |
| 3 | Опыт — ЕКОМ | Стандартный порядок буллетов | Поднять наверх RBAC-дизайн и работу с API/бэкендом (это прямое совпадение с «участвовать в проектировании API») | Самый сильный релевантный proof point первым |
| 4 | Опыт — РМК | Буллеты в исходном порядке | Поднять наверх внедрение Playwright E2E и код-ревью/рефакторинг (закрытие бага с замыканием) | Совпадает с «поддержка и развитие существующей кодовой базы» |
| 5 | Skills | Nuxt/Docker в общем списке | Явно пометить как «быстро осваиваю» рядом с Vue 3/TS, а не прятать | Честность + видимость готовности закрыть Nuxt-пробел |
**Топ 5 изменений hh.ru/LinkedIn:** заголовок профиля → «Frontend-разработчик Vue 3 / TypeScript»; добавить ключевые слова «клиент-серверная архитектура», «API», «WebSocket», «код-ревью»; в шапке резюме упомянуть готовность к удалёнке и офису в Москве (без переезда); указать желаемую зарплату в диапазоне 150 000–200 000 ₽ на руки, чтобы не занижать себя относительно рынка; добавить раздел «Проекты» с ЕКОМ как flagship-кейсом.
## F) План собеседований
| # | Требование JD | История STAR+R | S | T | A | R | Reflection |
|---|---|---|---|---|---|---|---|
| 1 | Проектирование API, взаимодействие с бэкендом | RBAC для ЕКОМ | В ЕКОМ не было разграничения доступа между отделами | Спроектировать ролевую модель авторизации | Использовала профильное ИБ-образование, самостоятельно спроектировала модель ролей, объяснила бэкенд-разработчику принцип и отличие от других моделей доступа | Логистика и заказы теперь корректно разграничены между отделами | Поняла, что образование в ИБ даёт редкое для frontend-разработчика преимущество в разговоре с бэкендом на одном языке |
| 2 | Поддержка/развитие legacy кодовой базы, код-ревью | Баг с замыканием на РМК | Реактивная переменная передавалась в глобальный класс работы с клавиатурой, старые переменные не очищались | Найти причину зависания клавиатуры | Отследила цепочку передачи реактивной переменной в глобальный класс, локализовала утечку | Клавиатура перестала «залипать», баг закрыт | В следующий раз буду сразу проверять жизненный цикл реактивных переменных при передаче в нереактивные классы |
| 3 | Разработка инструментов для внутренних пользователей | Список заказов с 9 фильтрами | Логисты и техподдержка пользовались неудобными таблицами 1С | Заменить их удобным интерфейсом с фильтрацией | Спроектировала и реализовала интерфейс с фильтрацией по 9 параметрам | Интерфейсом пользуются логисты, клиентский отдел, техподдержка и разработчики | Осознала ценность UX-исследования: разные роли фильтруют по разным параметрам, это надо было учесть с самого начала |
| 4 | Понимание UX | Редизайн кнопки «Избранное» и блока информации о заказе | Нет дизайнера в компании, элементы неудобны | Сделать интерфейс компактнее и удобнее для нажатия | Самостоятельно спроектировала и внедрила изменения | Кнопка стала крупнее и удобнее, блок информации — компактнее | Поняла, что UX-решения нужно тестировать на реальных пользователях до релиза, а не полагаться только на интуицию |
| 5 | Тестируемый код (Playwright/Jest) | Внедрение Playwright E2E на РМК | Отсутствие автотестов на legacy-проекте | Внедрить E2E-покрытие | Настроила Playwright, начала покрывать критичные сценарии (позитивные и негативные) | Проект на этапе внедрения устойчивого E2E-покрытия | В следующий раз буду внедрять тесты параллельно с фичами, а не догонять legacy |
| 6 | Работа в команде | Обучение коллеги с 11-летним стажем Git Flow | Команда не использовала Feature Branching, релизы были нестабильными | Обучить процессу версионирования | Внедрила Feature Branching в GitLab, лично обучила коллегу | Команда перешла на стабильные еженедельные релизы, сократилось число «зависших» фич | Менторство сработало лучше через практику на реальных задачах, а не через документацию |
| 7 | Клиент-серверная архитектура, WebSocket | Real-time оповещения на РМК | Не было видимости, сколько аптек онлайн | Внедрить оповещения в реальном времени | Реализовала WebSocket-канал с индикацией прочтения | Видно ~1200 аптек онлайн, около половины читают оповещение в первые минуты | В следующий раз добавлю метрики задержки доставки с самого начала, а не постфактум |
**Рекомендуемый кейс для показа:** график курьеров на vue-cal (drag-and-drop) — законченный продуктовый кейс «от ручного SQL до самостоятельного управления отделом логистики», хорошо иллюстрирует ownership уровня Middle.
**Вопросы-ловушки:**
- *«У вас всего около 2 лет опыта, а мы ищем 3+»* → Честно: «Коммерческого опыта — около полутора лет, плюс проектная разработка на Vue во время учёбы. За это время я вела 3 продукта параллельно и спроектировала RBAC самостоятельно — предлагаю оценить по объёму ответственности, а не только по годам».
- *«Работали ли вы с нагрузкой уровня 200K RPS?»* → Честно: «Нет, наибольший масштаб — ~1200 аптек в реальном времени через WebSocket. Готова обсудить, как переносятся принципы масштабирования, и быстро учусь».
## G) Легитимность вакансии
**Сигналы свежести:** Дата публикации не показана явно, но контрол отклика активен («Откликнуться» доступна) — вакансия принимает отклики.
**Качество описания:** Высокое. Указаны конкретные метрики нагрузки (200K RPS на чтение, 8K RPS на запись), названа конкретная команда (ERP и учётные системы, ЭДО), перечислен конкретный стек (TypeScript, Vue/Nuxt 2/3), уровень указан явно (Middle), требования реалистичны и разграничены на «важно» и «плюсом». Раздел про бенефиты подробный и специфичный для Ozon (Ozon Универ, Route 256, льготная жилищная программа) — не generic-шаблон. Соотношение конкретики к воде — высокое.
**Компания:** Ozon Tech — крупный, хорошо известный работодатель, дополнительный WebSearch по репутации найма не потребовался (нет тревожных сигналов ни в JD, ни в общих отзывах, найденных при исследовании компенсации).
**Вывод: Высокая уверенность.**
---
## Извлечённые ключевые слова
TypeScript, Vue 3, Nuxt.js, JavaScript, HTML5/CSS3, Git, UX, API, клиент-серверная архитектура, структурированный код, алгоритмы и структуры данных, Figma, GitLab, Docker, WebSockets, оптимизация Performance, Playwright, Jest, CodeceptJS, код-ревью, рефакторинг, ERP, электронный документооборот, прототипирование
---
## Cover Letter Draft
> Draft generated at evaluation time. Complete via `/career-ops cover ozon-erp` 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)*
Команда ERP и учётные системы Ozon Tech обрабатывает миллионы документов ЭДО и расчёты зарплат для складов в реальном времени — задача такого масштаба на Vue 3/TypeScript напрямую пересекается с моим опытом построения внутренних систем с нуля.
**Profile introduction**
Frontend-разработчик с коммерческим опытом на Vue 3 (Composition API, TypeScript, Pinia) и Flutter. С ноября 2024 года разработала с нуля фронтенд внутренней системы управления заказами и логистикой (ЕКОМ) для аптечной сети из ~1200 точек, а также подключилась к legacy-проекту кассы (РМК). Профильное образование в информационной безопасности дало нестандартный для frontend-разработчика опыт — самостоятельно спроектировала и объяснила бэкенд-команде ролевую модель авторизации (RBAC).
**Key achievements** *(selected from cv.md — exact wording preserved)*
- **Спроектировала ролевую модель авторизации (RBAC)** с разграничением между отделами (например, логистика не видит заказы, и наоборот) — объясняла бэкенд-разработчику принцип работы и отличие от других моделей доступа.
- **Интерфейс списка заказов с фильтрацией по 9 параметрам** для отслеживания проблемных заказов — заменил неудобные таблицы 1С; используется логистами, отделом работы с клиентами, техподдержкой и разработчиками.
- **Внедрила WebSocket для оповещений в реальном времени** — впервые в компании видно, сколько аптек онлайн прямо сейчас, интерфейс показывает, кто и когда прочитал оповещение.
- **Внедрила Feature Branching в Git (GitLab), обучила коллегу с 11-летним стажем** работе с системой версионирования — команда перешла на стабильные еженедельные релизы.
**Problems I will solve** *(placeholder — requires company research + your input)*
> To be completed: какие конкретные проблемы команды ERP и учётные системы вы бы решали в первую очередь (масштабирование ЭДО, оптимизация UX внутренних инструментов и т.д.)?
**Closing**
Буду рада обсудить вакансию. На связи в будни (13:00-14:00, после 18:00) и в выходные — предлагаю сначала согласовать удобное время созвона в Telegram (@vbleroy) или VK (vk.com/vbleroy).
---
**Gaps flagged:**
- Формальный порог «3+ года JS» — фактический стаж кандидата около 2 лет (закрывается объёмом ответственности, не годами).
- Nuxt.js — нет коммерческого опыта (только Vue 3 core).
**JD keywords to mirror** *(extracted for ATS + human read)*
TypeScript, Vue 3, Nuxt, клиент-серверная архитектура, API, структурированный код, WebSocket, код-ревью, рефакторинг, UX, ERP, электронный документооборот
---
*Run `/career-ops cover ozon-erp` to complete angles, confirm company research, and generate the PDF.*