Pull to refresh

Как стать Android разработчиком в 2023

Reading time6 min
Views103K

И так, давайте начнем с того, что должен знать и уметь человек, чтобы стать Android разработчиком? Скиллсет будем смотреть по вот этому Roadmap

  1. Язык. Kotlin

  2. Основные компоненты Android

  3. Верстка

  4. Работа с сетью

  5. Работа с БД

  6. Работа с многопоточностью

  7. Работа в фоне

  8. Виды архитектур

  9. DI

  10. Анимации

  11. Тестирование

  12. GIT

  13. Agile, таск-треккеры, документация

Далее будет разбор каждого из пунктов с курсами/книгами/материалами для изучения. Это будет моя личная субъективная подборка, не является рекламой)

Kotlin

Каждый год я делал подобные статьи и всегда писал, что нужно изучать Kotlin, с оговоркой, что есть Java и начинать нужно с нее и, кажется в 2023 году Java уже практически полностью потеряла актуальность в Android разработке. Проектов на Java уже не осталось, но на собеседованиях деды все еще любят поспрашивать "А как оно там работает?". Практической пользы в изучении Java стало меньше, но это все еще очень полезно для общего понимания.

И так, как изучать Kotlin? Есть два основных ресурса https://kotlinlang.org/ и его аналог на русском https://kotlinlang.ru/ . Для того чтобы изучать язык даже не потребуется компьютер, потому что у языка есть отличный Playground, который позволяет запускать программы в браузере и оттачивать свои навыки даже с мобильного телефона. Вам необходимо полностью проштудировать эти ресурсы.

Так же очень полезно будет просмотреть этот видео-урок про Kotlin.

В формате книги наиболее актуален "Kotlin in action" Дмитрий Жемеров, Светлана Исакова.

Основные компоненты Android

Основных компонентов в Android 4 -- это Activity, Service, Broadcast Receiver, Content Provider. Называются они основными, поскольку они могут являться точками входа в ваше будущее приложение. Нам нужно разобраться что они делают и для чего они нужны.

Про работу Activity и прочих UI компонентов рекомендую это видео.

Про работу Service -- видео.

Content Provider -- урок на StartAndroid и официальная документация.

BroadcastReceiver -- урок на Fandroid.

Со всеми компонентами нужно попрактиковаться и посмотреть как они работают.

Верстка

Сейчас переломный момент -- существуют два подхода к верстке: XML и Compose. В моменте, практически все проекты все еще написаны на XML и Compose сейчас можно встретить довольно редко в коммерческой разработке, но тут все динамично меняется и, думаю, к концу года уже большое количество компаний будет использовать оба подхода либо уже полностью перейдут на верстку через Jetpack Compose

Для изучения подхода к верстке через XML отлично подойдет это видео.

Для изучения Compose лучше всего подойдут официальные туториалы от Google, Видео-курс Алексея Гладкова, а так же вот такой репозиторий с кучей полезных ссылок для изучения Compose.

Работа с сетью

Существует несколько подходов к построению сетевого взаимодействия: REST, SOAP, RPC, GraphQL. В вашем проекте может использоваться любой, но чаще всего это будет REST. Обязательно нужно изучить базовые концепции этого подхода. Исчерпывающей статьи на эту тему у меня нет, поэтому тут придется погуглить и почитать все подряд для того, чтобы сформировались общие знания. Для более базового понимания как все это работает советую изучить Сетевую модель OSI.

И так, на проекте у вас скорее всего будет REST и одна из основных Android-библиотек: либо Okhttp+Retrofit, либо Ktor.

Видео по Okhttp+Retrofit

Видео по Ktor BE+Android

Так же вам нужно будет изучить как работает сериализация в Android. В чем разница Serializable от Parcelable и попрактиковаться с одной из библиотек, которая позволяет сериализовать Json в Kotlin и наоборот. Библиотек много, но по факту все делают примерно одно и тоже, но с разной степенью эффективности. Названия библиотек -- Kotlin Serialization, Gson, Jackson. В целом, для изучения особой разницы нет -- берите любую

Работа с базой данных

В андроид есть две основные БД: Sqlite (Room), Realm. Google продвигает библиотеку Room, а значит скорее всего на своей потенциальной работе вы скорее всего будете использовать именно его.

Видео урок по базовым концепциям SQL и работе с Room

Серия уроков по работе с Room от Start Android

Базово этих знаний будет достаточно для разработки, если вы хотите понять как все это работает значительно глубже советую отложить себе в закладки книжку с кабанчиком. Небольшой спойлер - для новичка она будет неподъемной, и вы будете возвращаться к ней и перечитывать еще несколько лет подряд, после того как найдете работу.

Работа с многопоточностью

В Android есть три основных подхода к многопоточности: нативные Thread, RxJava, Kotlin Coroutines. Здесь вам нужно обязательно выучить базовые концепции многопоточности. Выбор между RxJava и Kotlin Coroutines довольно сложный, в идеале надо на базовом уровне уметь пользоваться обеими библиотеками, поскольку компании все еще используют разные подходы, и универсального решения тут нет.

Видео по базовым концепциям многопоточности и корутинам

Курс по корутинам от Кирилла Розова

Видео по RxJava

Книга для изучения базовых концепций:

Работа в фоне

Важно изучить способы запуска задач фоново через Service и Workmanager, методы обмена данными между этими задачами и основным приложением, а так же ограничения, которые есть в системе Android. Видео-урок на эти темы.

Виды архитектур

Это самая холиварная тема, архитектур довольно много, универсального и правильного решения нет -- каждый развлекается как он хочет. Вам важно разобраться в базовых концепциях MVC/MVP/MVVM/MVI, понять как они работают и попрактиковаться в реализации. Видео-урок об основных архитектурах. После просмотра рекомендую зайти на Github и в просто скачать основные реализации по поисковым запросам MVP Android, MVVM Android, MVI Android etc. Так же нужно разобраться с основными концепциями SOLID, DRY, KISS, Clean Architecture и основными паттернами программирования.

DI

В Android довольно много реализаций Dependency Injection: Dagger, Hilt, Koin, Toothpick, ручное создание DI через фабрики. Я считаю, что правильнее всего разобраться с Dagger, это наиболее сложная реализация, но если вы поймете эти концепции, разобраться как работают другие библиотеки -- труда не составит.

Ссылочки -- Обзорное видео по основным DI библиотекам, Курс по Dagger 2, Видео об внутреннем устройстве Dagger 2.

Анимации

Чаще всего эту тему опускают, потому что в большинстве компаний нет времени на укарашалки в виде анимаций и, скорее всего, для старта можно эту тему изучать и вернуться к ней чуть позже, но, в любом случае, моя задача предоставить материалы для изучения.

Видео по анимациям Android c XML

Видео по анимациям Android с Jetpack Compose

Тестирование

Аналогично предыдущей теме, с написанием Unit/UI тестов вы стоклнетесь только, если придете в достаточно крутую компанию, которая уделяет время качеству приложений. В небольших командах на 2-5 разработчика, чаще всего написание тестов экономически нецелесообразно, поэтому в очень многих компаниях тесты практически не пишут

Видео урок про тестирование в двух частях Part 1 и Part 2

GIT

Обычно для начала работы достаточно разобраться с базовыми операциями -- clone, pull, checkout, add, commit, push, cherry-pick. Просто заводим приватный репозиторий на Github и пробуем выполнять все команды

У Git-a есть прекрасная документация, где есть абсолютно все, что нужно

Agile, таск трекеры, докментация и тд

Чаще всего у компаний свое представление и реализация Agile/Scrum, поэтому об этом вам скорее всего уже расскажут, после того как вы устроитесь на работу. Базовые концепции Scrum можно прочитать вот в этой книжке:

Либо в более короткой версии Scrum guide.

Таск треккеры, сервисы документации -- некоторые компании требуют чтобы у вас был опыт работы с Jira, Confluence, Trello и тд. Какой в этом практический смысл -- не знаю, вся задача разработчика при работе с таск-трекером это своевременно двигать задачки из колонки слева в колонки справа. Какие-то более сложные настройки на старте вам все равно не доверят, поэтому советую просто запустить любую демо версию таск-трекера и посмотреть какие функции у него есть. По сервисам документации -- аналогично, вести в них документацию не сложнее, чем писать ее в Word.

Практика

И теперь самое важное, мы изучили все теоретические материалы и теперь нам нужно отточить практические навыки. Работодатель будет требовать от вас примеры работ, но где их взять? Начать стоит с разработки стандартных приложений -- Cinema App, Weather App, Currency Converter etc. Для этого идем на Behance (либо любой другой сервис с дизайн макетами), вводим там одно из вышеперечисленных названий и ищем макеты. Находим открытую API платформу, ссылок тут уже не будет -- если вы изучили все вышеперечисленное и дошли до этого момента, то скорее всего вы справитесь с этой задачей без моей помощи :)

Берем API, берем макеты и начинаем кодить! Пробуем реализовывать разные подходы, все это оставляем в своем портфолио на Github, когда вы пойдете на собеседование и вас попросят реализовать тестовое задание, то у вас скорее всего уже будет готовая реализация на их задачу и вы сразу же будете в более выгодном положении на фоне других кандидатов.

По ходу изучения всего этого материала, вы, однозначно, столкнетесь с кучей разнообразных проблем -- это нормально, все мы когда-то сидели и тупили над элементарными вещами. Главное делать, практиковаться и не останавливаться

Для тех, кто дочитал до конца, хотел бы запустить небольшой эксперимент: вы делаете любой тестовый проект -- я помогаю его вам доработать до приемлемого состояния. Не знаю какой будет спрос, но на всякий случай ограничиваю первыми пятью, кто разработает приложение и напишет мне в Telegram.

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 14: ↑12 and ↓2+14
Comments33

Articles