
Преподаватель курса Junior Android Developer Алексей Червяков рассказал нам, как он попал в программирование, почему выбрал Android, в чем его сложности и что ждать от новых технологий. Не смогли обойти и больные темы — актуальность классического университетского образования и сложности самостоятельного освоения Android-разработки.
Почему Вы выбрали именно это направление?
Можно сказать, что это Android-разработка выбрала меня. Еще в школе мне было интересно программирование. Тогда это мне казалось какой-то магией и я для себя решил, что однажды сам буду творить эту «магию». Именно поэтому я выбрал НГТУ и факультет прикладной математики и информатики. С одной стороны, АВТФ мог дать знания программирования, но и математика еще никому не мешала.
В университете, ближе к четвертому курсу, я начал более подробно изучать, какие направления разработки существуют на рынке. Я рассматривал и web-разработку, и разработку десктопных приложений, и, конечно же, мобильное направление. Именно тогда я и познакомился с Android. И понял — это то, что я искал. Android-разработка позволяет создавать целостный продукт. Всё — от его внутренностей до внешнего вида. Ты, по сути, ни от кого не зависишь. За исключением бэкенда, если тебе необходимо API, но и его ты можешь сделать сам. Плюс ко всему, этим очень удобно пользоваться, так как телефон всегда под рукой. Это значит, что можно создавать очень полезные для повседневности вещи, и, тем самым, упрощать жизнь многим людям.
Тогда я загорелся идеей создания приложения для удобства. Им стало приложение для ведущего игры “Мафия”. И это было очень круто! Как только я закончил, выложил приложение в GooglePlay и увидел первые скачивания, то был очень счастлив. Это стоило всех усилий, которые я приложил.
Расскажите немного о тех ежедневных задачах, с которыми Вы сталкиваетесь на своей сегодняшней работе?
Работаю я в N1.RU. Это сервис по поиску недвижимости, поэтому все задачи, в основном, связаны с тем, чтобы дать пользователю удобный инструмент, которым можно было бы пользоваться. Чаще всего, это бизнесовые задачи касательно добавления интересных “плюшек”. Вроде графиков цен либо отображения какой-то необходимой информации, например, на карте. Кроме того, так как это все-таки сервис, пользователь должен иметь возможность синхронизировать все свои данные. Ну и, конечно же, есть чисто технические моменты по модернизации приложения. Наше приложение стремительно развивается, иногда возникают очень интересные задачи. Например, по дополненной реальности.
Какие основные трудности и проблемы свойственны Android-разработке?
Самые большие трудности вызывает поддержка старых версий Android SDK. Например, в четвертом Andorid еще не было как такового material design, он появился только в пятой версии. Но так как поддержка нашего приложения начинается от 4.0.3, то необходимо, чтобы на таких девайсах всё выглядело так же, как и на девайсах с Android 5 на борту. Для этого, чаще всего, придумываются какие-нибудь “костыли”. Обычно это касается теней или каких-то визуальных штук.
Ну и, конечно, бывают еще технические вещи, когда на определенной версии Android чего-то банально просто нет. Бывают “китайские” девайсы с кастомными прошивками, на которых не вызываются даже стандартные методы из жизненного цикла, что очень печалит. Еще одна боль — пользователи часто не обновляют приложения. И если надо отказаться от какого-либо API, это происходит довольно долго. Иногда бывает, что пользователям для перехода на следующую версию требуется около 6 месяцев.
Насколько динамично это направление?
Направление развивается очень стремительно. Почти каждые полгода появляются какие-то новые “плюшки”. Причем это бывают не только визуальные штуки аля material design, но и внутренние, например, architecture components, тот же room, новая БД от гугла. Архитектура приложений тоже развивается. Примерно два года назад была очень популярна MVP, сейчас ей на смену пришла Clean Architecture и MVI. В том году появилась еще одна фишка — instant app. Для того, чтобы она работала, надо разбивать приложение на фичи. В этом году пришел новый material design и обновились гайды. В том году официально пришел kotlin. Сейчас уже очень много слухов про фуксию и flutter. В общем, очень много нового появляется. Технология относительно молодая.
Сравните Android и iOS. На Ваш взгляд, какие ключевые отличия? Что лучше? Минусы и плюсы.
Первое, что приходит в голову, это, конечно, количество разных девайсов под управлением iOS и Android. В iOS есть несколько типов экранов, и все пилится под них. В Android не все так однозначно: тут существует очень много девайсов и у всех разная плотность экрана, разный размер, разная производительность. Недавно в Google выпустили Android Go, который можно запустить на очень слабом девайсе. А следовательно и приложения на этом девайсе будут работать не так, как на каком-нибудь флагмане. Если смотреть количество пользователей по платформам, то Andorid здесь явно выигрывает.
По платежеспособности пользователя iOS обгоняет Android. Например, если в appStore уже является обычным делом заплатить за приложение, то в GooglePlay чаще скачают взломанную версию. Но, к счастью, это потихоньку искореняется. Тем более, если Google все же сделает то, что анонсировал: запретит устанавливать приложения из непроверенных источников. Так уйдет и проблема большого количества вирусных приложений.
Что касается защищенности самой системы, то Android все же открытая система. Тут может появиться больше проблем, нежели в iOS, однако значительную часть этих проблем как раз обещают закрыть с выходом фуксии. Ну а сказать, что лучше, что хуже, очень сложно. У всех есть личные предпочтения и свое видение, эти системы просто разные.
Ваш курс — чему вы будете обучать, какие конкретно задачи смогут решать выпускники?
Курс состоит из базовых вещей, которые необходимо знать Android-разработчику, желающему делать приложения. Работу с графикой для геймдева давать не вижу смысла, так как это отдельный пласт разработчиков. На курсе будет работа с базами данных, работа с сетью. Все актуальные технологии, которые сейчас используются разработчиками. Правильное построение архитектуры приложения. Чтобы, когда человек приходит в команду, он уже более менее мог разобраться в приложении. Также будем осваивать создание своих view, потому что в разработке часто приходится кастомизировать стандартные штуки под требования дизайнера. В общем, будут даваться все знания для того, чтобы человек мог создать полноценное приложение.
Если бы Вы вдруг опять стали студентом, то по каким критериям выбирали бы курс обучения Android-разработке? Насколько эффективно самостоятельное обучение этой профессии?
Это интересный вопрос. Я как раз обучался самостоятельно, и это было довольно тяжело. Самостоятельно обучиться можно, но это будет долгий процесс. Особенно в начале, когда ты еще толком не понимаешь, как что работает, и читаешь мануалы на английском языке, не понимаешь, как это все можно применить. Если же ты не сталкивался с программированием в принципе, то это в разы усложняет процесс.
Для меня, наверное, самые важные критерии — это грамотный преподаватель и больше практических задач. Потому что, когда ты читаешь теорию, ты все равно не осознаешь, как и где это можно применить. Только через практику можно понять, как это действительно работает. Когда ты видишь свои ошибки и разбираешься, как это можно починить, то получаешь больше знаний, чем из сухой теории.
Еще в обучении должны быть свежии технологии. Меня в университете всегда смущала программа, по которой нам давали знания по фортрану 77, в то время как уже был фортран 2008. Либо нам давали svn, когда в разработке почти все переходили на git. А потом ты приходишь в компанию и понимаешь, что сегодня это не применяется. Есть, наверное, компаниии, которые используют устаревшии технологии, но я думаю, что их не очень много.
Насколько перспективно это направление? Куда развиваться в этой профессии?
Направление очень перспективное. Сейчас все больше компаний идут в сторону mobile first либо даже в mobile only. Сейчас почти у каждого человека под рукой есть телефон, и чаще всего это Android. Много людей, у которых нет компьютера или ноутбука, но есть телефон.
Развиваться здесь можно в любую сторону. Можно быть техническим руководителем направления, можно уйти в менеджмент с упором в мобильную составляющую. Можно научиться делать бэкенд и писать приложения независимо от кого-либо. Сам продумал аналитику, сам написал API, сам собрал дизайн (благо есть гайдлайны) и сам написал приложение и выпустил его. Можно уйти в геймдев, тоже довольно популярное направление. Тут масса вариантов. Все зависит от амбиций и желания.
Ваше кредо как преподавателя.
Учить может тот, кто сам постоянно учится и применяет знания на практике. А чтобы быть хорошим учителем, надо еще и любить то, чему учишь.
Дайте совет новичкам, будущим выпускникам вашего курса.
Самое главное, на мой взгляд, это никогда не опускать руки. Если что-то не получается реализовать, то надо пробовать искать другое решение и не бояться экспериментировать. Как говорил один из моих преподавателей по программированию, “в нашей жизни возможно все, молодой человек». Чтобы добиться результатов, надо иметь неподдельное желание развиваться в Android-разработке. Старание, терпение и ответственный подход помогут добиться желаемого. Если ты жаждешь быть разработчиком, то тебя не остановят никакие трудности. Если еще есть и единомышленники, и наставник, то успех может прийти гораздо раньше.
Чтобы за короткий срок получить все необходимое для освоения профессии Android-разработчика, приходите на курс в нашей IT-Академии — курс Junior Android Developer.