Будни Android разработчика (ч.6. - С чего начать?)

Всем привет. Я снова на связи. С каждым разом перерыв между статьями всё больше, связано это с тем, что на мне сейчас висит 3 проекта. Плюс ещё стараюсь находить время для 2ух собственных. И даже на сон! Благо, с тайм менеджментом проблем у меня нету, так что времени на всё хватает.


Начиная с этой части, я буду придерживаться небольшого плана в этих статьях: первая часть - это замечательные истории связанные с моей работой, вторая - что-то непосредственно полезное для вас (пожелания приветствуются).


И так. Что я понял за последние несколько недель? Я голоден до денег. Если проект сулит мне потерю нескольких часов свободного времени и/или сна, но я всё-таки МОГУ его потянуть, то я, разумеется, возьмусь за него. Этот момент, меня в принципе устраивает. Пусть иногда и случаются перегорания, когда я на несколько дней пускаюсь во все тяжкие в плане отдыха. Всем советую, помогает разрядиться.


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


Помимо интересности, так же важен и уровень организации. Я конечно не националист, но (все самые интересные фразы начинаются с подобных слов) я ненавижу индусов (утрирую, разумеется, я за мир во всем мире). Сейчас я, к счастью, уже почти закончил один индусский проект. Изначально, я сделал им админ приложение, которое связывалось через Rest API с клиент приложением. Сделал всё очень красиво, аж слёзы счастья наворачивались смотреть на этот код. Потом мне предложили расширить функционал обоих приложений... На моё ушло примерно часов 5. С клиент версией мучаюсь уже вторую неделю. Вы когда-нибудь встречали программиста с болезнью Альцгеймера? Похоже я встречал. Не буду пускаться в слишком глубокие подробности проекта, но складывалось ощущение, что над приложением работало по очереди человека 3 как минимум до меня (на деле это было лишь один, как мне сказали его опыт был 5 ЛЕТ!! Вот вам и способ потратить 5 лет более бесполезно, чем пойти в университет).  Опыт в принципе забавный, но периодически полыхает на эту тему.


В противовес, не многим после начала этого проекта я начал работать с одним немецким заказчиком. Вернее сказать, продолжил, т.к. до этого сделал ему MVP (minimum viable product) приложение, и он решил продолжить разработку сего. Но как же он подошёл к организации! Полностью расписанное ТЗ (а не что-то абстрактное, дополняемое в рил тайме), готовый дизайн, доки по REST API (оно ещё не готово правда, но его нужно делать не мне!). Плюс цена полностью соответствует объёму работы. На таком проекте просто душа радуется работать. Как вы думаете, какой проект получается более качественным и стабильным на текущий момент? Разумеется. Это на заметку тем, кто собирается заниматься чем-то подобным. Никогда не жалейте денег на то, чтобы нанять хороших кадров. Скупой платит дважды, не забывайте.


Так, пожаловаться и наговорит всякой непонятной технической херни - есть.

Теперь можно и что-нибудь полезное рассказать. Сегодня, как и обещал, я дам вам, краткий экскурс о том, как лучше начинать учиться Android разработке.


Начнём с основы, без которой в этом деле нельзя - язык.

Здесь у нас есть 2 варианта: Java или Kotlin. В Google разводят всё больше хайпа вокруг Kotlin, не удивлюсь, если год спустя его сделают основным языком для Android разработки (коим на данный момент является Java). Учитывая тот факт, что Java 8 поддерживается только Android 7 и выше. Kotlin является куда более мощным инструментом разработки даже на данный момент (учитывая тот факт, что языки полностью взаимозаменяемы и могут использоваться одновременно в одном проекте).

Если у вас уже есть опыт Java разработке или, быть может, C#. Разумеется, вам предпочтительнее начинать выбрать Java. Иначе же, я бы рекомендовал попробовать Kotlin.

Я не буду полностью объяснять, что вам нужно учить, и как учить, т.к. тема слишком обширная. Так что на этом закончу с языками.


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


Следующим важным моментом является снова язык. На этот раз английский. Если хотите изучать Android разработку (да и что угодно связанное с программированием) вам нужен английский. Умение читать документацию, а так же статьи седобородых забугорных разработчиков поможет сэкономить тонну времени, а так же поднять свои навыки на новый уровень.


Теперь непосредственно к технической стороне:


Для начала нужно понять каким образом в принципе строиться Android приложение. Разобраться в жизненных циклах Activity и Fragmentов. Разобраться, как связывается логика, написанная на Java, с разметкой, написанной на XML.


Далее неплохо было бы осознать, как собственно работает XML разметка, разобраться с основными параметрами, как взаимодействовать с XML элементами из кода.


После разобраться с организацией ресурсов (strings, dimens, drawable, mipmap и т.д.). Нагуглить что это и зачем это нужно. Да, это, как и всё вышеперечисленное, следует гуглить самостоятельно. Не только потому, что мне лень было искать и проверять ссылки для каждого пункта, но и потом, что навык уметь самому гуглить информацию первичен здесь.


После этого советую прочитать несколько статей найденных по поисковому запросу "Android Development best practices". И готово, вы восхитительны!


На самом деле то, что вы после этого напишете, с вероятностью примерно 100% окажется полной хернёй. Но в этом то и дело. Следующее приложение окажется чуть менее ужасным. И так далее. В каждом новом приложении важно пытаться применить хотя бы одну новую практику (будь то технология или паттерн) и овладеть ею. Таким образом вы сразу получаете и портфолио и навыки. Помните, что нет и не будет одной волшебной статьи, которая сразу научит вас всему. Обучение - процесс долгий, требующий терпения и самоотдачи.


Ещё один важный момент здесь - не пытайтесь изобретать велосипед. Если вы хотите что-то сделать, посмотрите нет ли готовой библиотеки, которая позволит вам сэкономить время на процессе, если не полностью реализует нужную вам функцию. (Так я неделю мучался в своё время с оптимизацией отображения картинок, когда существовали такие замечательные решения как Picasso, Fresco и Glide). Хоть я и не хотел привязывать здесь никаких ссылок, но от этого примера не удержусь. Вот вам отличная сборка решений по Material Design, которые помогают сделать красиво и быстро - всё, как мы любим:

https://github.com/wasabeef/awesome-android-ui


Надеюсь, этот краткий (возможно даже слишком) экскурс кому-нибудь поможет.

Спасибо за внимание.


1 часть:

https://pikabu.ru/story/budni_android_razrabotchika_ch1_5261...

2 часть:

https://pikabu.ru/story/budni_android_razrabotchika_ch2__rab...

3 часть:

https://pikabu.ru/story/budni_android_razrabotchika_ch3__moy...

4 часть:

https://pikabu.ru/story/budni_android_razrabotchika_ch4__pro...

5 часть:

https://pikabu.ru/story/budni_android_razrabotchika_ch5__mob...