Резюме Android-разработчика проигрывает простыне библиотек: Retrofit–Dagger–Rx–Compose–MVI без приложения, которое можно открыть с телефона за одну минуту без пароля и без VPN. Рекрутер ищет Kotlin, один продукт, архитектуру в рамках вашего вклада, ограничения магазина и ссылку на GitHub или стор — не каталог Jetpack из курса. Один экран, который можете разобрать вслух на созвоне, сильнее двадцати логотипов Jetpack. Flutter в native-слот не маскируйте: тестовое будет про ViewModel и жизненный цикл Activity, не про виджеты Flutter.

Ниже — как собрать резюме Android-разработчика: заголовок, приложение, пули, два заполненных примера, что не писать про «нативные приложения и материалу». Каркас — в как составить резюме. Пули — в как описать опыт. Вход — в как стать Android-разработчиком. Соседний вход в мобилку шире — как стать mobile-разработчиком. Java backend — другой файл: резюме Java. После сборки — проверка резюме: простыня библиотек без экрана всплывает сразу. Ссылку на приложение проверьте с телефона до отклика.

Коротко:

  • Заголовок = Android + Kotlin, не «Java/Kotlin/Android/Flutter».
  • Одно приложение в шапке: стор или GitHub с README. Весь профиль не смотрят.
  • Пули: экран, данные, офлайн, падение, релиз — не список библиотек.
  • Compose/XML, корутины, DI — только если готовы разобрать на созвоне.
  • Ограничения магазина и размер APK/AAB пишите, если это была задача, не «публиковал в Google Play» без факта.

Что смотрят за 15 секунд

На вакансиях Android:

  1. Kotlin-продукт или учебный ToDo на Java 2019 года?
  2. Есть ли приложение в сторе / репозиторий с архитектурой, а не один Activity?
  3. Сеть, БД, фон, авторизация — или только вёрстка?
  4. Flutter/React Native в шапке при слоте native?
  5. Грейд: пет-проект на слот с многомодульностью и CI?

Карточка — резюме IT-специалиста. Стек — стек. Summary — summary. Без штата — резюме без опыта.

Структура

Шапка: Android, Kotlin, город / UTC, ссылка на приложение. Summary: тип приложения (заказы, ридер, внутренний), 2 факта. Опыт. Отдельным блоком приложение, если оно сильнее должности. Навыки: язык и UI; данные; сеть; DI; тесты; магазин. Образование внизу.

Скриншоты в PDF не заменяют ссылку. Видео с эмулятора без репозитория слабо. NDA: опишите экраны и ваш модуль без данных клиентов. Проекты — проекты в резюме. Remote — удалёнка.

Заголовок и стек без каталога Jetpack

Было. Android-разработчик. Java, Kotlin, XML, Compose, MVP, MVVM, MVI, Dagger, Hilt, Koin, RxJava, Coroutines, Flow, Retrofit, OkHttp, Room, Realm, Firebase, Play Billing, CI. Material Design.

Стало. Android, Kotlin, кабинет заказов. MVVM, Retrofit, Room, корутины. Приложение в сторе / GitHub: [ссылка]. Compose в проде не вёл — XML. Ростов-на-Дону / UTC+3, remote.

Вычеркните архитектурные аббревиатуры, которые не защитите на доске. Одна архитектура в фактах сильнее пяти в списке.

Какие пули читают

Пишите экран и ограничение платформы:

  • список, мастер, карта, пуш, оплата — что доводили;
  • офлайн / очередь запросов / конфликт синхронизации;
  • падение: Crashlytics, что починили, не «снизил crash-free на 5%» без базы;
  • размер, время старта, утечка — если мерили;
  • релиз: трек, подпись, что ломалось в ревью магазина;
  • модуль: ваш кусок, не «команда выпустила приложение».

Не «работал с Retrofit». «Повтор заказа при 409: пользователь видит текст ошибки, не пустой тост». Канцелярит — ошибки в резюме.

Пример 1. Junior, одно приложение

Вакансия: junior Android, Kotlin, REST, Git, тестовое на экран.

Junior Android, Kotlin. Учебное приложение заказов — GitHub и apk: [ссылки]. Коммерческого штата нет.

Список заказов + фильтр статуса. Пустое состояние и ошибка сети — отдельные экраны, не белый список.

Форма заказа: валидация, повтор отправки не дублирует заказ на mock API. Room как кэш списка, в README — без настоящей синхронизации конфликтов.

Корутины + ViewModel. Hilt не подключал: ручные зависимости, так и написано.

Play Console не публиковал: подпись и трек в README как «не сделано». К тестовому на экран списка готов на этой неделе.

Честные границы. Надутый Play Billing без публикации вскрывается сразу. Публикация в сторе — плюс, не обязанность junior, если репозиторий читаемый.

Пример 2. Продуктовое приложение

Вакансия: Android, Kotlin, поддержка приложения в сторе, сеть, релизы.

Android, Kotlin, B2B-заказы. 2,5 года. Стор: [ссылка]. Remote, UTC+3.

Собрал мастер создания заказа: черновик в локальной БД, ошибка API не затирает шаги. Менеджеры перестали перепечатывать поля после обрыва сети.

Починил падение на пустом списке отгрузок после смены контракта API. Crash в трекере, фикс, релиз hotfix. Повторов по этой стеке не было.

Ужал тяжёлые картинки статусов: размер AAB перестал упираться в лимит внутреннего тестирования. Это задача магазина, не «оптимизировал производительность».

Ревьюил PR по экрану заказа. Compose в этом модуле нет — XML + ViewModel. Не обещаю Flutter.

Магазинные ограничения здесь уместны, потому что были задачей. Не копируйте это, если вы только заливали apk через CI, который собрал другой человек: напишите «релиз через пайплайн команды, мой кусок — changelog и прогон экрана заказа».

Java, Compose, мультиплатформа

Java Android — можно в опыте, если сопровождали. Шапка Kotlin, если на нём тестовое. Compose — факт экранов, не курс. KMP/Flutter — отдельный акцент или отдельный файл, иначе native-слот вас снимет.

После сборки — проверка резюме. Красный флаг: 25 библиотек, ноль экранов.

Письмо и собеседование

Письмо указывает на приложение и один экран: сопроводительное, без опыта, генератор. Тестовое часто «экран + ViewModel»: тестовое. Интервью — interview-prep, рассказ о приложении — как рассказать о проекте. Тишина — почему не отвечают: часто Flutter-слот или backend Java при Android-файле без фильтра.

Архитектура, модули, DI — без каталога

MVVM в файле имеет смысл, если на созвоне покажете ViewModel, состояние экрана и куда уходит запрос. MVI, Clean, «каждая фича — модуль» пишите, когда это правда репозитория. Junior с одним модулем и честным README сильнее middle-слов на учебном ToDo.

Hilt/Dagger: факт графа, не логотип. Если зависимости ручные — так и скажите, это нормальный вход. RxJava рядом с корутинами в одной шапке выглядит как «всё, что слышал». Оставьте то, чем чините прод сейчас.

Мультимодульность: ваш модуль, граница, время сборки, что ломалось при split. Не «перевели на модули» без роли. Белые сборки и flavor — задача: что отличалось, подпись, ошибка Play, ваш changelog.

Compose и XML могут жить в одном продукте. Напишите, какой экран на чём, чтобы тестовое не ждало Compose, если вы его не вели. Не ставьте Compose в заголовок с одного кодлаба.

Стор, краши, офлайн

Google Play — плюс, не единственное доказательство. Внутренний закрытый трек и GitHub тоже работают, если приложение собирается. Не обещайте «миллион загрузок», если это не ваша метрика и не ваш продукт.

Краши: стек, экран, фикс, hotfix. Crash-free процент без окна и без вашего вклада не пишите. ANR, утечка, тяжёлый список — только с фактом.

Офлайн и очередь запросов — сильный сюжет для B2B: обрыв сети на складе, черновик заказа, повтор. Это читается лучше, чем «работал с Room». Конфликт синхронизации опишите честно: если его нет, напишите «кэш списка, без merge».

Оплата и Play Billing — отдельный риск. Пишите, если проходили ревью, подписку, ошибку покупки. Учебный «кнопка купить» без консоли в шапку не ставьте.

Чек-лист перед откликом

  • Заголовок Android + Kotlin, без Flutter в той же строке, если слот native.
  • Одна ссылка на приложение или apk+GitHub.
  • Первые пули про экран и ограничение, не про библиотеки.
  • Compose, Hilt, KMP — только с готовностью к разбору.
  • Java backend и iOS не размывают шапку.
  • README: как собрать, ваш вклад, чего нет.
  • Слот грейда: пет-проект не на многомодульный банк.

Прогоните через разбор резюме. Отклик — вакансия Android с тем же UI-стеком. Письмо со ссылкой на приложение: короткое письмо. К созвону — один экран вслух: interview-prep. Если репозиторий не собирается с чистого клона, сначала почините README: мёртвая ссылка в шапке хуже её отсутствия. Простыня Jetpack без экрана не проходит ни junior, ни middle. Flutter и backend Java этим файлом не закрывайте — для них другие карточки и другие тестовые.

Частые вопросы

Обязателен ли Google Play?

Нет, если есть сильный GitHub и apk, который собирается по README. Плюс, если стор есть и вы можете рассказать про трек, ревью, hotfix. Не публикуйте чужие данные ради строки «есть в сторе». Внутренний закрытый трек тоже считается, если опишете ограничение: «не публичный стор, сборка для менеджеров склада».

XML или Compose в 2026?

То, что в проде и на тестовом. Оба — только если оба защитите на доске. Не ставьте Compose в шапку с одного кодлаба: вакансия с Compose позовёт на экран, которого у вас нет. Честный XML-кабинет проходит слоты, где в объявлении «Jetpack, ViewModel», без обязательного Compose.

Нужен ли Dagger?

Если в проекте он есть и вы его трогали: модуль, скоуп, что ломалось при смене. Hilt и Koin — по факту. Ручной DI на junior допустим, если честно написано. Стена «Dagger/Hilt/Koin/Koin-Compose» без графа — шум и вопрос, на котором замолкнете.

Как описать белую сборку / flavor?

Как задачу: что отличалось в ресурсах, какие ошибки подписи, ваш кусок changelog, что не проходило ревью. Не «настраивал Gradle» без сути. Если flavor делал другой человек — не приписывайте. Можно: «собирал debug/release, подпись — через CI команды».

iOS в том же резюме?

Только если слот mobile и факты обеих платформ. Иначе Android-файл, iOS строкой или отдельно. Flutter в native-слот не маскируйте: вас снимут на первом вопросе про ViewModel и жизненный цикл Activity.

Тесты UI?

Пишите, если гоняете на CI или хотя бы на PR. Курс Espresso без прогона — нет. Юнит на ViewModel — плюс, если покрывали свой экран. «Знание тестирования Android» без факта не нужно.

Перед отправкой соберите проект с чистого клона. Если не собирается без вашей локальной sdk.dir магии — почините README. Мёртвый репозиторий в шапке хуже одной честной ссылки на apk.

Что сделать сейчас

Выберите одно приложение. Назовите Kotlin и два факта экрана. Вычеркните библиотеки, которые не разберёте за десять минут у доски. Проверьте, что ссылка открывается без VPN-квеста и без «сейчас подниму эмулятор». Play Billing и KMP уберите, если их не было.

Откликнитесь на одну вакансию Android с тем же стеком UI. Прогоните файл через разбор резюме и в письме дайте ссылку на приложение, не простыню Jetpack. Если слот Flutter или backend Java — это не этот файл.