Советы сеньоров: как прокачать знания junior Android
В рубрике «Советы сеньоров» опытные специалисты делятся практическими советами с джуниорами — общие лайфхаки по обучению, какие книги и ресурсы читать, какие навыки осваивать и многое другое. В этом выпуске говорим об 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, где презентуются новые вещи, которые будут включены в платформу. Кроме этого, на мероприятии есть возможность для общения, дискуссий и обмена опытом. Ближайшая конференция состоится
Читайте тематические ресурсы — именно на них можно почерпнуть интересующую вас информацию. Например, 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. Потім, скоріш за все, доведеться трохи порефакторити після складання всього пазла, але вирішення задачі кількома способами ще нікому не зашкодило :)
І наостанок пораджу навчитися сприймати критику, адже аналіз прийнятих рішень, як хороших, так і не дуже, дозволяє вийти на новий рівень і не робити безглуздих помилок у майбутньому.
Подписывайтесь на наш Telegram-канал для джуниоров, чтобы не пропустить интересные вакансии, стажировки, курсы, статьи.