Skip to content

Latest commit

 

History

History
421 lines (298 loc) · 24.8 KB

File metadata and controls

421 lines (298 loc) · 24.8 KB

Рекомендации от Контура для Android-разработчиков

Ниже представлен roadmap от Android-разработчиков Контура. Этот roadmap не претендует на абсолютную правду и является субъективным мнением авторов. По такому пути мы шли сами и хотели бы видеть таких коллег рядом.

Roadmaps

Здесь представлены популярные маршруты знаний от разных авторов. Их цель – дать представление об Android-разработке и помочь сориентироваться в умениях и навыках.

Level 1️: Intern

Стажер должен обладать знаниями, чтобы пройти порог входа в профессию программиста и в промышленную разработку. Эти материалы помогут попасть на твою первую стажировку в компанию, пройти испытательный срок и получить опыт в Android-разработке.

Kotlin

Почему Kotlin, а не Java?

В 2021 году уже нет большого смысла учить Java как первый язык программирования (ЯП). Если сравнить ЯП с ездой на машине, то Java – это отечественный УАЗ на механике. Проедет везде, но удовольствия мало. Kotlin – иномарка на автомате. Идеальный вариант, чтобы учиться и ездить с комфортом в большом городе. Но это не значит, что не нужно учить JVM (Java Virtual Machine)

  • Объявление переменных, типы данных. Понимать разницу между val и var.
  • Логические выражения: if/else, when, while, for
  • Базовые коллекции: ArrayList, LinkedList,HashMap, LinkedHashMap,HashSet, ArrayDeque
  • Модификаторы доступа. Определяют откуда функция будет доступна для вызова. Например, некоторые функции можно скрыть для всех классов кроме того, в котором она объявлена. Это помогает в соблюдении принципа инкапсуляции.
Функции, классы, интерфейсы и объекты
  • Классы: обычные, data, sealed и enum.
  • Интерфейсы
  • Объекты

Источники

  • Официальная документация RUS | ENG
  • Playground, чтобы попробовать Kotlin
  • CodeWars или CodinGames, чтобы порешать задачки и держать себя в форме

Android

  • Activity и Fragments.
    Это специальные классы, которые позволяют управлять экранами приложения. Активити – это один из базовых компонентов android-приложения, который предоставляет экран, с которым пользователи могут взаимодействовать, чтобы что-то делать. Фрагмент представляет поведение или часть пользовательского интерфейса в Активити.

  • The Activity lifecycle и Fragment lifecycle.
    У приложения в целом, и у каждого экрана в отдельности есть свой жизненный цикл. С его помощью разработчики могут управлять поведением приложения, когда пользователь его открывает, закрывает, или переворачивает телефон

  • Xml разметка.
    Файл, описывающий внешний вид экрана

  • Context.
    C помощью этого класса можно взаимодействовать с системой Android

  • SharedPreferences.
    Самый простой способ постоянно хранить данные в памяти. Данные хранятся по принципу «ключ - значение»

  • AndroidManifest.xml.
    Файл, в котором указываются название приложения, его иконка, версия, разрешения, стартовая Activity и другие базовый компоненты приложения.

  • Gradle.
    Это система сборки проекта. В файлах gradle можно указать минимально поддерживаемую версию Android, подключить сторонние библиотеки, настроить правила, по которым будет собираться проект

  • RecyclerView.
    Компонент для оптимизированной работы со списками данных

  • Паттерн MVVM.
    Один из самых популярных презентационных паттернов в Android, который позволяет отделить бизнес логику от пользовательского интерфейса.

Работа с сетью
  • JSON – текстовый формат обмена данными, в основном используется для обмена данными между клиентом и сервером

  • Библиотека Retrofit Помогает создать интерфейс для работы с API. Потренироваться в ее использовании можно на бесплатных API, например, здесь

Базы данных

Источники

Курсы на Pluralsight

Git

Git – это одна из популярных систем контроля версий.

Нужно уметь в базовые команды
  • git init
  • git clone
  • git remote add
  • git add
  • git commit
  • git reset
  • git branch
  • git checkout
  • git merge
  • git rebase
  • git push
  • git fetch
  • git pull

Источники

Принципы ООП

Принципы объектно-ориентированного программирования (ООП) помогают разделить код, дробя его на сущности, объединенные общей функциональностью.

Если следовать этим принципам, повторяющегося кода будет меньше, добавлять новые функции станет проще.

Источники

Level 2️: Junior

Junior-разработчик – полноценный член команды разработки. Он пишет понятный, читаемый код. Хорошо знает язык, легко использует его стандартные методы и конструкции. Может самостоятельно проектировать задачи средней сложности.

Kotlin

Функции
  • extension fun, infix fun, inline fun, operator fun
  • Generics
Синтаксический сахар

Так называют приятные мелочи языка, которые позволяют писать более простой и красивый код:

  • Функции для работы с коллекциями: forEach, map, flatMap, filter, sort, reduce, groupBy, orEmpty, getOrElse
  • Именованные аргументы
  • Single abstract method
  • Высокоуровневые функции и лямбды
  • Destructive declaration
  • Labels
  • let, apply, also, with

Android

Разделение зон ответственности между разными компонентами приложения
  • Изучил архитектурные паттерны MVP, MVVM, MVI
Паттерны проектирования
  • Factory
  • Singleton
  • Decorator
  • Facade
  • Command
  • State
  • Srategy
  • Observer

Источники: раз, два

  • Работа с сетью
    • Иметь представление в каком виде приходят данные с сервера. Как проходит сериализация и десериализация
    • Библиотека OkHttp (встроена в Retrofit)
  • Навигация между фрагментами/активити Cicerone, Jetpack navigation
  • Многопоточность
    • Kotlin coroutines
    • RxJava
  • DI

Dependency injection – внедрение зависимостей. Помогает писать менее зависимый код, значительно упрощает написание тестов.

Самые популярные библиотеки для внедрения зависимостей на Android это Toothpick, Dagger2, Koin, Hilt

  • Service Locator Service Locator - паттерн, используемый для получения зависимостей из общего хранилища. Отличается от DI тем, что самостоятельно не создает компонент, то есть не вызывает его конструктор.
  • Single Activity (дописать) Отличная статья про Single Activity
  • Clean Architecture (Чистая архитектура). В ее основе чистое ядро и доменные сущности, независимые от платформы и фреймворков
  • Тестирование приложения
    • Unit-тесты Тестируют отдельные классы и методы. Самые популярные библиотеки – JUnit, Mockito.
    • UI-тесты. Тестируют работу приложения в целом, имитируя действия реального пользователя. Библиотеки для UI тестов - Espresso, Kaspresso, Kakao
  • Material Design - дизайн нативных android-интерфейсов, разработанный Google

Android Studio

  • Debug-меню. Инструмент в Android Studio, упрощающий нахождение багов в приложении
  • Отладка приложений
  • Hotkey - с их помощью можно быстро переименовывать файлы, названия переменных, классов или методов. Можно увидеть все использования функции или класса, и много чего еще - ссылка
  • Эмуляторы - эмулирует Android на компьютере. Это полезно, если нужно проверить работу приложения на определенной версии системы, или на устройстве с большим/маленьким размером экрана. Позволяет задавать практически любую конфигурацию - менять версию Android, размер экрана, эмулировать камеру, местоположение.

ООП

  • SOLID Принципы SOLID помогут лучше понять ООП и применять его правильно

Git

  • Нужно уметь использовать консоль и\или UI-клиент Fork
  • Нужно уметь работать с удаленным git-репозиторием
    • Уметь подключать к проекту хостинги git-репозиториев, например GitHub или GitLab
    • Умеет делать merge request и решать merge conflict, знает про stash и cherry-pick.

Источники знаний

Телеграм-каналы
Книги
Курсы
Статьи

Level 3️: Middle

Middle-разработчик может сам спроектировать приложение, настроить среду и CI/CD. Имеет не только основные, но и смежные знания. Обучает стажеров.

Софт-скиллы

  • Умеет ставить задачи
  • Умеет аргументировать свою позицию
  • Адекватно воспринимает критику, исправляет ошибки
  • Умеет давать обратную связь

Хард-скиллы

CI/CD

Концепция непрерывной интеграции и доставки

Работа с устройством
  • GPS
  • Камера
  • Гироскоп
  • NFC
  • Микрофон
  • Датчик света
  • otg-порт
Сервисы Google
  • Firebase
  • Google Maps
  • Google Play
  • Google Pay
Безопасность
  • Proguard, D8, R8
  • Keystore
Android Jetpack
  • Databinding
  • Compose
  • CameraX
Сервисы Google
  • Firebase
  • Google maps
  • Google Play
  • Google Pay
Kotlin Multiplatform (KMP)

Kotlin Native Targets/Source sets Compose Multiplatform

Знаешь эти инструменты

Источники знаний

Level 4️: Senior

Roadmap

  • TeamLead Roadmap – как развиваться самому в качестве TeamLead. Roadmap от Егора Толстого.