Чтобы стать Android-разработчиком, нужно освоить Kotlin, научиться собирать экраны и логику приложения в Android Studio, довести 1-2 собственных приложения до состояния, которое не стыдно показать (код в репозитории, тесты, сборка), и с этим портфолио идти на позиции junior или стажера. Диплом для этого не обязателен, но базовые знания программирования, Git и английский на уровне чтения документации нужны.
Содержание
- Какой язык учить: Kotlin, Java или кроссплатформа
- Что должен уметь junior Android-разработчик
- Минимальный пример: как выглядит логика экрана на Kotlin
- Дорожная карта: от нуля до приложения в портфолио
- Как искать первую работу
- Если не получилось: частые симптомы и что делать
- Выводы
- Где применяется / связь с практикой
- FAQ
Ниже — что именно учить и в каком порядке, какой проект положить в портфолио, как выглядит путь до первой работы и что делать, если на каком-то шаге все застопорилось. Обзор самой профессии мобильного разработчика (чем занимается, iOS или Android) — в отдельной статье о профессии мобильного разработчика, здесь речь только о пути в Android.
Какой язык учить: Kotlin, Java или кроссплатформа
Критерий выбора простой: на каком стеке вы хотите получить первую работу. Для нативной Android-разработки ответ — Kotlin: Google официально поддерживает его с 2017 года, а с 2019 года объявил подход Kotlin-first. Новые библиотеки Jetpack и документация пишутся в первую очередь под Kotlin, а современный UI-инструментарий Jetpack Compose работает только с Kotlin.
Java не исчезла: на ней написано много старых проектов, и читать Java-код Android-разработчику полезно. Но начинать с Java ради Android в 2026 году — это лишний круг.
| Стек | Язык | Когда выбирать | Что учесть |
|---|---|---|---|
| Нативный Android | Kotlin | Хотите работать именно Android-разработчиком | Основной путь, по нему дальше вся дорожная карта |
| Нативный Android (legacy) | Java | Команда поддерживает старый код | Учить как второй язык для чтения, не как первый |
| Kotlin Multiplatform | Kotlin | Нужна общая логика для Android и iOS | Надстройка над нативным Android, а не замена ему |
| Flutter | Dart | Цель — одно приложение под обе платформы | Отдельная специализация со своим рынком вакансий |
| React Native | JavaScript/TypeScript | Уже знаете веб-фронтенд | Нативные модули все равно требуют знания платформы |
Python, C# и C++ в этом списке нет намеренно. C++ используется в Android через NDK для игр, обработки звука и видео, но это узкая ниша, а не вход в профессию. Python для мобильной разработки остается экзотикой.
Что должен уметь junior Android-разработчик
Требования в вакансиях отличаются от компании к компании, поэтому ниже — типичное ядро, которое чаще всего проверяют на собеседовании. Это ориентир, а не закрытый список.
| Область | Что нужно уметь | Как показать в портфолио |
|---|---|---|
| Kotlin | null safety, классы и data class, коллекции, лямбды, sealed-иерархии | Чистый код без !! на каждом шаге |
| UI | Jetpack Compose: состояние, списки, навигация; читать XML-разметку | 3-5 экранов с навигацией между ними |
| Архитектура | ViewModel, однонаправленный поток данных, разделение на слои | Логика не лежит в UI-функциях |
| Асинхронность | Корутины, Flow, отмена работы при уходе с экрана | Загрузка данных без зависания интерфейса |
| Данные | Сеть (Retrofit/Ktor), локальная БД (Room), обработка ошибок | Экран «нет сети» и кеш |
| Жизненный цикл | Activity, поворот экрана, разрешения (permissions) | Состояние не теряется при повороте |
| Инструменты | Android Studio, Gradle, Git, отладчик, Logcat | История коммитов, а не один коммит «final» |
| Тесты | Unit-тесты на логику (JUnit) | Хотя бы тесты ViewModel |
Здесь полезно развести три близких понятия. Android SDK — набор библиотек и инструментов платформы. Jetpack — семейство библиотек Google поверх SDK (ViewModel, Room, Navigation, Compose). Android Studio — среда разработки, которая все это собирает через Gradle. Путаница между ними часто всплывает на собеседованиях.
Минимальный пример: как выглядит логика экрана на Kotlin
Современные Android-приложения строят экран вокруг состояния: экран в каждый момент показывает одно из заранее описанных состояний (загрузка, данные, ошибка). Ниже — та же идея на чистом Kotlin, без Android: ее можно запустить в любой среде с компилятором Kotlin.
data class Task(val id: Int, val title: String, val done: Boolean = false)
sealed class UiState {
object Loading : UiState()
data class Content(val tasks: List<Task>) : UiState()
data class Error(val message: String) : UiState()
}
fun render(state: UiState): String = when (state) {
is UiState.Loading -> "Загрузка..."
is UiState.Content ->
if (state.tasks.isEmpty()) "Список пуст"
else state.tasks.joinToString("\n") { t ->
(if (t.done) "[x] " else "[ ] ") + t.title
}
is UiState.Error -> "Ошибка: ${state.message}"
}
fun toggle(tasks: List<Task>, id: Int): List<Task> =
tasks.map { if (it.id == id) it.copy(done = !it.done) else it }
fun main() {
val tasks = listOf(
Task(1, "Выучить основы Kotlin"),
Task(2, "Собрать экран на Compose")
)
println(render(UiState.Loading))
println(render(UiState.Content(toggle(tasks, 1))))
println(render(UiState.Content(emptyList())))
println(render(UiState.Error("нет сети")))
println("Исходный список не изменился: ${tasks[0].done}")
}
Вывод программы (проверено в kotlinc 1.4.10 на JVM; в коде нет конструкций новее этой версии языка):
Загрузка...
[x] Выучить основы Kotlin
[ ] Собрать экран на Compose
Список пуст
Ошибка: нет сети
Исходный список не изменился: false
Что здесь важно для Android:
sealed class UiStateперечисляет все возможные состояния экрана. В реальном приложении ViewModel хранит такое состояние, а Compose-функция перерисовывает экран при его смене.toggleне меняет исходный список, а возвращает новый черезcopy. Последняя строка вывода это подтверждает: у исходной задачиdoneпо-прежнемуfalse. Compose замечает изменения именно по новому объекту состояния, поэтому неизменяемые данные — не вкусовщина, а условие корректной перерисовки (упрощенно: при изменяемом списке внутри того же объекта экран может не обновиться).whenпо sealed-классу проверяется компилятором на полноту.
Последний пункт стоит увидеть на ошибке. Скопируем файл в Bad2.kt и заменим функцию render версией без ветки is UiState.Error:
fun render(state: UiState): String = when (state) {
is UiState.Loading -> "Загрузка..."
is UiState.Content -> "..."
}
Результат — код не компилируется (вывод kotlinc 1.4; в Kotlin 2.x текст сообщения сформулирован иначе, но ошибка та же):
Bad2.kt:9:38: error: 'when' expression must be exhaustive, add necessary 'is Error' branch or 'else' branch instead
fun render(state: UiState): String = when (state) {
^
Исправление — вернуть ветку для Error (или добавить else, но тогда компилятор перестанет подсказывать о новых состояниях). Именно поэтому, когда вы добавите в приложение, например, состояние «Пустой поиск», компилятор сам покажет все экраны, где его забыли обработать.
Дорожная карта: от нуля до приложения в портфолио
Сроки ниже — ориентир для занятий примерно 10-15 часов в неделю при нулевом опыте программирования. С опытом в другом языке первые этапы идут быстрее. Каждый этап заканчивается конкретным артефактом, а не ощущением «вроде понял».
- Основы программирования на Kotlin (1-2 месяца). Переменные, функции, классы, коллекции, null safety, исключения. Артефакт: консольная программа на 200-300 строк, например учет расходов с сохранением в файл.
- Git и рабочее окружение (параллельно с первым этапом). Android Studio, эмулятор, Git, репозиторий. Артефакт: репозиторий с осмысленной историей коммитов.
- Первые экраны на Jetpack Compose (1 месяц). Верстка, состояние, списки, навигация между экранами. Артефакт: приложение из 2-3 экранов с локальными данными.
- Архитектура и асинхронность (1-2 месяца). ViewModel, корутины, Flow, однонаправленный поток данных, внедрение зависимостей (Hilt или Koin). Артефакт: то же приложение, переписанное так, что логика вынесена из UI.
- Сеть и хранение (1 месяц). Запрос к публичному API, разбор JSON, Room для кеша, обработка ошибок и отсутствия сети. Артефакт: приложение, которое работает и без интернета на закешированных данных.
- Тесты и сборка (2-4 недели). Unit-тесты ViewModel, подписанная release-сборка, README с описанием и скриншотами. Keystore и пароли к нему в публичный репозиторий не попадают: файл ключа — в
.gitignore, пароли — вне кода (например, вlocal.propertiesили переменных окружения), резервная копия ключа — отдельно. Артефакт: проект, который другой человек может склонировать и собрать в debug-варианте без ваших ключей. - Публикация (по желанию). Выложить приложение в магазин (Google Play, RuStore или другой). Это плюс в резюме, но не обязательное условие: у Google Play для личных аккаунтов разработчика, созданных после 13.11.2023, перед выходом в продакшен обязателен закрытый тест (на сентябрь 2026 — не менее 12 тестировщиков, подключенных 14 дней подряд), так что закладывайте на него время и заранее найдите тестировщиков.
Итого реалистичный срок до готового портфолио с нуля — порядка 6-12 месяцев. Быстрее бывает, но обещания «Android за месяц» обычно означают, что пропущены этапы 4-6, а именно их проверяют на собеседовании.
Какое приложение положить в портфолио
Лучше одно доведенное приложение, чем пять недоделанных по туториалам. Хороший портфолио-проект решает понятную задачу (трекер привычек, список покупок с синхронизацией, клиент открытого API погоды или фильмов) и показывает все слои из таблицы выше: несколько экранов, сеть, локальная БД, обработку ошибок, тесты. В README стоит коротко объяснить выбранные решения.
Как искать первую работу
Путь в профессию редко проходит через одну «правильную» вакансию junior. Чаще срабатывает один из вариантов:
- Стажировки и программы для начинающих в крупных компаниях: отбор конкурентный, но требования к опыту минимальные.
- Вакансии junior в продуктовых компаниях и студиях разработки: здесь смотрят на портфолио и тестовое задание.
- Внутренний переход: если вы уже работаете в IT (тестировщик, веб-разработчик), перейти в мобильную команду своей компании часто проще, чем с улицы.
На собеседовании junior обычно спрашивают основы Kotlin (null safety, data class, коллекции), жизненный цикл Activity и что происходит при повороте экрана, зачем нужна ViewModel, как работают корутины и как отменяется работа при уходе с экрана. Тестовое задание почти всегда — маленькое приложение со списком из сети и экраном деталей, то есть ровно то, что вы собрали на этапах 3-5.
Уровень зарплат и число вакансий сильно зависят от города, формата работы и текущего рынка, поэтому ориентируйтесь на свежие вакансии в своем регионе, а не на цифры из статей.
Если не получилось: частые симптомы и что делать
| Симптом | Вероятная причина | Что делать |
|---|---|---|
| Проект не собирается, Gradle sync падает | Несовместимые версии плагина Gradle, Kotlin и библиотек | Создать новый проект из шаблона Android Studio и сравнить версии; обновлять зависимости по одной |
| Эмулятор не запускается или очень медленный | Выключена аппаратная виртуализация или мало памяти | Включить виртуализацию в BIOS/UEFI, выбрать образ под архитектуру процессора, или отлаживать на своем телефоне по USB |
| Понимаю туториалы, но не могу написать сам | Пассивное обучение без своей задачи | Взять свой проект и делать его, возвращаясь к туториалам по конкретному вопросу |
| Приложение падает при повороте экрана | Состояние хранится в Activity или Composable без сохранения | Перенести состояние во ViewModel |
| Отклики на резюме без ответа | Портфолио из туториальных клонов или нет ссылки на код | Довести один проект до уровня из раздела о портфолио, добавить README и тесты |
Выводы
- Для нативной Android-разработки первым языком стоит брать Kotlin; Java полезна для чтения старого кода, кроссплатформенные стеки — отдельная специализация.
- Ядро навыков junior: Kotlin, Jetpack Compose, ViewModel и корутины, сеть и Room, Git, Gradle и базовые unit-тесты.
- Дорожная карта строится вокруг артефактов: консольная программа, приложение из нескольких экранов, затем тот же проект с архитектурой, сетью, кешем и тестами.
- Реалистичный срок до портфолио с нуля — порядка 6-12 месяцев при регулярных занятиях.
- Первая работа чаще находится через стажировки, тестовые задания с сильным портфолио или внутренний переход из смежной IT-роли.
Где применяется / связь с практикой
Освойте тему на практике
Самая трудная часть пути — этапы 4-6: архитектура, асинхронность и доведение приложения до уровня, который проходит код-ревью. Если хочется пройти их с разбором кода от практикующих разработчиков, а не только по документации, посмотрите курс «Android-разработчик. Базовый уровень». Чтобы сначала попробовать формат и темы, есть бесплатные открытые уроки Otus.
FAQ
Нужно ли высшее образование, чтобы стать Android-разработчиком?
Формально нет: большинство работодателей смотрят на портфолио, тестовое задание и собеседование. Профильное образование помогает с алгоритмами и основами компьютерных наук, но их можно освоить и самостоятельно.
Можно ли учиться Android-разработке на слабом компьютере?
Android Studio и эмулятор требовательны к памяти, комфортно работать от 16 ГБ ОЗУ и SSD. На машине слабее помогает отладка на реальном телефоне по USB вместо эмулятора.
Стоит ли сразу учить и Android, и iOS?
Для первой работы лучше глубоко освоить одну платформу. Общую логику для двух платформ позже можно добавить через Kotlin Multiplatform, а Swift и iOS — отдельный путь со своим набором навыков.



