init
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

This commit is contained in:
redlineo committed 2026-07-13 10:14:00 +03:00
commit d295c7f139
1527 files changed
+270726

No files matched your search

+121
View File
@@ -0,0 +1,121 @@
# Оценка: АЛИДИ, Группа компаний — 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 в задачах до подготовки полноценного отклика.