Резюме 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 секунд
- Kotlin-продукт или учебный ToDo на Java 2019 года?
- Есть ли приложение в сторе / репозиторий с архитектурой, а не один Activity?
- Сеть, БД, фон, авторизация — или только вёрстка?
- Flutter/React Native в шапке при слоте native?
- Грейд: пет-проект на слот с многомодульностью и 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 — это не этот файл.