Сегодня разберем с чего начинать изучение Android-разработки и как найти первую работу.

Для создания все новых и новых мобильных приложений компаниям нужны талантливые разработчики: профессия востребована, и специалистам готовы платить. По статистике зарплатного сервиса «Мой Круг», разработчики с опытом от 2 лет получают 50 000 ? 100 000 рублей в регионах, 90 000 ? 160 000 в Москве. Для сравнения, веб-разработчикам платят 50 000 ? 110 000 рублей. Программисты, которые работают на иностранные компании, получают больше.

Плюсы Android-разработки


Распространенность. В сентябре 2018 Android занимает 75% рынка смартфонов, iOS — 24%.

Разнообразие устройств. Можно писать приложения для смартфонов, планшетов, умных часов, музыкальных систем и телевизоров.

Дешевле оплата аккаунта. Чтобы публиковать мобильные приложения в Google Play, разработчик платит $25 один раз. Аккаунт Apple Developer стоит $99 в год.

Android — OpenSource проект. Исходный код системы доступен для всех. Можно посмотреть как сделана та или иная функция. Документация встроена прямо в код в комментариях, ее можно посмотреть прямо в IDE.

С чего начать изучение Android-разработки


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

Изучите основы программирования


Базовые знания HTML и CSS. Выучите синтаксис языков и терминологию, чтобы грамотно формулировать вопросы и быстрее искать на них ответы. Например, эффективнее искать в Google не скругление углов у кнопки, а cornerRadius — поисковик выдаст больше релевантных ответов.

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

Принципы работы HTTP и REST. Это протоколы взаимодействия приложений с окружающим миром — другими приложениями и сервисами, например, серверами в интернете. Их нужно осваивать, чтобы понимать, как приложение взаимодействует с другими сервисами и получает информацию из них.

Разница между языками программирования. Компьютер не различает, в чем была написана программа — он выполняет машинные коды. Языки программирования были созданы для разработчиков. У них много общего — почти во всех есть функции, переменные, классы, массивы. Если вы знаете, как использовать их в одном языке, при необходимости сможете перейти на другой. Язык нужно выбирать под решение конкретной задачи, например, для мобильной разработки стандарт — Java.

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

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

Освоить все сразу при обучении не получится, навыки придут с практикой и будут постоянно совершенствоваться.

Основы объектно-ориентированного программирования. Одна из основных идей Java-разработки, которая заключается в следующем. Все предметы или явления реального мира можно представить в программе в виде совокупности их свойств и выполняемых действий. Разрабатывать программу проще, когда вы понимаете: приложение — объект, любое окно в нем — объект, свойства — высота, ширина и цвет фона, методы — рисование изображения, добавление элементов.

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

Изучите среду Android


Графические элементы приложений. При создании интерфейса приложения не нужно писать код с нуля, достаточно использовать готовые блоки — View. Существуют разные виды блоков:

  • для отображения текста;
  • для отображения изображений;
  • для размещения на экране других элементов.

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

Файловая система Android. Ее нужно освоить, чтобы оптимизировать работу приложения и научить его запускаться каждый раз не с чистого листа, а сохранять свое состояние между перезапусками. Также файловая система позволяет обмениваться данными с другими приложениями, например, загружать фотографии из галереи.

Жизненный цикл Android-приложения. Когда пользователь будет работать с вашим приложением, может поступить звонок, прийти СМС или другое приложение выведет уведомление поверх окна. Для таких случаев нужно прописать поведение программы, например, сворачивание окна, паузу, сохранение текущего состояния или уменьшение громкости звука. Если не настроить жизненный цикл приложения, использовать его будет неудобно.

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

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

Работа с сенсорами и тачем. Освойте класс SensorManager, чтобы научить приложение взаимодействовать с датчиками в смартфоне — акселерометром, гироскопом, датчиками расстояния и освещения.

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

Все перечисленное — только основы Android-разработки. Также придется освоить библиотеки кода, научиться работать с разными версиями OC Android. Когда будете писать первое приложение — понять суть этапов разработки от изучения документации до тестирования и дебаггинга, релиза, техподдержки и обновления.

Освойте инструменты разработки


Основной инструмент разработки приложений — Android Studio. Программа состоит из двух частей:
Визуального редактора. Здесь можно задавать расположение графических элементов будущего приложения вручную, например, перетаскивать кнопки.

Редактора кода. В нем пишут, что нужно сделать при нажатии кнопки, увеличении или уменьшении экрана, скроллинге. Писать код можно на любом языке, например, Java или Kotlin.

Подробную видео-инструкцию по скачиванию и установке смотрите здесь.

С чего начать карьеру


  • Решайте задачи по Java. Найти их можно на тематическом сайте Javarush, в квестах Java Syntax, Java Collections, Java Core и других. Работайте над задачами ежедневно, чтобы освоить язык.
  • Переходите на более сложные проекты — разрабатывайте лабиринты, змейку, словари и публикуйте на GitHub. Так вы будете собирать портфолио и сможете показать его работодателю.
  • Выкладывайте приложения из GitHub на Google Play. Даже если у программ не будет тысяч скачиваний, ссылки на них можно указать в резюме.
  • Изучите вакансии и посмотрите, какие библиотеки используют в компаниях. Освойте Glide, Retrofit, Room, Fabric — с ними работают многие работодатели.
  • Выберите потенциального работодателя и идите на собеседование как Junior. Если вас не возьмут на работу сразу, порекомендуют, что изучить и какие пробелы в знаниях и навыках заполнить.

Частые вопросы новичков


Нужно ли знать английский, чтобы стать Android-разработчиком


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

Можно ли научиться разрабатывать мобильные приложения самостоятельно.


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

Нужно ли знать математику и получить профильное образование.


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

Нужно ли знать все об Android наизусть.


Не нужно, но важно уметь задавать вопросы в поисковике и искать на них ответы в документации, на профильных сайтах и форумах. У разработчиков большое сообщество, опытные программисты помогают новичкам. Документация есть в Android Studio, получить полезную информацию можно там.

Что общего у Android с HTML, CSS, Javascript


Мобильная и веб-разработка — разные отрасли. Но если вы знаете языки HTML, CSS, Javascript и понимаете принципы программирования, перейти в Android будет проще.

Можно использовать не Java, а другие языки


Использовать Javascript, Python, C# и другие альтернативные языки стоит, только если решение оправдано, поможет сэкономить время и деньги. Большинство сложных приложений, где нужно взаимодействие с аппаратной платформой телефона, лучше писать на Java или Kotlin. Именно с Java начинают обучение на курсах, так как язык самый распространенный.

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


  1. gudvinr
    27.09.2019 00:36
    +1

    Минусы Android-разработки:


    • Распространенность. Большее количество пользователей приводит к большему количеству неадекватных пользователей. Тем более, распространённость говорит о том, что порог входа низкий (и доход приложений на Android ниже такового на iOS).
      Плюс ли это?
    • Разнообразие устройств. Больше времени приходится тратить на отладку и поддержку разных устройств с разными версиями Android.
      Плюс ли это?
    • Дешевле оплата аккаунта. Больше конкуренции и больше приложений низкого качества.
      Плюс ли это?


    1. advance
      27.09.2019 07:19

      Большее количество пользователей приводит к большему количеству неадекватных пользователей
      Их хватает и в AppStore. Тут больше вопрос о ЦА Вашего продукта.
      и доход приложений на Android ниже такового на iOS
      Если говорить о прямых продажах. Но такая модель монетизации подходит далеко не каждому продукту. Да и без продуманной модели высокого дохода Вы не получите ни в одном из сторов.
      И потом если не говорить о собственных продуктах- хорошие штатные Android-разрабы имеют вполне неплохие ЗП.
      Больше времени приходится тратить на отладку и поддержку разных устройств с разными версиями Android
      Смотря что разрабатывать. Если это глубоко прикладное приложение, приложение на стороннем фреймворке или приложение, которое интенсивно работает с аппаратной частью — Вам нужно его отлаживать не только под разные версии ios но и под разные модели iphone и ipad. Так же как и на Android. О подключаемых девайсах уже и речи вести не имеет смысла- их много на обеих платформах.

      А если говорить о разработке обычных приложений- сегодня такая потребность на Android возникает редко и совместимость стала сильно лучше. Достаточно иметь в парке пару-тройку девайсов. Да и мало кто сегодня пишет новые проекты с поддержкой Android ниже 5.

      Ну и прямота рук тоже здесь играет немалую роль)
      Больше конкуренции и больше приложений низкого качества
      Конкуренция сегодня высокая и в AppStore и в GooglePlay. Особенно с учетом патентных блокировок.

      А качество- чем его измерить? Красивый интерфейс? Есть куча типов приложений, которым он не нужен. Производительность? Она везде примерно одинаковая. Отказоустойчивость? Ну неустойчивые до высоких полок сторов не добираются.

      Нельзя сегодня вот так просто опубликоваться в App Store или Google Play и снять все сливки. Количество усилий, которое нужно приложить к продукту, на обеих платформах сегодня примерно одинаковое.


  1. romangoward
    27.09.2019 02:01

    К счастью, есть замечательные бесплатные курсы от Google на Udacity по разработке под Android, которые должны оберегать юные умы от подобных сответчиков :-}


  1. FForth
    27.09.2019 03:09

    | Использовать Javascript, Python, C# и другие альтернативные языки стоит,
    | только если решение оправдано, поможет сэкономить время и деньги.

    А, подробнее чем данные языки (подходы) не приемлемы? :)

    P.S. Автору эти советы уже помогли и есть код, который не стыдно показать работодателю?


    1. advance
      27.09.2019 07:41

      Автор не пишет, что они не приемлемы. Тут речь скорее о кроссплатформенных решениях. Они хорошо подходят в случаях, если Вам нужно быстро прощупать рынок, либо если Ваш проект достаточно прост, либо если Вы пишете игры.
      Если говорить о серьезной долгосрочной разработке, то такие решения- не лучший вариант так как страдает выходное качество. Потому здесь натив и Kotlin- более удачные решения.


  1. Guitariz
    27.09.2019 09:05

    Класс, копипаста с Netology
    На техтрейне рассказывал с упосмминанием этой статьи доклад, а можно было оказывается просто пересказать.


  1. 402d
    27.09.2019 10:05
    +1

    fortrader.org/eto-interesno/moment-dzhozefa-kennedi-ili-istoriya-o-chistilshhike-obuvi.html

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

    Все эти призывы вступить в программисты, для меня такой же тревожный звонок.
    Пузырь зарплат скоро лопнет.

    2. Учить программированию выгоднее чем писать самому.
    3. Английский важен
    4. Вы все равно будете второго сорта и конкурировать придется с индусами.
    5. Если Вы белый мужчина традиционной сексуальной ориентации, то Вам будет сложно при релокации


    1. petrovichtim
      27.09.2019 12:21

      Боюсь Вас разочаровать, пузыря нет.


    1. Plesser
      27.09.2019 13:13

      Истории о пузыре зарплат для программистов и что скоро она станет не такой востребованной я слышу с середины 90-х. Скоро в моей памяти она займет равное место, с историей о том что рухнет доллар


      1. 402d
        27.09.2019 13:35

        я начал программировать до развала СССР. Разброс в зарплатах инженер и по отраслям можно считать отсутствовал.
        Можно было от новичка ровно расти до крутого специалиста.
        Сейчас нельзя говорить о программистах обобщенно.
        В зависимости от стека (языка, специализации, опыта) очень широкий разброс зарплат.
        А вот расти от новичка до высокооплачиваемого стало труднее.

        Также не забываем о количестве рабочих мест. Раньше было много местного значения предприятий и разных контор. Количество юрлиц в России сокращается.
        Меньше стало мест куда можно устроится. Меньше стало клиентов у продуктовых
        компаний. Выживаем за счет работы на заграницу, конкурируя с разработчиками из Индии. Рабочие места для программистов практически сосредоточены в 5 городах.


        1. Plesser
          27.09.2019 13:54

          Вырасти от новичка до высокооплачиваемого специалиста можно, но реализация данного желания подразумевает не только ваше желание/возможность учиться но и готовность переехать туда, где рост есть.

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


          1. 402d
            27.09.2019 14:02

            Шаг в сторону я сделал два года назад.
            И именно в сторону Андроида.
            Сперва 2 месяца читал учебник.
            Потом месяц писал альфу.
            Выложил в плей.
            Полгода приложение практически не пользовалось спросом.
            Потом за 14 месяцев его развития вышел на 20к установок в месяц.
            По доходу даже сейчас не компенсируется четверти времени, что я на него трачу.
            Все делается в личное время. Продолжаю за оклад пилить на PHP.

            Приложение в топ гроссинг своей категории в 14 странах на позициях от 50 до 200.


            1. Plesser
              27.09.2019 14:56

              Ну вот я сейчас в свободное время пилю Android и Data Science. При этом я рассматриваю это как просто свои инвестиции в мое будущее, не более того.
              Какого то четкого бизнес плана у меня нет.
              ЗЫ
              За оклад пилю Oracle.


            1. advance
              27.09.2019 15:53

              Если оно действительно топ гроссинг, при этом не окупает Ваш труд, то тут есть 4 варианта
              1. У Вас невыгодная (для Вас) модель монетизации
              2. Вы плохо продвигаете приложение и высокие позиции бестселлеров оно занимает на рынках с низкой прибылью
              3. Возможно Вы переоцениваете свой труд. Возможно (если у Вас всего 2 года опыта) профессиональные разработчики справляются с задачами, аналогичными Вашему проекту, сильно быстрее и от того такая работа стоит дешевле чем Вам кажется
              4. А может ниша Вашего приложения просто не востребована


              1. 402d
                27.09.2019 16:16

                Деньги в плее не лежат ровным слоем.
                Есть большая разница
                1) Страна
                2) Рубрика / Тематика
                3) Доходы от первого места к 500 не падают линейно.
                Есть рубрики в которых 1$ покупки достаточно для входа в топ-100

                Ниша узкая. Имхо я собираю в ней половину возможного трафика.
                Конкурентов 7. Остальные 50-70 просто мусор.