Если вы из тех, кто еще не определился, где применять знания java, значит эта статья определенно для вас. В статье рассматривается такое направление, как android-разработка. История как я стал android-разработчиком. Советы и перспективы выбора android-разработки. Заходи!
Привет студентам JavaRush! Многие из вас уже имеют представление о том, в каких отраслях IT сферы используется наша с вами любимая java. Некоторые из вас, возможно, уже определились и сделали свой выбор. В этой статье я расскажу, как я стал Android-разработчиком. Объясню, почему считаю это направление самым перспективным. Дам понимание того, что из себя представляет android-разработка. И конечно же поделюсь советами для успешного старта карьеры Android-разработчика.

Начну с истории

Знаю по себе, что многим нравится почитать историю развития/успеха других студентов JavaRush. Это даже правильно иметь к этому интерес. Чужие ошибки, правильные поступки, переживания - все это может пригодится кому-то для принятия решения в реальной ситуации. Но также есть те, кому не особо-то интересны все эти рассказы. Ниже идет одна из таких историй, и ее прочтение зависит только от вашего желания =) Первое мое знакомство с android было летом 2016 года. На тот момент я не знал еще java в принципе. Из знаний был только опыт в университетском программировании первого курса на С/С++ и кое-какие знания в html/css верстке. В этом же году у меня появился первый смартфон под управление OS Android. Помню, как меня окутало дикое желание написать и запустить на нем свое приложение. Не теряя времени я начал исследовать. И оказалось, что основным языком программирования для разработки под android является java. Не отчаявшись, я начал смотреть обучающие видео, в которых рассказывалось как подготовить и настроить среду разработки. Просмотрев в интернете все курсы, которые на тот момент были в бесплатном доступе, самыми интересными и, по моему мнению, хорошо спланированными оказались Уроки Александра Климова. Пройдя 18 уроков где-то за 2 недели, я отправился в свободное плавание. У меня были свои идеи и вместе с гуглом я пытался их воплотить. Большую часть разработки я проводил в xml разметке - это визуальное представление экрана. Если появлялась необходимость редактирования непосредственно java кода, то я просто вбивал в гугл описание того, что хотел получить и копировал уже готовый код (чаще всего со StackOverFlow). Далее в Android Studio правил его до тех пор, пока он не будет работать. Такой не продуктивный подход дал мне ясно понять, что без знаний основ java я далеко не продвинусь. Спустя месяц моего познания Android, по стечению обстоятельств, мне предложили заняться разработкой android-приложений на фирме, где работал мой отец iOS разработчиком. Естественно ни о какой зарплате ни шло и речи, это была добровольная практика, и в случае, если мой код будет на что-то пригодный его оставят в конечном продукте. Так и произошло, за месяц я более-менее разобрался в xml верстке и смог сделать редизайн многих экранов одного из приложений. Владелец фирмы сообщил мне, что результат моей работы был успешно продан заказчику и выдал мне вознаграждение в размере 100$. Так я остался работать в этой фирме на очень, прям ну очень маленькой зарплате, но с возможностью учиться на реальных проектах. Копаясь днями в этих проектах, и не без помощи добрых сотрудников, я разобрался в java и в основных моментах android-разработки. Так месяц за месяцем я совмещал учебу в университете с учебой на работе. Весной 2017 года я узнал о проекте JavaRush от моей одногруппницы, она приобрела подписку и прошла большую часть курса. Мне стало интересно, и я решил попробовать. Прохождения бесплатной части JavaRush было для меня, по большей части, в исследовательских целях, т.к. мой уровень знаний был выше целевой аудитории курса. Также для меня было очень важным структурировать свои знания, т.к. в свое время я это упустил, метаясь от темы к теме. Знаете, пройдя 10 уровней и выполнив все задачи, я получил наслаждение, как от прочтения очень хорошей книги! В знаниях наконец-то все стало по своим местам. Не стал двигатся дальше из-за отсутствия времени, а также из-за того, что многие темы ранее были хорошо изучены. Сейчас продолжаю работать все в той же фирме уже на более высокой ставке и с улыбкой вспоминаю свои смешные задачи в самом начале пути. Мотивацией написания статей является конкурс, а также необходимость структурировать свои знания и желание поделится ими, что я и сделал в своей предыдущей статье про Reflection API.

Почему android-разработка перспективное направление для начинающего java-программиста?

Начну с описания общей картины того, что представляет из себя android-разработка и какие знания необходимы для начала.
Среди всех направлений, в которых основным техническим инструментом является java, android-разработка самая нетребовательная к знаниям конкретно этого языка программирования. Многие возможности java в android не используются в связи с их ненадобностью, а многие из них вообще были исключены в определенных версиях gradle сборщика. В связи с этим порог вхождения по знаниям, непосредственно java, на уровне пройденых JavaRush курсов: java core и java syntax. Конечно не стоит забывать о понимании многопоточности, здесь такой опыт будет очень кстати. С такими знаниями java вы будете чувствовать себя вполне уверенно. Пройдемся по UI (User Interface) части android’a. Верстка или расположение элементов приложения осуществляется при помощи xml слоев. Здесь вам необходимо комбинировать различные теги чтобы получить ожидаемый результат. Если вы имели дело с html версткой, то освоитесь довольно быстро. Но даже если html вам не знаком, то сложного в этом ничего нет, а количество материала на эту тему в интернете предостаточно. Пример xml разметки в IDE Android Studio:
Далее, немаловажным моментом является знание и понимание системы контроля версий git. Сложно представить разработку android-приложения без этой технологии. Но и здесь не нужно быть advanced специалистом. Вам, как новичку, редко когда придется выполнять сложные манипуляции с вашим репозиторием. Также, если вам чуждо использование терминала и постоянный ввод каких-то команд, а использование git’a подразумевает именно это, то есть популярная графическая оболочка SourceTree, которая нарисует все ваши ветки и даст четкое понимание где вы находитесь. Что ж, теперь поговорим о перспективах выбора направления android-разработки. Несмотря на вышесказанное, за довольно низким порогом вхождения в изучение android’a скрывается целая гора возможностей и путей развития! Android OS довольно быстро развивающаяся платформа. Практический каждый год выходит новая версия, которая несет в себе новые фичи для пользователей и разнообразные плюшки для разработчиков. В связи с этим ваша работа никогда не превратится в рутину поддержки какой-то определенной стабильной версии, всегда будет что-то новое, всегда будет куда двигаться. Например, не так давно Google объявили kotlin официальным языком разработки под android. А также представили новую архитектуру android-приложения с использование паттерна проектирования MVVM (Model-View-ViewModel). Не стоит забывать о популярности платформы:
В плане карьерного роста вам не придется постоянно кодить сначала за одну зарплату, а через некоторое время за другую и т.д. В последнее время популярна такая должность, как архитектор, задачей которого является курирование и проектирование приложений, продвигая свое видение его архитектуры. При должных знаниях паттернов проектирования для вас будут открыты и эти двери. Большое количество гаджетов и устройств под управлением android говорит о том, что необязательно писать только мобильные приложения. Можно заниматься разработкой программ для часов, телевизоров, автомобилей и даже холодильников! Как видите перспектив очень много, и этот список можно продолжать, но боюсь объем статьи выйдет итак не маленький. Но чтобы воплотить все эти возможности в реальность, я хочу поделиться с вами некоторыми советами. Как уже говорилось выше, android развивается с приличной скоростью, и многие элементы разработки попросту устаревают. Не тратьте свое время на их изучение. Скорее всего на замену таким уже пришли новые, лучше посвятите свое время на изучение более современных подходов. Всегда слушайте советы тех, кто дольше вас работает в этой сфере, порой некоторые советы ценнее любой информации в гугле. А также не бойтесь просить совета у таких людей. Найдите себе источник дополнительной информации по миру android, например дайджесты статей мобильного разработчика на хабре или других популярных айти сообществах. На этом буду заканчивать. Надеюсь, моя статья помогла вам представить мир android-разработки, и вы вынесли для себя немного полезного =) Пишите свои feedback'и в комментарии или поддержите лайками. Всем спасибо и удачи в любых направления java!