22 KiB
Оценка: Компания не указана (анонимная вакансия через Runello-бот) — Fullstack разработчик Android/iOS (Kotlin Multiplatform)
Дата: 2026-07-07
Архетип: Mobile Developer — ближе всего к архетипу «Mobile Developer (Flutter)» из modes/_profile.md, но фактический стек вакансии — нативный Kotlin Multiplatform + SwiftUI, а не Flutter/Dart. Это НЕ прямое совпадение ни с одним из трёх целевых архетипов кандидата (Frontend Vue.js / Mobile Flutter / Fullstack Vue+Node).
Балл: 1.8/5
Legitimacy: Proceed with Caution
URL: https://t.me/s/runello_rus_mobileappdevelopment/3170
PDF: not generated (порог 3.0 не достигнут)
Verification: unconfirmed (WebFetch-only, без Playwright — превью Telegram-канала, дата публикации не извлекается)
A) Резюме роли
| Параметр | Значение |
|---|---|
| Архетип | Mobile Developer — нативный Kotlin Multiplatform (Android/iOS), не Flutter |
| Domain | mobile |
| Function | build |
| Seniority | Не указан в посте (стек предполагает минимум Middle) |
| Формат работы | Удалённо, глобально (#remote #global) |
| Размер команды | Не указан |
| Оформление | Не указано — компания скрыта, отклик только через Runello-бот |
| TL;DR | Мобильная fullstack-роль (Android+iOS) на нативном стеке Kotlin Multiplatform + Jetpack Compose + SwiftUI + Ktor + Kodein — принципиально другой технологический стек, чем Flutter/Dart у кандидата. |
Vibe команды: недостаточно данных в JD для оценки — текст поста содержит только хэштеги #mobile #android #remote #global, никаких сигналов об ownership, автономии, менторстве или гибкости. Стоит уточнить на собеседовании, если кандидат решит откликнуться.
Важное замечание по компании: пост из Telegram-канала «Mobile App Development Job Offers» — это канал-агрегатор бота Runello (подтверждено WebSearch: Runello — легитимный AI-агрегатор вакансий, ежедневно парсит тысячи вакансий и подбирает под профиль, не требует регистрации/личных данных для просмотра). Реальный работодатель в самом посте не назван — это стандартный паттерн анонимизации агрегатора: имя компании раскрывается только после отклика через бота. Название канала («Mobile App Development Job Offers — Telegram») — это НЕ работодатель, это сам канал, как и было указано в задаче.
B) Совпадение с CV
Прочитан cv.md. Требования JD против точных строк CV:
| Требование JD | Совпадение в CV | Комментарий |
|---|---|---|
| Android + iOS mobile разработка | ✅ частично — «Флаттер-разработчик... Начала как Flutter-разработчик»; «Здесь Аптека» (Flutter, Android/iOS); «Здесь Сотрудник» и «Здесь Чат» — портирование Android → iOS (Flutter) | Опыт мобильной разработки под обе платформы РЕАЛЬНЫЙ, но через Flutter/Dart, а не нативный Kotlin/Swift |
| Kotlin, Kotlin Multiplatform (KMP) | ❌ отсутствует | Ни Kotlin, ни KMP не упомянуты в CV ни разу. Dart и Kotlin — разные языки с разным синтаксисом и экосистемой; знание одного не даёт рабочего знания другого |
| Jetpack Compose (нативный Android UI) | ❌ отсутствует | В CV — Flutter Widgets (свой UI-движок), не Jetpack Compose. Концептуально оба декларативны (как и Vue 3 Composition API кандидата), но синтаксис и API — разные |
| SwiftUI (нативный iOS UI) | ❌ отсутствует | Работа с iOS у кандидата — «Собрала iOS-сборки и отправила приложения на проверку в App Store» — это операционная часть релиза Flutter-приложения, не написание SwiftUI-кода |
| Ktor (Kotlin backend/networking) | ❌ отсутствует | CV указывает Node.js/Express/MongoDB на «ознакомительном уровне» — не Ktor и не Kotlin-backend |
| Kodein (DI-фреймворк для Kotlin) | ⚠️ смежный опыт | CV: «Service Locator (DI)» во Flutter-стеке — тот же паттерн (Dependency Injection), но другая реализация/язык |
| Kotlin Serialization | ❌ отсутствует | Не упоминается |
| Clean Architecture (подразумевается для KMP-проектов такого масштаба) | ✅ прямое совпадение | CV: «чистая архитектура (Clean Architecture)» — явно указано в разделе Mobile |
| REST API / WebSocket интеграции | ✅ совпадение | CV: «REST API, WebSocket/WSS», внедрила WebSocket в РМК |
Пробелы и стратегия закрытия
- Kotlin / Kotlin Multiplatform — hard blocker. Это ядро вакансии, и в CV нет ни одной строки про Kotlin. Смежный опыт (Dart/Flutter) даёт общее понимание мобильной разработки, но НЕ даёт рабочего знания синтаксиса Kotlin, KMP-модулей (
expect/actual), Gradle-мультиплатформенной сборки. Закрыть за счёт «может продемонстрировать смежный опыт» — нет, честно нельзя выдавать Flutter-опыт за готовность к Kotlin-проекту. - Jetpack Compose / SwiftUI — hard blocker для нативной части. Аналогично: декларативный UI-паттерн знаком (Vue 3 Composition API, Flutter Widgets), но конкретные фреймворки — нет. Портфолио-проект, закрывающий пробел, отсутствует (согласно
modes/_profile.md, у кандидата пока нет публичного портфолио). - Ktor / Kotlin Serialization — nice-to-have относительно основного блокера, но тоже отсутствуют полностью.
- Конкретный план закрытия: Единственная честная фраза для сопроводительного — подчеркнуть опыт релиза мобильных приложений на две платформы (Firebase push-токены Android/iOS, отправка в App Store, DI и Clean Architecture как паттерны, а не как конкретные Kotlin-инструменты), и явно обозначить готовность переучиваться на Kotlin/Swift. Это НЕ быстрый прыжок — реалистично требует нескольких месяцев практики, а не одного «быстрого проекта» или заученной фразы для интервью.
Вывод по Block B: переносимые навыки (архитектурные паттерны, релиз-процесс, DI, REST/WebSocket) есть, но основной технологический стек вакансии (Kotlin Multiplatform, Jetpack Compose, SwiftUI, Ktor) у кандидата отсутствует полностью. Это не Flutter-вакансия — путать кросс-платформенность Flutter с нативной Kotlin Multiplatform было бы искажением фактов.
C) Уровень и стратегия
- Уровень в JD: не указан явно, но набор технологий (KMP + Compose + SwiftUI + Ktor + DI-фреймворк) обычно предполагает Middle/Middle+ по нативному мобильному стеку. Естественный уровень кандидата для этого архетипа: по Kotlin/KMP — фактически Junior/начинающий (нулевой коммерческий опыт с языком), несмотря на Middle-уровень в Flutter/Vue.
- План «продать senior без обмана»: здесь неприменим — нельзя продавать Middle+ уровень по стеку, которого нет в опыте. Честная позиция: «мобильный разработчик с опытом релиза production-приложений на Android+iOS (Flutter), сильными архитектурными паттернами (Clean Architecture, DI) и готовностью перейти на Kotlin Multiplatform» — то есть позиционирование как «смежный найм», не «готова прямо сейчас».
- План «если понизят уровень»: принять junior/стартовый грейд по Kotlin-треку разумно, если компания даёт реальный план роста и компенсация не ниже минимума кандидата (100 000 ₽/мес на руки). Договориться о пересмотре через 3-6 месяцев адаптации к стеку, а не сразу требовать Middle-условия за незнакомый язык.
D) Компенсация и спрос
Зарплата и оформление в самом посте не указаны — компания анонимна, условия раскрываются только после отклика через Runello-бот. Ниже — только общий рыночный контекст (WebSearch, 2026):
| Показатель | Значение | Источник |
|---|---|---|
| Медиана зарплаты мобильного разработчика в РФ | ~320 000 ₽ на руки | ENIGMA AI |
| Middle Android Developer (медиана) | ~270 000 ₽; диапазон 160 000–290 000 ₽ | checkroi.ru |
| Премия за навык Kotlin Multiplatform | +15-20% к вилке Middle; до +25% при KMP + нативный UI | ENIGMA AI |
| Формат | Удалённая работа доминирует, компании открыты к найму из регионов | ENIGMA AI |
Специфика РФ: gross/net не указаны в посте — уточнить обязательно при отклике (net ≈ gross × 0.87 как ориентир). Оформление (ТК РФ / ГПХ / самозанятость) неизвестно.
Оценка по компенсации: приведённые цифры рынка для Middle Kotlin-разработчиков теоретически перекрывают минимум кандидата (100 000 ₽/мес на руки), но так как это медианы для опытных Kotlin-специалистов, а кандидат вошла бы в эту роль без опыта в Kotlin — реалистичный оффер скорее будет ближе к junior-вилке или ниже медианы. Балл по этой оси — нейтральный из-за отсутствия конкретных данных по самой вакансии.
E) План персонализации
Рекомендация: не адаптировать CV под эту вакансию. Стек кандидата (Flutter/Dart, Vue 3) фундаментально отличается от требуемого (Kotlin Multiplatform, Jetpack Compose, SwiftUI, Ktor). Любая адаптация summary/буллетов под эту JD потребовала бы переформулировок, создающих ложное впечатление о владении Kotlin — это прямо запрещено правилом «Keywords get reformulated, never fabricated» (CLAUDE.md).
Если кандидат всё же решит откликнуться (например, из интереса к переходу в Kotlin-стек), единственное уместное изменение — явно указать в сопроводительном письме готовность к обучению и перечислить переносимые паттерны (Clean Architecture, DI, релиз на две платформы), не выдавая их за экспертизу в конкретных Kotlin-инструментах.
F) План собеседований
Так как оффер не соответствует стеку кандидата, банк историй здесь ограничен переносимыми паттернами, а не Kotlin-специфичными кейсами:
| # | Требование JD | История STAR+R | S | T | A | R | Reflection |
|---|---|---|---|---|---|---|---|
| 1 | Опыт релиза на Android + iOS | Портирование «Здесь Сотрудник» и «Здесь Чат» с Android на iOS | Оба приложения были только под Android | Нужно было адаптировать под iOS и выпустить в App Store | Перепривязала Firebase push-токены на обе платформы, собрала iOS-билды, спроектировала app-иконки, отправила на проверку в App Store | Оба приложения успешно прошли ревью и стали доступны на iOS | Узнала специфику App Store review и различия в push-инфраструктуре iOS/Android — процесс релиза похож на то, что требуется в KMP-проекте, даже без Kotlin |
| 2 | Clean Architecture / DI | Service Locator (DI) + Clean Architecture во Flutter-приложении «Здесь Аптека» | Приложение росло, нужна была поддерживаемая структура кода | Спроектировала слои по Clean Architecture, внедрила DI через Service Locator | Код стал проще тестировать и расширять новым разработчикам | Поняла ценность архитектурных границ независимо от конкретного языка — тот же принцип применим к Kodein в Kotlin | |
| 3 | REST API / real-time коммуникация | Внедрение WebSocket-оповещений в РМК | Не было видимости, сколько аптек онлайн в реальном времени | Нужно было решение с минимальной задержкой | Внедрила WSS-оповещения с отметкой прочтения | Впервые видно статус ~1200 аптек в реальном времени | Реал-тайм коммуникация через WebSocket переносится на любой стек, включая Ktor |
| 4 | Быстрое обучение новому стеку | Переход из ИБ-образования в frontend/Flutter разработку без профильного опыта | Не было бэкграунда в коммерческой разработке | Прошла профильный курс, взяла на себя Flutter-проект | Стала штатным разработчиком, ведёт 3 продукта одновременно | Показывает способность быстро закрывать технологические пробелы — прямой аргумент для перехода на Kotlin |
Рекомендуемый кейс: портирование Android → iOS приложений — единственная история, максимально близкая к теме вакансии (кросс-платформенный релиз), хотя и без Kotlin.
Вопросы-ловушки:
- «У вас есть опыт с Kotlin/Kotlin Multiplatform?» → честный ответ: нет коммерческого опыта, но есть опыт кросс-платформенной мобильной разработки (Flutter) и архитектурных паттернов (Clean Architecture, DI), которые переносятся на новый стек; готова инвестировать время в обучение.
- «Почему решили сменить стек с Flutter на нативный Kotlin?» → не отвечать шаблонно про «интересные технологии» — дать конкретную причину (если решит откликнуться), иначе этот вопрос обнажит слабую мотивацию.
G) Легитимность публикации (Posting Legitimacy)
Tier: Proceed with Caution
| Сигнал | Оценка |
|---|---|
| Качество описания | Текст обрезан («интегра…») в Telegram-превью, но конкретный список технологий (Kotlin, KMP, Jetpack Compose, Ktor, Kodein, Kotlin Serialization) выглядит как реальная выдержка из JD, не как спам-шаблон. Terse-формат — типичная особенность Telegram-превью, а не сигнал подделки. |
| Компания | Не названа — стандартная анонимизация агрегатора Runello (подтверждено WebSearch: легитимный AI job-matching бот, не требует регистрации/личных данных для просмотра вакансий). Отсутствие имени компании само по себе не является red flag для этого канала, но не позволяет проверить репутацию работодателя напрямую. |
| Repost-проверка | По data/scan-history.tsv — вакансия встречается один раз (строка с этим URL, first_seen: 2026-07-07), признаков повторной публикации нет. |
| Рыночный контекст роли | Роль (KMP + Android/iOS, remote) соответствует активному и реальному сегменту рынка — есть конкретные зарплатные данные по KMP-специалистам в РФ (см. Block D), что говорит в пользу реальности такого найма в принципе. |
| Свежесть | Не подтверждена — дата публикации поста не извлекается из WebFetch-превью, Playwright недоступен в этом режиме. |
Итог: нет признаков мошенничества или фейковой вакансии, но отсутствие названия компании и невозможность проверить свежесть/детали без перехода в бота — по правилу «default to Proceed with Caution при недостаточных сигналах» присваиваем именно этот tier, не «High Confidence».
Итоговая рекомендация
Балл 1.8/5 — значительно ниже порога 4.0/5 (AGENTS.md/CLAUDE.md). Настоятельно рекомендуется не откликаться. Основная причина — не компенсация и не локация (удалённо, без конфликта с политикой кандидата), а фундаментальное несовпадение технологического стека: вакансия требует нативной Kotlin Multiplatform + SwiftUI разработки, а профиль кандидата — Flutter/Dart + Vue 3. Кросс-платформенная модель Flutter — это смежный, но иной навык, чем нативная Android/iOS разработка на Kotlin/Swift; система не должна (и не будет) представлять эти навыки как эквивалентные.
Если кандидат заинтересована в переходе в нативный Kotlin-стек как в стратегическое направление карьеры — это отдельное решение, не отражённое в текущем CV/modes/_profile.md, и его стоит явно обсудить и зафиксировать в config/profile.yml/modes/_profile.md, прежде чем система начнёт продвигать такие вакансии выше.
Извлечённые ключевые слова (ATS)
Kotlin, Kotlin Multiplatform, KMP, Android, iOS, Jetpack Compose, SwiftUI, Ktor, Kodein, Kotlin Serialization, Fullstack, мобильная разработка, cross-platform, дизайн-система, пользовательский интерфейс, remote, global, мобильное приложение, native mobile development, DI (Dependency Injection), Clean Architecture