По этой профессии сейчас мало активных вакансий, поэтому рыночные цифры на странице ориентировочны. Путь входа, навыки и типовые ошибки от объёма выборки не зависят.
Как стать мобильным разработчиком: путь от нуля до первого оффера
Не «стань разработчиком за 3 месяца» — реальный путь входа на основе данных по 8 вакансий.
Можно ли стать мобильным разработчиком с нуля
Порог входа для мобильного разработчика высокий — в текущем срезе вакансий junior-уровня нет. Это не значит, что войти невозможно: рынок цикличен, и через 2–4 месяца картина может измениться.
«Мобильный разработчик» — не платформа, а зонтик. Под ним живут Android, iOS, Flutter и React Native, и вакансия почти всегда имеет в виду что-то одно, просто не пишет это в заголовке. Видно по стеку: в срезе рядом стоят JavaScript, Kotlin (62.5%), Java, Android (37.5%), iOS (37.5%) и React. Это не один стек, а несколько разных работ с общим названием.
Поэтому первый шаг здесь — не учить, а выбрать. Один путь до рабочего приложения полезнее четырёх начатых. Дальше собирается общее мобильное ядро, одинаковое на любой платформе: состояния экрана, сеть, локальное хранение, разрешения, поведение на устройстве и релиз в магазин. Рынок при этом смещён к опытным: junior-вакансий 0 из 8, на одного junior — 0 senior.
Как стать мобильным разработчиком: короткий план
Пять шагов: выбрать платформу → собрать ядро → подключить данные → сломать сценарий → выпустить.
Что учить мобильному разработчику первым
Не всё сразу. Вот очерёдность по частотности в вакансиях — от самого нужного к менее срочному.
Полный список навыков с частотностью, связками и зарплатной премией — навыки мобильного разработчика →
Roadmap мобильного разработчика: от нуля до junior
Порядок опирается на частотность навыков по данным вакансий. Первые 4–5 этапов — минимум для первого оффера.
- 01Платформа и язык 62.5% вакансий
Kotlin (Android) / Swift (iOS) / Dart (Flutter) — синтаксис, ООП, идиомы платформы.
Подробнее → - 02UI-компоненты и навигация 37.5% вакансий
Jetpack Compose / SwiftUI / Flutter Widgets, жизненный цикл экранов, навигация.
Подробнее → - 03Сеть и REST API
HTTP-клиенты (Retrofit/Alamofire), авторизация, WebSocket, обработка ошибок.
Подробнее → - 04Архитектура и паттерны
Clean Architecture, MVVM/MVI, SOLID, DI-фреймворки (Hilt, Dagger, DI).
Подробнее → - 05CI/CD и публикация
GitLab CI / GitHub Actions, сборка релизов, App Store / Google Play, тестирование.
Подробнее →
Junior-вакансии мобильного разработчика: что реально требуют работодатели
Срез построен на 8 активных вакансий.
Какие проекты сделать для портфолио
Портфолио отвечает на один вопрос: платформа выбрана? Приложение на одной платформе, доведённое до подписанной сборки, убеждает. Четыре начатых проекта на четырёх стеках говорят, что человек ещё не решил.
Как оформить GitHub и резюме
- Первой строкой README — платформа и язык: рецензент не должен угадывать
- Скриншоты или короткое видео сценария: мобильное приложение оценивается глазами
- Отдельный раздел про неидеальные условия: офлайн, отказ разрешения, таймаут
- Укажи устройства и версии ОС, на которых проверял, — не только эмулятор
- Приложи собранный артефакт: файл сборки в релизах репозитория или ссылку на неё
- Название платформы в заголовке резюме сильнее, чем «мобильный разработчик»: так тебя найдут фильтром
- Один стек в навыках. Перечисление Android, iOS, Flutter и React Native читается как отсутствие выбора
- Пиши сценарии, а не экраны: «оформление заказа с офлайн-черновиком», а не «делал интерфейс»
- Отметь опыт проверки на реальных устройствах — это редкая строка у новичков
- Figma в резюме уместна: работа по макету часть роли
«Мобильный разработчик. Знаком с Android, iOS, Flutter и React Native»
«Android-разработчик. Собрал приложение на Kotlin: каталог и оформление заказа, данные через REST API, локальный кэш и офлайн-черновик, обработка отказа в разрешении на геолокацию. Проверил на двух устройствах и на Android 11 и 14, собрал подписанный релиз. GitHub: [ссылка]»
Самостоятельно, курсы или вуз — какой путь выбрать
Когда начинать искать первую работу
Готов, когда есть приложение на одной платформе, которое ставится на чужой телефон, переживает режим полёта и отказ в разрешении. И когда в резюме написана эта платформа, а не «мобильная разработка».
- → hh.ru: ищи и по «мобильный разработчик», и по названию своей платформы — часть вакансий скрыта за общим заголовком
- → Habr Career: раздел мобильной разработки
- → Продуктовые компании, где приложение основной канал: банки, ритейл, доставка
- → Аутсорс и студии: разные приложения и быстрый опыт релизов
- → Стажировки крупных компаний: там направления разделены по платформам и есть ревьюеры
- → Открывай вакансию и ищи язык: Kotlin — Android, Swift — iOS, Dart — Flutter, TypeScript и React — React Native. Заголовок не скажет, стек скажет
- → Если платформ в требованиях несколько — уточняй на созвоне, делает команда одну версию или обе
- → Linux, Python или SQL в списке — команда маленькая, мобильная часть прилегает к чему-то ещё
- → Figma в требованиях — работать будешь по макету и обсуждать состояния экрана с дизайном
- → «Опыт публикации» читается как «доводил приложение до магазина», а не «у тебя есть личное приложение в сторе»
Что спрашивают на собеседовании
Состояния экрана
- ·Какие состояния бывают у экрана со списком
- ·Что показываешь при пустом результате
- ·Чем ошибка сети отличается от ошибки сервера для пользователя
- ·Что происходит с заполненной формой при уходе в фон
Скриншоты всех состояний одного экрана
Сеть и офлайн
- ·Что делаешь при таймауте
- ·Как повторяешь запрос и сколько раз
- ·Где хранишь токен и что делаешь при истечении
- ·Как приложение ведёт себя в режиме полёта
Демонстрация: авиарежим, действие, возврат сети
Устройство и платформа
- ·Что происходит при отказе в разрешении
- ·Как приложение переживает звонок посреди сценария
- ·Чем эмулятор отличается от реального телефона
- ·Что делает система, когда памяти не хватает
Отчёт о проверке на реальном устройстве: что сломалось и что починил
Локальное хранение
- ·Что храним локально, а что нет
- ·Куда класть токен, а куда настройки
- ·Что делать при расхождении кэша и сервера
- ·Зачем нужны миграции локальной базы
Описание кэш-стратегии в README
Релиз
- ·Чем debug-сборка отличается от release
- ·Как подписывается сборка
- ·Что делаешь, если падение видно только у пользователей
- ·Зачем нужен мониторинг падений
Подписанная сборка и описание, как она собирается
Сколько времени нужно, чтобы стать мобильным разработчиком
Главный пожиратель времени здесь — не сложность, а метания. Три месяца на Android, потом два на Flutter, потом взгляд в сторону iOS — и год прошёл без единого доведённого приложения. Зафиксируй платформу и вернись к выбору не раньше первого оффера.
Junior-вакансий 0 из 8, доминирует senior. Закладывай поиск отдельным этапом и откликайся с конкретным названием платформы в резюме — так тебя находят фильтром.
Проверка на настоящем телефоне экономит месяцы: многие мобильные баги не воспроизводятся в эмуляторе — память, батарея, разрешения, поведение оболочки производителя.
Ошибки новичков
Учат все платформы понемногу
Почему мешает: В резюме это читается как отсутствие выбора, а собеседование всегда идёт по одной платформе
Как исправить: Выбери одну, доведи приложение до подписанной сборки, потом смотри по сторонам
Откликаются, не прочитав стек
Почему мешает: За общим заголовком стоит конкретный язык, и несовпадение вскрывается на первом созвоне
Как исправить: Ищи в требованиях Kotlin, Swift, Dart или React — это и есть настоящее название вакансии
Проверяют только в эмуляторе
Почему мешает: Память, батарея, разрешения, камера и оболочка производителя ведут себя на телефоне иначе
Как исправить: Ставь каждую сборку на реальное устройство, лучше не на новое
Рисуют только счастливый сценарий
Почему мешает: Приложение живёт на чужом телефоне: сеть рвётся, разрешение отклоняют, звонок прерывает
Как исправить: Для каждого экрана — загрузка, пусто, ошибка, офлайн; проверь каждое состояние
Игнорируют локальное хранение
Почему мешает: Без кэша и черновика приложение теряет данные пользователя, и это заметят первым
Как исправить: Сохрани токен, настройки и черновик формы, проверь перезапуск приложения
Останавливаются перед релизом
Почему мешает: Работа мобильного разработчика заканчивается в магазине, а не в редакторе: подпись и требования магазина часть роли
Как исправить: Собери подписанный релиз и опиши процесс в README
Пишут в резюме «мобильный разработчик» без платформы
Почему мешает: Рекрутер фильтрует по языку и платформе, и общее название просто не попадает в выборку
Как исправить: Первая строка резюме — платформа и язык, дальше уже сценарии
Считают дизайн чужой зоной
Почему мешает: Figma в части вакансий: состояния экрана согласуются с дизайном, и молчание оборачивается переделкой
Как исправить: Обсуждай пустые состояния и ошибки до того, как начал верстать
Как SkillStat считает данные
Источник: 8 вакансий в московском сегменте. Навыки и грейды извлекаются автоматически из текста каждой вакансии.
Грейды: определяются по требованиям вакансии — уровню опыта, упоминанию «junior», «intern», «стажёр». Это рыночная оценка объявления.
Сложность входа: рассчитывается по доле junior-вакансий и медиане навыков на junior-уровне. Это индикатор, а не гарантия.
Обновление: данные пересчитываются регулярно. Текущий срез — 12 августа 2026.