Files
career-ops-vbleroy/reports/045-alidi-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

122 lines
24 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.
# Оценка: АЛИДИ, Группа компаний — Flutter Developer (Android/iOS/Web)
**Дата:** 2026-07-07
**Архетип:** Mobile Developer (Flutter) — второстепенный целевой архетип
**Балл:** 3.4/5
**URL:** https://t.me/s/runello_rus_mobileappdevelopment/3185
**PDF:** ✅ сгенерирован (балл 3.4/5 >= порога 3.0)
**Legitimacy:** Proceed with Caution
---
## A) Резюме роли
| Параметр | Значение |
|---|---|
| Архетип | Mobile Developer (Flutter), с расширением на Flutter Web |
| Domain | дистрибуция/логистика (АЛИДИ — дистрибьютор Procter & Gamble, Nestle, Wrigley и др., 61 регион РФ/Беларуси/Казахстана, ~9000 сотрудников) |
| Function | build (новые продукты на Flutter + поддержка единой кодовой базы Android/iOS/Web) |
| Seniority | 2+ года коммерческой разработки, включая Flutter Web |
| Формат работы | "Удалённо или гибрид"; офис в пос. Ждановский, Нижний Новгород — гибрид требует присутствия в НН, но удалённый вариант заявлен явно как альтернатива |
| Размер команды | Не указан |
| Оформление | "Официальное трудоустройство" (упомянуто в источнике вакансии) |
| TL;DR | Flutter-роль в крупном стабильном дистрибьюторе (не IT-продуктовая компания) с явно заявленным удалённым форматом — хорошее совпадение по core-стеку Flutter/Dart, но JD требует опыт именно Flutter Web, которого нет в CV, и общий стаж 2+ года specifically во Flutter, тогда как у кандидата Flutter — один из трёх параллельных треков, а не основной непрерывный фокус |
## B) Совпадение с CV
| Требование JD | Совпадение в CV |
|---|---|
| Уверенное знание Flutter и Dart | ✅ Flutter, Dart — прямое совпадение, продакшн-опыт на «Здесь Аптека» (Android/iOS) |
| Опыт коммерческой разработки от 2 лет | ⚠️ С ноября 2024 (около 20 месяцев к моменту оценки) — близко к порогу, но это общий срок работы в компании на трёх продуктах одновременно (Flutter + 2 Vue-проекта), не 2 непрерывных года исключительно во Flutter |
| Опыт разработки Flutter Web | ❌ Не отражено в CV — весь Flutter-опыт кандидата это Android/iOS (порты, баг-фиксы, редизайн), без Flutter Web |
| Понимание lifecycle, Widget/Element/Render Trees, rebuild-механизм | ⚠️ Не задокументировано явно в CV на уровне терминологии, но практическая работа с багами (замыкание реактивной переменной, диагностика «Избранное») демонстрирует глубокое понимание жизненного цикла на уровне приложения |
| StatefulWidget/StatelessWidget | ✅ Подразумевается опытом Flutter-разработки, хотя не названо явно в CV построчно |
| Адаптивный UI | ✅ Редизайн кнопки «Избранное», компоновка блока информации о заказе — прямое подтверждение UI/UX-работы |
| Git, CI/CD | ✅ Git, GitLab, Feature Branching, CI/CD (рабочий опыт) — прямое совпадение |
| Jira/таск-трекер | ⚠️ Не указано явно в CV, но участие в спринт-планировании подразумевает работу с таск-трекером |
| Unit/widget/integration тестирование | ⚠️ Есть тестирование (Vitest, Playwright), но контекст — Vue-проекты, не Flutter-тестирование напрямую |
| Firebase | ✅ Firebase Cloud Messaging (push-уведомления) — прямое совпадение, включая перепривязку токенов между Android/iOS |
| Портирование Android → iOS / архитектура приложения | ✅ Прямое совпадение — портировала «Здесь Сотрудник» и «Здесь Чат» с Android на iOS, спроектировала app-иконки, отправила сборки в App Store |
**Пробелы:**
1. **Flutter Web — nice-to-have с уклоном в hard, но не абсолютный блокер.** У кандидата нет ни одного Flutter Web проекта в CV. Если это жёсткое требование (единая кодовая база под три платформы одновременно), стоит уточнить на собеседовании реальный вес Web-части в задачах роли.
2. **2+ года именно во Flutter** — формально близко (20 месяцев с ноября 2024), но фактически кандидат вела 3 продукта параллельно (Flutter + 2 Vue), поэтому "чистого" фокуса на Flutter меньше 2 лет. Может быть смежным опытом, если компания оценивает по общему стажу разработки, а не по узкому "только Flutter" счётчику.
3. Портфолио-проект, закрывающий Flutter Web пробел: отсутствует.
4. **Конкретный план закрытия:** В сопроводительном письме прямо обозначить реальный опыт — портирование между Android/iOS, работа с Firebase, редизайн UI — и честно уточнить на собеседовании объём Flutter Web в задачах, не заявляя несуществующий опыт.
5. Формат гибрид/офис — Нижний Новгород, кандидат в Туле; поскольку JD явно предлагает "удалённо" как альтернативу гибриду, это не создаёт hard-блокер по локационной политике, но стоит подтвердить в переписке, что удалённый формат реально доступен для кандидатов вне НН (а не только "гибрид для местных, удалёнка как исключение").
## C) Уровень и стратегия
**Уровень в JD (2+ года, включая Flutter Web) vs естественный уровень кандидата (~1.7 года общего опыта, из них Flutter — один из трёх параллельных треков, без Web):** Умеренный разрыв, не катастрофический — базовый Flutter-стек (widget tree, state management через BLoC, Firebase, портирование платформ) закрыт хорошо, но специфика "единая кодовая база для трёх платформ" требует Flutter Web опыта, которого нет.
**План "продать senior без обмана":** Не претендовать на Flutter Web опыт напрямую. Позиционировать как "уверенный Flutter-разработчик с мультиплатформенным опытом (Android/iOS, включая портирование между ними), готова расширяться на Web-таргет" — честная формулировка готовности к росту, а не утверждение существующей экспертизы.
**План "если понизят уровень":** Если компания предложит более junior/входную позицию из-за отсутствия Flutter Web — принять при справедливой компенсации, договориться о переходе на полноценную роль через 3-6 месяцев по факту освоения Web-таргета (это техническая, а не архитектурная разница, осваивается быстро при наличии сильной базы в Flutter).
## D) Компенсация и спрос
| Источник | Данные |
|---|---|
| JD | Зарплата не указана ("уровень дохода не указан") |
| Целевой диапазон кандидата | 100 000–120 000+ ₽/мес на руки |
| Middle Flutter-разработчик, удалённо (рыночный ориентир, РФ, 2026) | Медиана Middle Flutter ~260 000 ₽/мес; общий диапазон по рынку широко варьируется (40 000–400 000 ₽) в зависимости от опыта и региона ([enigmai.ru](https://enigmai.ru/salary/mobile-development/mobile-salary-2026/), [career.hh.ru](https://career.hh.ru/profession/52)) |
| АЛИДИ — общая репутация как работодателя | Смешанные отзывы: полностью белая зарплата, стабильные выплаты, 44 дня отпуска (плюс к стабильности), но также жалобы на нагрузку и текучесть в отдельных подразделениях (складские позиции) — данные в основном не про IT-отдел ([tipworker.com](https://tipworker.com/otzyvy-sotrudnikov/alidi), [pravda-sotrudnikov.ru](https://pravda-sotrudnikov.ru/company/alidi-2)) |
**Вывод:** Отсутствие указанной зарплаты — риск-фактор для приоритизации усилий; стоит уточнить вилку на первом контакте до глубокой подготовки к собеседованию. Рыночная медиана Middle Flutter (260 000 ₽) значительно выше целевого диапазона кандидата — если компания платит по рынку, это апсайд; если по нижней границе (не редкость для непрофильной IT-компании вроде дистрибьютора), стоит ориентироваться на целевой диапазон 100 000–120 000 ₽. Крупная стабильная компания (не стартап) — плюс к стабильности оформления (ТК РФ).
## E) План персонализации
| # | Раздел | Текущее состояние | Предлагаемое изменение | Почему |
|---|--------|-------------------|------------------------|--------|
| 1 | Summary | Общий акцент на Vue 3 + Flutter dual-track | Сместить акцент на Flutter/мобильную разработку, упомянуть Vue как второй трек, не основной | JD — чисто Flutter-роль |
| 2 | Core Competencies | Смешанный список Vue+Flutter | Приоритизировать Flutter, Dart, BLoC, Clean Architecture, Firebase, портирование платформ | Прямое совпадение с ключевыми требованиями |
| 3 | Опыт — «Здесь Аптека» | Полный список буллетов | Первым — портирование Android→iOS (демонстрирует мультиплатформенность), вторым — диагностика «Избранное», третьим — редизайн UI | Показывает именно те компетенции, которые ищет JD |
| 4 | Flutter Web | Отсутствует в CV | Явно не выдумывать — если есть хоть какой-то опыт с web-таргетом Flutter (даже экспериментальный), добавить; если нет — не упоминать | Правило "никогда не выдумывать опыт" |
| 5 | Локация | Тула, готова к удалёнке | Явно подчеркнуть "полностью удалённо" при отклике, не полагаться на умолчание про гибрид в НН | Снимает риск недопонимания по формату работы |
## F) План собеседований
| # | Требование JD | История STAR+R | S | T | A | R | Reflection |
|---|---|---|---|---|---|---|---|
| 1 | Портирование платформ / архитектура приложения | Портирование «Здесь Сотрудник»/«Здесь Чат» Android→iOS | Оба приложения были только под Android | Адаптировать билды под iOS, включая push-уведомления | Перепривязала токены Firebase на обеих платформах, собрала и отправила сборки в App Store | Оба приложения одобрены и опубликованы | Мультиплатформенная разработка — не абстрактное знание, а пройденный полный цикл release-процесса |
| 2 | Firebase / push-уведомления | Firebase Cloud Messaging на «Здесь Сотрудник»/«Здесь Чат» | Нужны были push-уведомления на новой платформе (iOS) | Перепривязать токены для обеих ОС | Настроила Firebase для Android и iOS | Уведомления работают на обеих платформах | Понимание платформенных различий в infra-слое, не только в UI |
| 3 | Диагностика и понимание жизненного цикла состояния (rebuild/reactive) | Диагностика бага «Избранное» | Раздел не открывался, жалобы пользователей | Найти причину без готового отчёта QA | Диагностировала: все товары одним запросом; реализовала постраничную загрузку | Жалобы прекратились | Понимание, как состояние и загрузка данных влияют на rebuild UI — переносимый принцип между Vue reactivity и Flutter state management |
| 4 | Adaptive/адаптивный UI | Редизайн кнопки «Избранное» и блока информации о заказе | Неудобный интерфейс, нет дизайнера в компании | Спроектировать редизайн самостоятельно | Сделала кнопку крупнее, компоновку компактнее | Улучшенная эргономика | Готовность закрывать пробел роли — полезно в компании без отдельного мобильного дизайнера |
| 5 | Git/CI/CD, командная работа | Feature Branching + обучение коллеги (РМК) | Хаотичные релизы, нет версионирования | Внедрить Git Flow, обучить команду | Обучила коллегу с 11-летним стажем, внедрила процесс | Стабильные еженедельные релизы | Способность вносить процессные изменения, не только код |
| 6 | Замыкание реактивной переменной (близко к rebuild-механизму Flutter) | Баг с клавиатурой (РМК) | Клавиатура переставала работать после серии действий | Найти причину в глобальном классе биндинга | Диагностировала проблему очистки старых реактивных ссылок | Баг исправлен, задокументирован паттерн | Глубина понимания реактивности и жизненного цикла переменных — прямой концептуальный мостик к вопросам про Flutter rebuild-механизм |
**Банк историй:** Все истории уже присутствуют в `interview-prep/story-bank.md` — новых добавлений не требуется. При конфликте параллельной записи со стороны других воркеров обновление списка "Использовано в отчётах" пропускается; данные зафиксированы здесь.
Рекомендуемый кейс: портирование «Здесь Сотрудник»/«Здесь Чат» Android→iOS — лучше всего демонстрирует именно ту компетенцию, которую явно требует JD ("поддержка единой кодовой базы для Android, iOS и Web").
Вопросы-ловушки:
- **"Есть ли у вас опыт Flutter Web?"** → Честно: "Прямого продакшн-опыта с Flutter Web нет — весь мой Flutter-опыт на Android/iOS, включая портирование между ними. Готова разобраться с Web-таргетом, если это будет частью роли — концептуально это тот же Flutter-стек."
- **"Почему при 20 месяцах в компании вы вели три продукта одновременно, а не сфокусировались на одном?"** → "Это было решение компании из-за небольшой frontend-команды (4 человека) — я взяла на себя ЕКОМ с нуля, продолжая поддерживать Flutter-приложения. Это дало более широкий опыт мультиплатформенной разработки, но да, непрерывного фокуса именно на Flutter меньше двух лет."
---
## Vibe команды
Судя по формулировкам JD (сжатый, формальный текст без упоминания code review culture, менторства или участия в архитектурных решениях), сигналов "живой команды" в самом тексте немного — типично для крупной непрофильной IT-компании (дистрибьютор, а не продуктовый IT-стартап). Позитивный сигнал — явное указание графика (5 дней, 8 часов) и стабильности (официальное трудоустройство, оплачиваемые отпуска и больничные). По независимым отзывам сотрудников АЛИДИ в целом (не специфично IT-отдел) — сильно противоречивая картина: часть отзывов хвалит стабильность и белую зарплату, часть жалуется на нагрузку и текучесть, но большинство критических отзывов относится к складским/логистическим позициям, не к IT. Недостаточно данных в JD, чтобы делать выводы конкретно про IT/mobile-команду — стоит уточнить на собеседовании про code review, менторство и степень автономии в архитектурных решениях.
## G) Posting Legitimacy
**Assessment:** Proceed with Caution
| Сигнал | Наблюдение | Вес |
|---|---|---|
| Свежесть | Опубликовано 3 июля 2026 (4 дня назад на момент оценки) — свежая публикация | Positive |
| Источник | Найдена и через Telegram-канал (t.me/s/runello_rus_mobileappdevelopment), и напрямую на hh.ru (134831996) под тем же описанием роли — совпадение по двум независимым каналам повышает доверие к реальности вакансии | Positive |
| Качество описания | Конкретные технические требования (Widget/Element/Render Trees, rebuild-механизм, CI/CD инструменты по именам), реалистичный объём для заявленного уровня | Positive |
| Зарплата не указана | "Уровень дохода не указан" — нейтральный, но чуть менее прозрачный сигнал, характерный для непрофильных IT-компаний | Neutral |
| Компания | АЛИДИ — крупный, давно существующий дистрибьютор (9000+ сотрудников, 61 регион), не выглядит фиктивной; но найдены смешанные отзывы о процессах в компании в целом | Neutral/Concerning |
| Reposting | Вакансия распространяется через Telegram-репост канала — сам по себе не признак ghost job (агрегаторские каналы репостят реальные вакансии), но снижает уверенность в эксклюзивности контакта | Neutral |
**Context Notes:** Компания легитимна и стабильна, но не является профильной IT-компанией — обычный паттерн для непрофильных компаний с внутренним IT-отделом: набор идёт медленнее, публичной репутации именно IT-культуры меньше данных. Отсутствие указанной зарплаты — стоит уточнить в первую очередь до глубокой подготовки.
---
## Рекомендация
**Можно рассмотреть с оговорками** (балл 3.4/5 — ниже порога 4.0, применяется правило Ethical Use: настоятельно не рекомендуется откликаться без конкретной причины). Технический стек и мультиплатформенный Flutter-опыт кандидата (портирование Android→iOS, Firebase, редизайн UI) хорошо совпадают с ролью, формат работы (удалённо как альтернатива гибриду) соответствует локационной политике. Однако отсутствие Flutter Web опыта, неполные 2 года непрерывного фокуса именно на Flutter (из-за параллельной работы на 3 продуктах) и неуказанная зарплата — три фактора, которые тянут балл ниже порога уверенной рекомендации. Если кандидат хочет расширяться в сторону мультиплатформенного Flutter (включая Web) и ценит стабильность крупной непрофильной компании — стоит уточнить зарплатную вилку и реальный вес Flutter Web в задачах до подготовки полноценного отклика.