В рубрике «Советы сеньоров» на DOU.UA опытные специалисты делятся практическими советами с джуниорами — общие лайфхаки по обучению, какие книги и ресурсы читать, какие навыки осваивать и многое другое. В этом выпуске сеньоры говорили об Android-разработчиках.
Никита Кравцов, Senior Android-разработчик в Depositphotos
9 лет опыта
Для достижения успеха в любой профессии необходимо тяжело работать, иметь терпение и получать удовольствие от процесса. Поэтому, к сожалению, у меня нет для вас рецепта быстрой «прокачки» ваших навыков. Как Android-разработчик, я решил поделиться своими мыслями, которые могут помочь вам в профессиональном развитии.
Не пренебрегайте возможностью изучать внутренний код фреймворка. К примеру, в процессе разработки собственного класса FlowLayout разработчик первоначально хотел реализовать данную задачу на RelativeLayout. После изучения исходников FrameLayout/LinearLayout/RelativeLayout разработчик реализовал задачу на классе ViewGroup.
Начните читать код других разработчиков. Большинство начинающих разработчиков пренебрегают чтением чужого кода и фокусируются на решении задач в рамках приобретенных знаний. Если вы хотите стать лучше и писать более эффективный код, вам просто необходимо читать код других разработчиков.
Начните писать свои приложения. Помимо чтения кода, начните писать и развивать собственные продукты. Ставьте себе невыполнимые задачи и решайте их.
В споре рождается истина. Хорошим плюсом будет возможность опубликовать свои разработки и дать возможность другим разработчикам прокомментировать ваш код.
Всегда будьте up-to-date. Подпишитесь на рассылку новостей или официальный канал и получайте обновления о новых библиотеках и продуктах, следите за выходом новых версий прошивки.
Начните с малого. Невозможно изучить все за короткий промежуток времени, поэтому вам необходимо научиться выделять важное из большого объема информации, а не стараться запомнить все и сразу. Начните с малого и медленно расширяйте свой кругозор. Старайтесь разбивать большие задачи на более мелкие.
Разделяй и властвуй. Большинство начинающих разработчиков стараются держать всю логику и код в Activity или Fragment, превращая данные классы в огромные объекты, которые тяжело читать и поддерживать. Если вы хотите писать более эффективный код, вам необходимо понимать, что такое архитектурные паттерны (MVP, MVVM) и дизайн-паттерны.
Дьявол кроется в деталях. Часто разработчики теряют интерес к задаче после реализации ее сложной части. Обращайте внимание и выделяйте больше времени на реализацию деталей при выполнении сложных задач.
В процессе разработки программного обеспечения я руководствуюсь документацией или вспомогательными ресурсами, которыми хотел бы с вами поделиться:
- Java. Для начала вам необходимо досконально изучить язык и все его тонкости. Учитывая направленность этой статьи, я не буду углубляться в подробности, но как минимум, помимо базовых знаний, вам необходимо понимать и применять «Software Design Patterns». В процессе своей работы я пользуюсь ресурсами Javatpoint, Sourcemaking и Tutorialspoint.
- Google’s official Android Developer site. Отправная точка для любого Android-разработчика. Является наиболее полным пособием при разработке Android-приложений. Это один из лучших и самых актуальных ресурсов.
- Official Android Developers Youtube channel. Официальный видеоресурс с новостями, лучшими практиками и руководствами, который постоянно пополняется новыми материалами. Достаточно часто выход новой feature (к примеру, Architecture components) сопровождается выходом видео. Одно из преимуществ ресурса — возможность повышения знаний во время проезда в городском транспорте.
- The Busy Coder’s Guide to Android Development. Достаточно обширный ресурс-шпаргалка для разработчиков. Оформлен в виде книги и обладает большим количеством примеров по разработке Android-приложений. Примеры из книги вы сможете найти здесь.
- Stack Overflow. Один из самых популярных ресурсов для разработчиков многих направлений. Stack Overflow не содержит документации для обучения или целенаправленных инструкций, но является наиболее популярным местом, где разработчик сможет найти решение специфических проблем, возникающих при разработке программного обеспечения.
- AndroidWeekly. Еженедельная рассылка новостей. Рассылка представляет собой набор статей, инструкций, примеров кода, подкастов, презентаций и видео на Android-тематику.
- Google Material Guidelines. Официальный ресурс с рекомендациями к дизайну пользовательских интерфейсов.
Ростислав Антонов, Lead Software Engineer в EPAM Ukraine
15 лет опыта в IT, из них 8 лет на Android
Android не дает скучать. Он держит в тонусе разработчиков, которые постоянно изучают много новых идей и приемов. Хочу порекомендовать проверенные на своем опыте подходы и ресурсы для прокачки скиллов. Ни для кого не секрет, что делать это нужно постоянно. Также не забывайте следить за новинками и максимально тестируйте все, что появляется. Собственный опыт и ошибки приносят результат. Итак, перейдем к конкретике.
Следите за новинками индустрии. Android — это динамично развивающаяся операционная система. Ежегодно Google проводит конференцию Google I/O, где презентуются новые вещи, которые будут включены в платформу. Кроме этого, на мероприятии есть возможность для общения, дискуссий и обмена опытом. Ближайшая конференция состоится 8-10 мая 2018 года. Следить за событиями можно на Youtube-канале Google Developers.
Читайте тематические ресурсы — именно на них можно почерпнуть интересующую вас информацию. Например, Habrahabr. В свою бытность начинающего разработчика я практически жил на этом ресурсе. Поглощал все, что связано с программированием, тестированием и работой напрямую с «железом». Обратите внимание на специализированный хаб Разработка под Android — это кладезь полезной информации. И, конечно же, не забываем про наш родной DOU.
Регулярно проходите онлайн-курсы. Очень рекомендую ресурс Udacity. Это бесплатная платформа дистанционного обучения. Она возникла в результате расширения программы по информатике Стэнфордского университета в 2012 году. Сможете абсолютно бесплатно пройти курсы и тренинги, которые позволяют получить теоретические знания и набить руку на практике, выполняя задачи в онлайне за определенное время. Можно сделать несколько разных приложений, которые помогут развить определенные скилы в Android-разработке и попробовать себя в этом деле.
Погрузитесь в сайт Developer Android. Он содержит много полезной информации (в том числе на русском языке). Там же можно пройти все обучение для разработчиков, начиная с того, что вообще из себя представляет Android-платформа, ее основные компоненты, как с ними взаимодействовать, как их правильно использовать, что не нужно делать. Я с удовольствием читаю блог на этом ресурсе. Он регулярно пополняется практическими материалами.
Не забывайте, что Android — это своя особенная культура. Вы должны жить и чувствовать эту культуру, в которой масса различных мобильных устройств: начиная от часов и телефонов, заканчивая приставками и телевизорами. Очень часто при разработке приложений важно иметь разные скиллы в тестировании из других сфер, потому что нужно провести хотя бы базовую автоматизацию, проверить работоспособность приложения и т. д. Важно не только писать для Android, но и понимать, что ты пишешь.
Александр Зубченко, Android Lead в Waverley
8 лет опыта разработки под Android
Раз уж ты здесь и читаешь советы Senior Android-разработчиков, то ты таки решил погрузиться в мир боли и страдания виртуальных Java-машин. На самом деле нет, но иногда тебе будет так казаться, когда твой код замечательно работает на эталонном Nexus, а на топовом Samsung Galaxy у заказчика лезут баги. Решить эту проблему поможет сила убеждения. Да-да, нужно убедить заказчика купить нормальный Nexus-смартфон, и баги исчезнут! Звучит довольно просто, вот только для этого тебе нужно хорошо знать английский язык. Да уж, но без него никуда.
Прошли те времена, когда РМ, как любящая мама, ограждал(а) разработчиков от вредных и приставучих заказчиков. Увы, система так больше не работает. Знания английского на уровне чтения документации уже недостаточно, тут нужен крепкий Intermediate, а лучше Upper-Intermediate. В общем, пункт номер раз — английский язык. It’s a must, period. И да, тебе нужен не просто разговорный английский, но и «технический разговорный» — собеседования на английском никто не отменял.
Хм… заказчик все еще не хочет менять телефон?! Тогда копнем глубже… возможно, курсы по НЛП? Нет, это не пойдет — компания отказывается их оплачивать! Вернемся во времени и посмотрим, с чего все начиналось…
Пункт номер два. Ты решил изучать программирование, а с чего начинается любое обучение? Правильно — с книг, со чтения документации. Если я в свое время учил Android исключительно по книгам, то сейчас книги точно отошли на второй, если не на третий план. Книга долго пишется, а SDK быстро меняется. А вот в официальной документации обычно все up-to-date! И вот здесь я бы рекомендовал зайти в раздел гайдов на Developer Android и пройти/изучить все интересующие тебя разделы.
Ты — дитя современности и не любишь читать, а предпочитаешь смотреть/слушать? Тогда Udacity (или любые другие онлайн-курсы) — это твой выбор. Вот здесь — отличная подборка видеокурсов различного плана, и самое главное — они бесплатные. Но без пункта номер раз (это который про английский язык) тебе к ним дорога закрыта.
Пункт номер три. Кроме Android-специфичных техник, ты обязан владеть базовыми, основополагающими знаниями по программированию: ООП и ООД, работа с сетью, Web, шаблоны проектирования ПО, структуры данных и алгоритмы, построение баз данных.
Пункт номер четыре. Очень желательно изученный материал закреплять каким-то заданием. Придумай для себя проект твоей мечты и постепенно иди к нему. И здесь в твоих пытках (да-да, я не опечатался) и попытках тебе всегда поможет Stack Overflow — без него никуда. Зарегистрируйся на биржах фриланса и попытайся найти того несчастного, кто будет отдавать свои кровные за твои баги! Ты научишься планированию, декомпозиции, самодисциплине, возможно, возненавидишь программирование и узнаешь много новых английских (и не только) слов, сказанных заказчиком в твой адрес.
Пункт номер пять. Хорошо, доки читаешь, видео обучающие смотришь, пытаешься подрабатывать… Что же дальше? А дальше нужно погружаться в среду, в информационное поле, следить за тенденциями. Необязательно все знать досконально, но быть в теме — важно. И в этом тебе помогут:
- Видео с конференций Google I/O, DroidCon. Выбери наиболее тебя интересующие и просто скачай их с YouTube на телефон/ноут и смотри, когда хочешь. Это и плюс к карме разработчика, и плюс к прокачке английского языка.
- Заходи на Android Developers Blog — там публикуются анонсы, гайды, релизы.
- Подпишись на рассылку самого «вкусного» за неделю — AndroidWeekly.
- Зарегистрируйся в Medium и подпишись на интересующих тебя публицистов/сообщества, к примеру ProAndroidDev.
- Подпишись на тематические Youtube-каналы, к примеру Android Developers, Google Developers.
- Общайся с другими разработчиками, получай знания/информацию из соседних областей.
Пункт номер шесть. Та-а-акссс, ну теперь ты загружен по полной и каша в голове! Отличненько! Иногда много информации — это хуже, чем отсутствие информации, согласись. Поэтому заведи свою базу знаний — Knowledge Base (KB). Лично у меня это Evernote, где я по тегам раскидываю интересные статьи, куски кода. Изучая новую (для себя) технологию/фичу/либу, старайся получить информацию о ней больше, чем из одного источника. Лучшие материалы можно сохранить в свою KB, чтобы потом не рыскать по интернетам в поисках той самой статьи, где очень хорошо и подробно с примерами все было написано.
Пункт номер семь. Если ты в программирование всерьез и надолго, то очень важно, чтобы оно не стало рутиной, а было любимым хобби. Это ж круто целыми днями (а может и ночами) заниматься хобби и получать за это деньги! Уму не постижимо! А чтобы хобби не стало рутиной:
- Учи то, что тебе интересно. Если тебе нравятся алгоритмы, то прокачивай этот скилл. Интересует создание игр — изучи OpenGL и все, что связано с созданием игр. Это огромный пласт информации и не только из IT-сферы.
- Важно регулярно (а вот как регулярно — у всех индивидуально) делать level-up умений: выучить и применить (помнишь проект своей мечты?) что-то кардинально новое, технологию или новый язык программирования, который ну прямо-таки меняет фсьо! К примеру: RxJava, Dagger, новые Architecture Components by Google. Это и зарядка для ума, и пунктики в твое резюме.
- Найди IT-спеца/публициста/блогера, который бы тебе импонировал, и подпишись на него. Для меня в свое время такими людьми стали: Reto Meier (архитектура, компоненты приложения), Chet Haase (GUI, анимации), Colt McAnlis (алгоритмы, сжатие данных).
Итак, теперь ты хорошо кодишь на Java… молодец! Можешь ее забыть (шучу! старушка Java всегда пригодится на каком-нибудь проекте на саппорте) и начать учить Kotlin. Если год-полтора назад он скромно стучался в домик к зеленому человечку, то сейчас это инструмент, поддерживаемый Google и уверенно вытесняющий Java. Нужно знать Kotlin. Что тебе теперь надо сделать? Правильно — подписаться на Kotlin Weekly (ты уже смышленый, знаешь, как это делается ;)). И дальше по уже знакомому тебе списку: официальная документация (она там отличная), видео на Youtube, чуток саморекламы, Medium-подписки и прочее.
Вернемся туда, откуда мы начали… Ух ты, а приложение-то твое работает как нужно и на православном Nexus`е и на корейском Samsung`е! Ой, да ты уже и не в захудалой конторке работаешь, которая снимала подвальное помещение, где не было отопления зимой, а в солидной компании. И рутинный код ты пишешь все реже, а по большей части — самые важные/вкусные куски приложения. Achievement Unlocked: «Ты — Senior!».
И напоследок парочка life-tips:
- Не хватайся за Android Wear/TV/Auto, как бы ни хотелось. Вот только если ну совсем уже нечего делать, а хочется погрызть гранит науки.
- «Ты ж программист» — не диагноз, будь разносторонней личностью! Социализируйся, ходи в кино/театры/тусовки/музеи — где еще ты встретишь свою половинку? 🙂 Хороших умных людей должно быть много!
- После английского начни учить еще какой-нибудь иностранный язык, но только такой, чтобы не был похож на английский и ломал мозг. Рекомендую японский/китайский.
- Дерзай! Нет, не дерзи своему тимлиду, а дерзай…
Василий Пирус, Competence Lead у Perfectial
7 лет опыта в Software Development, из них больше 5 — в мобильной разработке
В мире Android-разработки сегодня очень легко растеряться: постоянно выходят новые статьи, открытые библиотеки, крутые новости и рекомендации для разработки под Android от Google. К этому всему добавьте еще Kotlin — новый язык программирования, который стремительно превращается в стандарт для написания Android-приложений. В таком потоке информации важно уметь фильтровать интересные и нужные вам вещи: для того, чтобы стать действительно лучшим специалистом, не обязательно перечитывать все возможные статьи по MVP, MVVM, MVI, Clean/Reactive/etc architecture. Скорее наоборот, важно понимать основы, без которых будет очень трудно двигаться вперед.
Необходимое условие
Отталкиваемся от того, что вы хорошо знаете язык программирования Java, понимаете базовые алгоритмы, знаете Java Collection Framework и можете объяснить, как работать с многопоточностью. Кроме того, очень важно понимание платформы и мобильного контекста.
Итак, ниже я приведу список ключевых сфер, на которых следует сконцентрироваться.
1. Понимание и знание компонентов Android SDK
Важны жизненные циклы Activity и Fragment, а также умение работать с Service, Intent’s. Это такие понятия, которые не меняются, однако недостаточное их понимание может принести немало проблем в будущем.
Еще очень здорово разобраться в механизме работы и возможностях RecycleView — компонента системы, который используется почти в каждом приложении. Очень хорошее видео на эту тему: Yigit Boyar: Pro RecyclerView.
2. Работа с Android UI
Сюда входит работа с XML Layout, ConstraintLayout, Animation. В некоторых случаях придется писать CustomView, поэтому хорошо бы заранее подготовиться и понять, как работают методы OnMeashure(), OnLayout(), onDraw().
Если вам еще не приходилось много работать с UI, хорошей тренировкой будет взять свою любимую программу и попробовать воспроизвести ее в Android Studio. Есть серия туториалов о том, как построить интерфейс Instagram-а на базе компонентов Material design.
3. Unit-тестирование, архитектурные компоненты
Никогда не писали Unit-тесты на проекте? Не проблема, 120 минут с CodeLab — и у вас уже есть базовые навыки. Еще 110 минут — и вы умеете пользоваться архитектурными компонентами (по крайней мере это понятнее, чем просто документация).
4. Kotlin
Ну и конечно, Kotlin. Как я уже упоминал ранее, это must have. Советую не затягивать и начинать писать части кода на Kotlin. На самом деле это очень удобно и вам не придется ждать проект, который будет полностью написан на Kotlin.
Google сейчас активно работает над документацией, но для начала будет достаточно таких ресурсов: Android Developer, Android Kotlin Guides.
5. Цикл разработки проекта
Более общей, но не менее важной целью является понимание полного цикла разработки программы: от написания фичи или программы и до релиза в Google Play Store; навыки анализа крэшей и причин их возникновения.
6. Практика
Ну и конечно, помимо различных туториалов, самым эффективным путем развития является участие в сложном разноплановом проекте и взаимодействие с коллегами, которые готовы поделиться своим опытом.
Полезные ресурсы
Тематические порталы:
Твиттер-блоги:
- Fernando Cejas;
- Jose Alcérreca;
- Juhani Lehtimäki;
- Hannes Dorfmann;
- César Ferreira;
- Mirek Stanek;
- Saúl Molinero.
Книги:
- «Effective Java» (2nd Edition) by Joshua Bloch;
- «Efficient Android Threading: Asynchronous Processing Techniques for Android Applications» by Anders Goransson;
- «Kotlin in Action» by Dmitry Jemerov, Svetlana Isakova;
- «Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications» by Tomasz Nurkiewicz, Ben Christensen.
Роман Кучерявец, Android Team Lead в Nullgravity
5 лет опыта разработки под Android
Итак, ты, мой юный друг, решил шагнуть во тьму неизвестности, не так ли? Давай разберемся, что тебе как начинающему программисту в направлении Android стоит знать, на что стоит обратить внимание, а чем можно пренебречь.
Что нужно знать
Нужно начать с основ. Любой язык программирования имеет в себе ряд конструкций и особенностей, которые необходимо знать. В случае с Java это работа с памятью, коллекции и пакет потока безопасных аналогов из java.util.concurrent.*. Раз уж речь зашла о многопоточности, нельзя забывать о том, как в целом она устроена в Java и Android в частности (один из самых избитых вопросов на собеседованиях). Кроме языка, каждая экосистема, в которой работает та или иная программа, тоже обладает своей спецификацией и требованиями. Так как нам предстоит работать с зоопарком устройств экосистемы Android, нужно знать особенности некоторых брендов, потому как не всегда поведение программы в одной ОС будет одинаковым на разных девайсах, к примеру, от Xiaomi или Meizu.
Что может помочь в повышении уровня знаний и качества кода? В случае с первым, нам достаточно читать грамотные книги, практиковаться по ним и не упускать возможности почитать блоги известных программистов и их профили на GitHub. В случае со вторым — мы должны постоянно следить за обновлением функционала в экосистеме, где мы работаем, смотреть подкасты от Google, следить за трендами и новыми фишками, которые несут в себе обновленные ОС у производителей.
На что стоит обратить внимание
В первую очередь, на свой код! 😉 Старайся использовать проверенные практики в построении своих программ, не придумывай колесо. Начинай с малого, а именно сo структурирования проекта. Когда увидишь, что просто разделять классы по принципам ООП — мало, почитай, что такое SOLID и как можно и нужно проектировать программы, какие для этого есть архитектурные и проектные шаблоны.
Используй практику ревью кода. Например, у нас в Nullgravity на каждом проекте используется кросс-ревью, к тому же тимлиды команд смотрят еще pull request’ы соседних проектов. Если практика code review еще не используется у тебя на проекте, будь первым, кто о ней заговорит. Времени на разработку новой фичи будет уходить больше, но код станет гораздо чище.
Что еще? Можно сказать про то, что у нас есть огромный спектр фреймворков и библиотек для всех наших потребностей! Но не стоит бездумно брать в работу первый попавшийся. Рекомендую ознакомиться с самыми популярными: Dagger2, RxJava2, Retrofit2, Google API (Maps, Firebase и т. д.), Room (или любое другое популярное ORM решение), LiveData, Crashlytics — это одни из основных, с которыми частенько приходится работать. Все остальное ищется по принципу количества звездочек и проблем на GitHub. Всегда нужно взвешивать то, насколько конкретную задачу стоит делать с нуля, и сможешь ли ты решить ее лучше, чем это сделали другие за то же время.
И напоследок по этому вопросу. Очень рекомендую начинать практиковать Kotlin. Этот язык программирования уже прошел этап «молодого и неопытного» и сейчас быстро взрослеет. В нем есть множество вещей, которых нам могло не хватать в Java — null safety, coroutines, bind views, data class, sealed class, и многое другое.
Пренебречь — не пренебречь
Для результата на первых порах можно обойтись работой с виртуальной машиной, но чем дальше, тем нужнее будут устройства от разных вендоров, чтобы исключить возможные проблемы. Android Studio всегда нас радует новыми плюшками, поэтому нужно регулярно ее обновлять, использовать ее возможности на полную и знать карту hotkey в лицо. Нужно быть в тренде последних фреймворков и обновлений системы. Посещай митапы, общайся с коллегами по «цеху». Я более чем уверен, что если будут вопросы, то тебе смогут помочь.
Чтобы вырасти из junior’а, нужно понимать, насколько хорошо ты смог/-ла усвоить для себя какую-то тему, нужно постоянно заниматься саморазвитием. Потому даже если ты уже на проектe, то далеко не все, что было описано выше, может встретиться в работе. Всегда старайся автоматизировать то, что поддается этому волшебному слову — темплейты, CI, CD. Всегда пробуй что-то новое на pet-проектах. Выделяй время для планирования, чтобы появлялось понимание того, сколько уходит времени на задачи. Подтягивай знание английского, потому что документация по сложным фреймворкам в основном англоязычная.
Михаил Анохин, Android Developer в Dev-Pro
5 лет опыта
Система Android охватывает огромное количество разнообразных устройств и позволяет разрабатывать приложения для мобильных телефонов, планшетов, умных часов, автомобилей и IoT. Далее приведу список ресурсов в интернете и книг, которые необходимо изучить для разработки стабильных и производительных мобильных приложений.
Java. Идеальным фундаментом для знаний Android-разработчика будет четкое понимание языка программирования. Для этого необходимо прочитать:
- The Really Big Index, Oracle;
- «Thinking in Java» by Bruce Eckel;
- «Effective Java» by Joshua Bloch;
- «Clean Code» by Robert Cecil Martin;
- «Java Concurrency in Practice» by Brian Goetz.
Kotlin. Google в прошлом году официально объявил о поддержке данного языка программирования, поэтому стоит обратить на него внимание. Для изучения воспользуйтесь такими источниками:
- Kotlin Reference;
- «Kotlin in Action» by Dmitry Jemerov and Svetlana Isakova;
- «Kotlin for Android Developers» by Antonio Leiva.
Android Framework. Необходимо понимать, какие компоненты включены в систему, как они взаимодействуют между собой и со сторонними сервисами. Эти процессы детально описаны в Developer Guides. После этого стоит прочитать книги:
- «Gradle Recipes for Android: Master the New Build System for Android» by Ken Kousen;
- «Efficient Android Threading: Asynchronous Processing Techniques for Android Applications» by Anders Goransson;
- «Android Programming: Pushing The Limits» by Erik Hellman;
- «Android Binder: Android Interprocess Communication» by Thorsten Schreiber;
- «Android Security Cookbook» by Keuth Makan and Scott Alexander-Bown.
Также стоит пройти курсы от Google на Udacity:
- Gradle for Android and Java;
- Developing Android Apps;
- Android Performance;
- Material Design for Android Developers;
- Google Location Services on Android;
- Add Google Maps to your Android App;
- Monetize Your Android App with Ads.
Что дальше? Дальше необходимо читать статьи, периодически добавляемые на Android Resources, и просматривать видео с конференций Google I/O и DroidCon (Italy 2017, Berlin 2017, NYC 2017, SF 2017).
Олег Козак, Mobile Team Lead в Sigma Software
4 года опыта
Первый вопрос, возникающий перед абсолютно всеми Android-начинающими, — «Kotlin or Java?». В общем неплохо знать и то, и другое. Однако в начале карьеры стоит сконцентрироваться на чем-то одном. Мой совет без колебаний — Kotlin. После того как Google весной 2017 анонсировал Kotlin как официальный язык для ОС Android, судьба коммерческих проектов на Java стремительно падает. Динамику можно проследить здесь.
Для тех, у кого Java-бекграуд, рекомендую почитать цикл статей:
- Java vs. Kotlin для Android. День 1: спрыгиваем с Java;
- Java vs. Kotlin для Android. День 2: А может ну его, этот Kotlin?;
- Java vs. Kotlin для Android. День 3: Android высшего порядка;
- И еще бонус: Kotlin Coroutines vs. Java Threads vs. Android Asynctasks.
Лучший источник Android-знаний — Google. Недавно компания запустила программу «Google Developers Training». Здесь можно найти тренинг как для начинающих, так и для более прокачанных девелоперов. Эти тренинги бесплатные. Также можно пройти тесты и получить Android Developer Certificate, однако это уже платная опция.
Еще один важный инструмент, на который хочу обратить ваше внимание, — Google Material Design. Очень полезный сборник правил, где описано, как правильно строить UI. Эти стандарты настолько крутые, что ими руководствуются не только в Android-разработке. Например, знаю многих iOS-девелоперов, тоже использующих Material Design.
Но следует помнить, что у всех, даже очень авторитетных компаний, могут быть упущения. Недавно наткнулся на проблему с BLE connection через boolean параметр в Android SDK методе. А именно — autoreconnect в методе connectGatt (context, false, сallback). Android-девайсы версии блютус 5.0 НЕ подсоединяются к BLE-девайсам, если autoreconnect true, и в то же время работают без проблем, когда autoreconnect false. Таких огрехов, к сожалению, хватает. Однако не только с техническими трудностями сталкиваются начинающие.
Самая распространенная проблема джуниор девелопера — практически любая задача выглядит как «mission impossible». Но не стоит отчаиваться 🙂 Когда не понятно как решить задачу, не нужно биться головой о стену и пытаться самому найти решение. Лучший выход — просто спросить у команды. Возможно, кто-то сталкивался уже с такой задачей. Как показывает практика, в 95% случаев кто-то или уже решал такую задачу, или знает, как ее решить.
Еще один вариант — разбить задачу на маленькие части и решать глобальную задачу step by step. Затем, скорее всего, придется немного порефакторить после сборки всего пазла, но решение задачи несколькими способами еще никому не повредило 🙂
И напоследок посоветую научиться воспринимать критику, ведь анализ принятых решений, как хороших, так и не очень, позволяет выйти на новый уровень и не делать глупых ошибок в будущем.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]