Привет, друзья!

Я Илья Попов, действующий senior android разработчик, ментор начинающих андроид-разработчиков и автор телеграм-канала Android Dev Notes.

10 лет назад я был неопытным самоучкой, пытающимся стать разработчиком.

И я на своём опыте знаю, что новичку непонятно, в какой последовательности что изучать, и когда можно считать себя готовым к реальной работе и собеседованиям.

Этот гайд — концентрация моего 10-летнего опыта работы, собеседований и менторинга андроид-разработчиков. В нём я постараюсь разложить всё это по полочкам, разбить по шагам с краткими понятными описаниями.


Итак, поехали! ?

Предположим, что вы никак не связаны с программированием, но по тем или иным причинам решили стать андроид-разработчиком, и устроиться на работу джуниором.

Верхнеуровневый план для этого в 2024 выглядит так:


? Этап 1: Освоить Kotlin и основы ООП

? 1.1: Переменные, типы данных, вывод в консоль

  • Как заводить переменные.

  • Какие есть типы переменных.

  • Как конвертировать разные типы друг в друга.

  • Как производить арифметические операции с разными типами и между ними, как выводить в консоль.

? 1.2: Отладка

Научитесь дебажить и принтлнами и дебаггером с точками остановки. Пока вы не научились асинхронности, дебаггер — ваш лучший друг.

? 1.3: Условия и ветвление: If-else, when, &&, ||

  • Изучаем условия if-else и when, их отличия и особенности.

  • Особенное внимание уделите отработке операторов && и || и ветвлению с этими операторами. Поиграйтесь как следует с этим, убедитесь, что понимаете каждый шаг программы — вы ведь уже умеете дебажить?)

? 1.4: Функции

  • Разберитесь с функциями: без параметров, с одним параметром, с несколькими параметрами, как их вызывать.

  • Разберитесь с областью видимости внутри и вне функции.

  • Функции с возвращаемыми значениями и без, как сохранять результат функции в переменную.

  • Как использовать if-else ветвление в функции в зависимости от переданного boolean аргумента и как вернуть разные значения в зависимости от этого аргумента.

? 1.5: Классы, экземпляры, датаклассы, объекты

  • Что такое свойства класса и как их инициализировать в теле класса.

  • Что такое конструктор класса и как в нём объявлять аргументы и инициализировать свойства.

  • Что такое экземпляр класса и как его создать и как добраться до его содержимого.

  • Какие области видимости переменных/функций и как их менять.

  • Как использовать функции и свойства класса.

  • Разберитесь, как передавать и использовать классы как параметры функций и классы как параметры в конструкторе классов.

  • Разберитесь, зачем ввели понятие датаклассов и в чём их плюсы и минусы.

  • Разберитесь, что такое объект, и чем он отличается от класса.

? 1.6: Списки, массивы, циклы

  • Что такое списки и массивы, какие бывают и чем отличаются.

  • Что такое циклы, как с их помощью перебирать элементы коллекции и доставать значения.

  • Как вызывать функции у элементов коллекции и распечатывать значения.

  • Как посчитать среднее значение коллекции целочисленных элементов.

Важное уточнение: не забегать вперёд и не использовать удобные экстеншны, если не можете их сами вручную написать.

? 1.7: Лямбда-функции

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

? 1.8: Наследование

  • Что такое наследование и полиморфизм и зачем они нужны.

  • Какие у наследования плюсы и минусы.

  • Как наследование влияет на области видимости родителя/наследников.

? 1.9: Абстрактные классы и интерфейсы

  • Чем абстрактный класс отличается от интерфейса.

  • Когда лучше использовать одно, а когда другое, и в чём плюсы и минусы.

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

? 1.10: Scope-функции

  • Изучаем let, run, also, with, apply: чем отличаются, когда что из них использовать.

  • Почитайте про нуллабельность, безопасный вызов и как let с этим помогает, и как строить безопасные цепочки вызовов.

? 1.11 Обработка ошибок

И на закуску почитайте про эксепшны и как их обрабатывать, кидать, отлавливать, и как сделать кастомные эксепшны.

? На этом знакомство с Kotlin можно считать оконченным, дальше можно продолжать его осваивать уже в контексте android-разработки.


? Этап 2: Разрабатываем несложное android-приложение

? Осваиваем основные компоненты и вёрстку

  • Что такое Activity, Fragment и их layout’ы.

  • Изучаем жизненный цикл Activity и Fragment: дебажим, сворачиваем-разворачиваем, закрываем приложение и смотрим, какие callbacks вызываются.

  • Тренируемся делать несложную вёрстку, вешать обработчики кликов на кнопки, вызывать всплывающие сообщения. Пока никаких сложных View типа ListView/RecyclerView: только разные layout-контейнеры, TextView, Button, EditText, RadioButton, Switch — ну и достаточно.

  • Наигрались — переходим к спискам: изучаем сначала ListView, потом RecyclerView, сначала с простых вариантов, потом постепенно усложняем. Очень важно максимально глубоко понимать принцип работы списков. Чем лучше поймёте — тем меньше потом будет проблем, потому что списки — основа огромного количества приложений.

  • Дальше познакомьтесь с ViewPager и как он влияет на жизненный цикл Fragments. Сильно не углубляйтесь.

  • Параллельно с освоением списков и усложнением вёрстки имеет смысл начинать изучать загрузку и отображение контента из интернета: осваиваем Retrofit для работы с сетью, Glide для картинок, Coroutines для асинхронщины. Пока никакой архитектуры, никаких ViewModels, Dagger и прочего, всю логику пишем во Fragments и Activities.

  • Когда начнёте работать с сетью, придётся покопаться и разобраться с парсингом ответа сервера и передачей кастомного контента между Fragments и Activities.

  • При подгрузке больших списков из интернета вам придётся разобраться с бесконечным скроллом списка и pagination — постраничной подгрузкой списка.


Полный гайд, в котором вы найдёте ещё 2 этапа, ждёт вас в моём телеграм-канале Android Dev Notes.

Удачи, друзья!

Комментарии (18)


  1. s_f1
    17.05.2024 17:26
    +3

    Как нарисовать сову в 2 этапа...


  1. Demon416
    17.05.2024 17:26
    +4

    Лучше написал бы что делать когда от андроид студии тошнит.

    Развели систем сборок на наши головы.

    В итоге по дефолту нифига не работает.


    1. strelkan
      17.05.2024 17:26
      +5

      Есть такое дело, особенно радует когда открываешь проект который год никто не трогал, а он уже не собирается - то ява не поддерживается, то совместимость сломалась, то градль не тот


    1. prohfessor
      17.05.2024 17:26

      Вот пример распознавалки речи под андроид. Один java файл, компиляция из командной строки, немного GUI


  1. kbnrjlvfrfrf
    17.05.2024 17:26
    +1

    10 лет назад я был неопытным самоучкой, пытающимся стать разработчиком.

    Только вот 10 лет назад действительно был довольно серьёзный резон становиться [Android] разработчиком. А сегодня, с сегодняшней конкуренцией и отсутствием перспектив, это уже глупость недалёких людей, схожая с судорожной покупкой акций после их гиперроста (станет ещё дороже, ога ога).


    1. ilyamodder
      17.05.2024 17:26

      отсутствием перспектив

      Да с чего бы? Россией мир не ограничивается.


      1. kbnrjlvfrfrf
        17.05.2024 17:26
        +1

        Как раз вне РФ всё ещё печальнее с разработкой - придётся конкурировать с толпами голодных индусов и китайцев.


        1. ilyamodder
          17.05.2024 17:26

          А почему в России не приходится? Не потому ли, что здесь настолько мало платят, что сюда ехать невыгодно?


          1. kbnrjlvfrfrf
            17.05.2024 17:26

            Потому что языковый барьер. А ехать нынче никуда и не надо - аутсорсы, удалёка.


            1. ilyamodder
              17.05.2024 17:26

              Ааа, ну если вы не знаете английского, то конечно будет казаться, что конкуренция высокая даже в РФ.


              1. kbnrjlvfrfrf
                17.05.2024 17:26

                Для работы на российский рынок не нужен английский. Для работы на российский рынок нужен русский. Это пока единственная причина почему Кумар и Раджа ещё не предложили свои услуги условному Сберу за весьма выгодный прайс. Хотя, наверняка, ушлые аутстаферы Сбера уже продумывают как порешать эту проблему и хорошо поднять лаве на этом.


    1. Zyzuchka
      17.05.2024 17:26

      Ну хз, вакансий много, а как мне кажется станет ещё больше.

      Как я это вижу:

      Рынок мобайла находится в начале роста т.к. большие рынки в Азии, Африке и ближнем Востоке ещё до конца не сформировались.

      В то же время в странах глобального севера (прости господи) стоимость разработкт приложений упала настолько, что всё менее крупные бизнесы могут себе позволить собственное приложение лояльности, например.

      Также придётся учить Java и Kotlin, то есть можно стать и беком потом, и фронтом впринципе.

      Короче, если оставаться hungry and foolish, то я уверен что всё получится.


      1. kbnrjlvfrfrf
        17.05.2024 17:26
        +1

        Рынок мобайла находится в начале роста т.к. большие рынки в Азии, Африке и ближнем Востоке ещё до конца не сформировались.

        Согласен. Азия, Африка и ближний Восток добавят ещё пару миллиардов полуголодных мобильных разработчиков.


  1. Zyzuchka
    17.05.2024 17:26
    +1

    Roadmap может и неплохой, но в телеге сплошные продажи менторства:(

    Я как начинающий разработчик хотел бы каких-то статей, новостей, разборов (кстати, буду рад если кто посоветует годные ресурсы по Java и Kotlin). Прохожу курсы Javarush и skillfactory, читаю Шилдта, но ищу именно доп источники информации в неформальном ключе.


    1. hetfieldan24 Автор
      17.05.2024 17:26

      Спасибо за отзыв :) Новости пока не планирую в канале, у меня другой формат. А вот мини-разборы разных кейсов присутствуют :) А по новостям – это скорее в канал android broadcast к Розову или в mobile developer к Гладкову.


    1. Rusrst
      17.05.2024 17:26

      del


  1. somagic
    17.05.2024 17:26
    +1

    Маловато будет, у меня в петербургском универе в бакалавриате на 3 курсе за 1 семестр курса мобильной разработки рассматривалось значительно больше вещей


    1. Georrg
      17.05.2024 17:26

      Неплохо, а какой у вас университет и какой год? Нам вот про мобилки ни слова никто не сказал, пришлось все учить самому