ANDROID DEVELOPER
Научитесь кодить на Kotlin и создавайте мобильные приложения для системы Android с нуля.
Александр Мазуренко
Senior Android Developer в GlobalLogic

30 занятий
[по понедельникам и четвергам]После курса вы сможете кодить на Kotlin, проектировать приложения с нуля, писать под них бэкенд и фронтенд, интегрировать внешние сервисы и тестировать функционал.
чтобы выучить первый язык программирования Kotlin, научиться писать бэкенд & фронтенд для мобильных приложений и начать карьеру в ІТ
чтобы изучить современные подходы к разработке мобильных приложений, научиться работать с Android Studio и изменить направление деятельности
чтобы научиться разрабатывать приложения для Android с нуля, создать собственный пет-проект для портфолио и получить профессию, актуальную следующие 15–20 лет

• 8/10 смартфонов работают на операционной системе Android. Это означает, что рынок нуждается в специалистах, которые будут поддерживать существующие приложения и разрабатывать новые.
• Систему Android широко используют не только на смартфонах, но и в smart-вещах (IoT): от автомобилей до «умных» утюгов и стиральных машин.
• Приятные финансовые перспективы: Junior-разработчик получает в среднем $ 900, Middle — $ 2700, Senior — $ 5000. После этого курса вы получите квалификацию Junior Android Developer.
• Результат всегда можно показать, сбросить друзьям или родителям и сказать «смотри, это моя работа!»
• Есть вероятность, что ваше приложение будут использовать сотни тысяч пользователей.
Изучите базовый синтаксис языка Kotlin, овладеете принципами объектно-ориентированного и реактивного программирования.
Научитесь проектировать Android-приложения, тестировать собственный код, интегрировать различные сервисы и загружать медиафайлы в приложение.
С нуля создадите приложение для поиска достопримечательностей в заданном радиусе и формирования оптимального маршрута и настроите интеграцию с Google Maps.
Получите разбор часто задаваемых вопросов на собеседованиях от лектора, а также 4 видеоурока от нашего HR-отдела с рекомендациями по оформлению CV, портфолио, профилю на LinkedIn и общению с рекрутерами.

- Рассмотрите инструменты, которые будете изучать на курсе.
- Ознакомитесь с бинарным кодом и основными принципами работы вычислительных машин.
- Узнаете, что такое компилятор и в чем состоит главная задача разработчика.
- Поймете преимущества языков программирования, которые используются Java Virtual Machine.
- Ознакомитесь с особенностями языка Kotlin.
- Научитесь запускать простой код на Kotlin.
- Изучите основные типы данных на Kotlin.
- Разберете разницу между var, val и const.
- Поймете значение функции main().
- Ознакомитесь с основными типами операций на Kotlin.
- Изучите конструкции if-else и when, а также разберете особенности их использования.
- Создадите программы добавления и вычитания простых чисел с использованием операторов ввода-вывода.
- Узнаете, в каких случаях нужно использовать циклические конструкции.
- Научитесь различать forEach, forEachIndexed, while и их задачи.
- Научитесь пользоваться Ranges — более простым и понятным механизмом для реализации циклических задач.
- Изучите особенности массива и рассмотрите примеры его использования.
- Узнаете, что такое индексация элементов массива.
- Поймете, как работает оперативная память при создании различных типов и массивов и как происходит доступ к отдельным элементам массива на аппаратном уровне.
- Научитесь создавать массивы, добавлять, обращаться и удалять элементы массива.
- Узнаете, как пользоваться строчным типом данных String, и изучите основные операторы для работы с ним.
- Узнаете, что такое класс и объект.
- Разберете принципы объектно-ориентированного программирования (ООП): подражание, инкапсуляция, полиморфизм.
- Научитесь писать extended function для готовых классов.
- Узнаете, как использовать интерфейсы, когда необходимо добавить отдельные методы, не входящие в базовый класс.
- Рассмотрите паттерн dependency injection и поймете, как он помогает реализовывать прозрачную композицию.
- Научитесь различать зависимости is-a и has-a и поймете преимущества композиции над подражанием.
- Научитесь писать extended-функции для дальнейшего упрощения процесса разработки.
- Разберете основные структуры данных и узнаете, какие преимущества у каждого в зависимости от задачи.
- Научитесь использовать готовые функции для обработки коллекции: итерирование, маппинг, фильтрацию и трансформацию.
- Научитесь реализовать исключение.
- Узнаете, как и почему возникла система Android.
- Разберете преимущества и недостатки системы Android.
- Установите Android Studio и разберете основные компоненты Android-приложения: Activity, Service, BroadcastReceiver, ContentProvider, Android Manifest.
- Узнаете, как работает и какой жизненный цикл имеет компонент Activity.
- Научитесь добавлять UI-элементы в Activity и отслеживать нажатие.
- Узнаете, для чего использовать систему контроля версий при разработке.
- Установите и настроите Git.
- Научитесь различать состояния файлов в репозитории, переключаться между комитами и откатывать изменения в заданный комит.
- Узнаете, как создавать новые ветви и удаленные репозитории, как загружать и выгружать данные.
- Изучите основные лейауты и разберете кейсы их использования.
- Научитесь изменять параметры UI-элементов в зависимости от требований, анализировать дерево UI-элементов и добавлять зависимости в файл build.gradle.
- Узнаете, как использовать основные параметры ConstraintLayout.
- Узнаете, как запустить одну Activity в другой через Intent.
- Разберете разницу между Explicit и Implicit Intent.
- Изучите особенности использования Bundle при передаче информации через Intent.
- Научитесь пользоваться ADB (Android Device Bridge) и отправлять через него Intent и другие базовые команды.
- Осознаете значение многопоточности для приложений с пользовательскими интерфейсами.
- Рассмотрите основные способы предотвращения race condition и синхронизации переменных.
- Разберете преимущества Executors над прямым запуском threads.
- Узнаете, как взаимодействует UI-поток с Event Loop.
- Научитесь запускать задачу в отдельном потоке и передавать ее результат в главный поток.
- Изучите основы обмена данными через http/https-протокол.
- Научитесь выполнять веб-запрос в отдельном потоке и выводить его результат.
- Научитесь выполнять запрос на получение изображения, преобразовывать его в Bitmap и отображать в UI-элементе.
- Освоите библиотеки для отображения и трансформации изображений Glide и Picasso.
- Овладеете библиотеками Retrofit и OkHttp для веб-запросов.
- Научитесь различать основные виды интернет-ответов.
- Узнаете, как трансформировать JSON-объекты.
- Научитесь включать GsonFactory в цепочку обработки Retrofit, запускать асинхронный запрос через Retrofit, применять и писать собственные интерсепторы для OkHttp.
- Овладеете фреймворком RxJava для оптимизации работы с многопоточностью.
- Узнаете, как отобразить список данных с помощью ListView.
- Ознакомитесь с паттерном Adapter.
- Научитесь использовать RecyclerView.
- Получите скилы работы со встроенными анимациями.
- Поймете, зачем нужен юзер-флоу.
- Научитесь передавать информацию между несколькими фрагментами, добавлять фрагменты как статически, так и через контейнер.
- Узнаете, как делать альтернативную разметку для планшетов и других девайсов с большим экраном.
- Поймете, почему при изменении конфигурации утрачиваются данные.
- Рассмотрите основные способы хранения данных при изменении конфигурации.
- Научитесь использовать ViewModel как элемент MVVM-архитектуры.
- Узнаете, как сохранять данные при закрытии приложения и восстанавливать состояние приложения при повторном открытии.
- Разберетесь в видах и типах баз данных.
- Узнаете, как построить SQL-запрос на базу, и изучите основные операторы.
- Научитесь осуществлять обзор баз данных с помощью встроенных плагинов или других программ.
- Научитесь целесообразно использовать сервис или отдельный поток в отношении поставленной задачи.
- Ознакомитесь с возможными ограничениями в работе сервиса.
- Рассмотрите WorkManager как альтернативу Service.
- Научитесь имплементировать нотификации и выводить в них результаты работы.
- Узнаете, что такое корутины, и поймете, в чем их преимущество перед другими способами выполнения асинхронных задач.
- Научитесь запускать корутины и параллельное выполнение нескольких задач в корутине с выводом конечного результата.
- Получите скилы рефакторинга кода.
- Узнаете, что такое Dependency Injection.
- Овладеете библиотекой Koin для Dependency Injection на Kotlin.
- Научитесь рефакторить приложение с помощью библиотеки Koin.
- Овладеете библиотеками Dagger 2 и Hilt.
- Рассмотрите разновидности тестирования.
- Научитесь использовать библиотеки JUnit и Mockito для unit-тестирования.
- Освоите библиотеки Espresso и UI Automator для тестирования пользовательского интерфейса.
- Научитесь пользоваться библиотекой Room для тестирования базы данных.
- Ознакомитесь с методологией Test Driven Development, когда сначала пишут тесты, а затем код, соответствующий тестам.
- Узнаете, как анимировать параметры UI-элементов с помощью ObjectAnimator.
- Научитесь организовывать хореографию анимации с помощью AnimatorSet и реализовать переходные анимации между фрагментами.
- Освоите библиотеки Dynamic Animation и Motion Layout для создания анимаций.
- Узнаете, как добавлять сервисы в приложение.
- Зарегистрируете аккаунт в Firebase.
- Научитесь использовать встроенную систему регистрации и логина в собственном приложении.
- Научитесь реализовывать простой бэкенд с помощью Firebase Realtime Database.
- Узнаете, как добавить Google-карты в собственное приложение.
- Узнаете, как воспроизводить аудио- и видеофайлы в приложении.
- Освоите библиотеку ExoPlayer для воспроизведения медиаконтента.
- Научитесь интегрировать media session для дальнейшего расширения функциональности приложения.
- Ознакомитесь с современным декларативным способом разработки пользовательских интерфейсов.
- Ознакомитесь с современным декларативным способом разработки пользовательских интерфейсов.
- Разработаете приложение для определения интересных мест в заданном радиусе и формирования оптимального маршрута с интеграцией с Google-картами.
- Представите приложение лектору и коллегам.
- Узнаете, о чем спрашивают Junior/Trainee Android Developers на собеседованиях.
- Получите рекомендации от лектора по самопрезентации.