Кто такой Android-разработчик. Обзор изнутри от Артёма Шабана

Про Android-разработку рассказывает Артём Шабан, Development Director в Onde.

Продолжаем цикл материалов про ИТ-специальности. Каждую из них описывает «типичный представитель» — опытный специалист. Мы надеемся, эти материалы помогут школьникам, студентам, переквалификантам, джуниорам и сочувствующим выбрать специальность в ИТ, оценить перспективы или просто сверить часы с авторитетным коллегой. Обсуждайте и дополняйте материал в комментариях, чтобы сделать его ещё полезней.

Оставить комментарий

Коротко обо мне:

— 7 лет в разработке; 

—  опыт в Android-разработке — около 5 лет;

—  пришёл в Onde джуном и прошёл весь путь до сеньора и тимлида;

— сейчас моя роль в Onde — Development Director. 

В общем виде цель работы Android-разработчика — разработать мобильное приложение так, чтобы пользователь открыл его и сказал: «Вау! Оно решает мою проблему». Весь труд разработчика направлен на выполнение данной цели. 

Мобильный разработчик старается максимально облегчить жизнь пользователю: приложение не должно «вылетать»; оно не должно тормозить даже на старых или дешёвых устройствах (ведь Android-смартфонов очень и очень много!); интерфейс, который создают дизайнеры и реализуют программисты, должен быть удобен и понятен. Такие задачи разработчик решает каждый день. 

Onde

Компания поставляет инновационное программное обеспечение для on-demand предприятий с 2011 года. В компании 70+ энтузиастов и энтузиасток, стремящихся улучшить транспортное сообщение во всех уголках планеты.

Главная специализация Onde — разработка софта, необходимого компаниям для on-demand доставки, заказа такси и услуг. Клиенты компании находятся в 60+ странах и составляют активную и уникальную группу предпринимателей в сфере on-demand мобильности.

Как Android-разработка отличается от других видов разработки (и, по-моему, круче их всех)? 

На самом деле, все виды разработки важны. Важен бэкенд, который обеспечивает правильную работу приложений на серверах. Спасибо «бэкендерам» за это! С фронтендом пользователь сталкивается в первую очередь, потому что именно «фронтендеры» разрабатывают интерфейс (UX/UI) приложения. Как известно, встречают по одёжке — поэтому чем круче UX/UI, тем больше шансов у приложения стать популярным.        

Но самые крутые ребята — «мобильщики» — разработчики, которые создают сами приложения. Быть «мобильщиком» круто хотя бы потому, что ты всегда можешь увидеть  и показать другим результаты своего труда. Бэкенд-разработчик не может открыть своё приложение перед мамой, женой или другом и сказать: «Смотри, как круто я сделал!». Если ты работаешь мобильным разработчиком в крупной компании, то твоими приложениями будут пользоваться сотни тысяч или даже миллионы людей. Это вдохновляет. 

Почему Android, а не iOS?

Мобильная разработка ведётся на двух самых популярных платформах: Android и iOS. И здесь начинается настоящий холивар. Объясню, почему я когда-то сделал выбор в пользу Android. 

  1. Порог входа на Android ниже, чем на iOS —  как для пользователя, так и для разработчика. Телефон на Android можно купить за $50 или даже дешевле. Сколько там стоит новый айфон? Разработчик может даже не покупать девайс, чтобы работать над приложением. Можно обойтись Android-эмуляторами на компьютере. Когда-то я так и начинал.  
  2. Android широко используют не только на смартфонах, но и в «умных» вещах (IoT): от автомобилей до «разумных» утюгов и стиральных машин. 
  3. Мир Android очень сложный и разнообразный. У айфона всего пару десятков моделей, Android-девайсов — тысячи. Интересно знать, что твоим приложением будут пользоваться на тысячах разных устройств! Слова «оптимизация» и «перформанс» всё ещё не забыты в Android-разработке. Миллионы людей в Африке и Азии используют супер-дешёвые девайсы, и твоё приложение должно стабильно работать на любом «китайфоне». Мир Android-девайсов постоянно подкидывает тебе новые вызовы и новые задачи. Конечно, это не только интересно, но и сложно: надо быть всегда готовым, что приложение перестанет работать на очередной нетипичной модели смартфона.      
  4. Android — это open-source платформа. Код, на котором она написана, доступен для каждого. Всегда можно заглянуть поглубже и узнать, каким образом разработана и функционирует сама система.  

Как Android-разработчик работает над приложением? 

Основные этапы разработки выглядят примерно так. 

  1. Во-первых, Android-разработчик должен понимать контекст задачи: для кого и для чего предназначено приложение, как оно будет выглядеть и работать. Обычно в начале работы есть готовый макет UX/UI приложения и его общее описание. Основа приложения — UX (User Experience — проект взаимодействия пользователя с интерфейсом). Он выглядит как раскадровка экрана будущего приложения, набросок того, как пользователь будет работать с программой. Потом на проект накладывается начальный UI-интерфейс, а уже готовый дизайн отдаётся разработчику. Опытные разработчики участвуют в создании приложении уже на первом этапе — проектирования макета UX. Ведь всегда есть технические ограничения, и о них лучше узнать уже на стадии проектирования. 
  2. Разработчики (часто при помощи бизнес-аналитиков) расписывают кейсы (use cases) — основные последовательности действий в приложении. Нажал одну кнопку в интерфейсе — открылось основное окно. Нажал другую кнопку — выскочил список настроек. И так далее. В небольших стартапах начальная работа над приложением может ограничиваться работой над UX/UI. 
  3. Основная разработка ведётся поэкранно. «Экраны» — это важные участки приложения, которые создаются по отдельности. Например, три экрана разделяются между командой, потом соединяются. Если разработчик не знает, как написать тот или иной участок кода или добавить какой-то компонент программы, — он гуглит. Или консультируется у коллег. В этой работе всегда надо учиться. 
  4. Экраны готовы, приложение готово. Тестировщики должны проверить, чтобы всё соответствовало требованиям. Но начинает тестирование сам разработчик — надо же покликать и убедиться, что приложение работает нормально. Иногда разработчик пишет для тестировщиков автоматизированные тесты. 
  5. Финальный этап — выход приложения в Google Play. В небольших компаниях заливает приложение в стор сам разработчик. Сделать это несложно — нужно всего-то нажать пару кнопок. Но в больших компаниях, как Onde, в сторы загружают десятки и сотни приложений, так что этим занимаются отдельные люди.  

Когда приложение готово и вышло в Google Play, работа разработчика не заканчивается. Ему предстоит поддерживать, изменять и улучшать программу. 

Приведу пример типичной задачи. UI-дизайнеры перенесли кнопку в другое место интерфейса и изменили её цвет. Разработчику нужно поменять разметку (layout) приложения.  И далее — проверить, что кнопка правильно расположена на разных ориентациях экрана, а при нажатии она правильно меняет цвет, тень, положение. Вы же помните, что Android-девайсов великое множество? Так вот надо ещё убедиться, что кнопка будет правильно располагаться и отображаться на экранах разного размера и разрешения. 

Какие инструменты использует Android-разработчик? 

  1. Android Studio. Это официальная IDE (интегрированная среда разработки) для Android, созданная JetBrains и  Google.  Здесь пишется код.         
  2. Git. Сюда складывается написанный код и здесь хранится. 
  3. Смартфон или Android-эмулятор на компьютере. На них приложение запускается и тестируется. 

Сейчас большинство Android-разработчиков пишет код на Kotlin, но ещё пару лет назад все писали на Java. Эти два языка похожи (оба относятся к группе JVM-языков), поэтому переходить с одного на другой несложно. Если совсем просто, то Kotlin — тот же Java, только немного красивей и приятней. Сегодня Kotlin — один из официальных языков для Android. 

Что должен знать и уметь Android-разработчик?  

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

Для себя я определил очень простой способ их различать — по уровню задач. Джун всегда решает элементарные и понятные задачи. Миддл уже справится с любой задачей. Он сделает её правильно, но, скорее всего, не с первого раза —  ему придётся совершить несколько итераций. А вот сеньор или «равный» ему специалист сразу справится с любой, даже самой сложной задачей. 

Можно сравнить разработку программ со сборкой автомобиля. Джуну для сборки понадобятся детали и инструкция. Придётся хорошенько постараться, но рано или поздно машину он соберёт. Миддлу дай запчасти — и авто будет готово. А вот сеньор — тот человек, который  может спроектировать машину с нуля. Достаточно поставить перед ним общую задачу: «машина должна быть быстрая» или «это должен быть внедорожник».     

Джуну дают типовые задачи начального уровня. Обычно они связаны с UX/UI: добавить в интерфейс кнопочку, изменить параметры того или иного элемента. Другими словами, в хорошо известных местах приложения он меняет понятные кусочки кода. Основной скилл джуна — умение учиться. По моему мнению, для джуна в принципе не очень важны знания конкретных технологий (языка программирования или фреймворка). Знания очень быстро устаревают. Единственное, что не устаревает, — это способность думать и учиться. 

Миддлу не страшно дать любую задачу, и он точно с ней справится. Большинство программистов (независимо от того, как их роли называются в конкретной компании) — миддлы. В Беларуси эта роль начинается после двух лет хорошего опыта. Миддл работает с уже готовой архитектурой. Знает, как она работает, знает её базовые компоненты. Он уже отлично владеет языками программирования и фреймворком Android.  

Сеньор не только знает и понимает архитектуру приложения, но может и сам её спроектировать. Он решает концептуальные задачи. Сеньору, в дополнение ко всем перечисленным навыкам миддла, необходимо очень развитое абстрактное мышление. На этом уровне программирование превращается в настоящее творчество. 

Есть ли жизнь после сеньора? 

Почти любой разработчик идёт по этой лестнице — джун-миддл-сеньор. Дальше перед ним открываются два концептуально разных пути. 

Он может развиваться в хард-скиллах — вырасти в очень крутого технического специалиста. Это может быть Principal Developer или Solution Architect. Они решают технические задачи высшего порядка: концептуальные проблемы с перформансом или кросс-платформенностью, сами проектируют программы.   

Второй путь — менеджерский. Сеньор может стать тимлидом, а из тимлида вырасти в технического директора — СТО. Это вершина развития технического менеджера.

И, конечно, всегда можно открыть свою компанию и развивать собственные идеи и продукты. 

Что читать и где учиться

Не буду рекомендовать много книг. Признаюсь честно: сам я до конца не прочитал ни одной книжки по программированию. Хотя наверняка кому-то книжки нравятся и помогают. 

Очень рекомендую всем новичкам писать свои приложения. Это звучит сложно, но на деле это не так. 

Как бы я сейчас учился программировать под Android? Во-первых, нашёл бы бесплатный курс по программированию. Во-вторых, посмотрел бы видео-гайд по созданию своего приложения. Параллельно создавал бы простенькое приложение. Таким образом можно изучить основы языка и применить их сразу на практике. В конце такого курса обучения на руках у джуна будет готовое приложение, и с ним можно идти устраиваться на работу.  

Напоследок небольшая история. 

Однажды на собеседование в Onde пришёл человек.  Он не знал ни Java, ни Kotlin. Зато написал собственное приложение на Delphi — простейшую игру вроде змейки. Мы даже не знали, как его собеседовать, — человек ничего не знал из нужных нам технологий! Но он создал своё приложение и отлично понимал базовые принципы программирования. Сейчас этот человек — один из ключевых Android-разработчиков в компании. 

Список ресурсов:  

Kotlin

  • Для тех кто не знает языки программирования: «Head First. Kotlin». 
  • Для тех, кто умеет немного программировать: короткий гайд на официальном сайте Kotlin. 
  • «Head First. Паттерны проектирования» — одна из немногих книг которую я прочитал, потому что там картинок больше чем текста =). Она для тех, кто уже умеет программировать, и хочет развиваться дальше. Паттерны проектирования — это обязательные знания, чтобы трансформироваться из джуна в миддлы. Поэтому для начала ее можно не читать, но стоит запомнить и прочитать в будущем. 

Android

  • Базовый сайт, который стоит добавить в закладки: developer.android.com
  • Бесплатные поэтапные уроки на русском (что-то на Kotlin, что-то на Java, но не стоит этого бояться, синтаксис очень похож): developer.alexanderklimov.ru

Бесплатные курсы, рекомендованные Kotlin и Google: 

Полезный русскоязычный подкаст: AppTractor — Android Dev Podcast.  

Технические новости (советую читать, чтобы быть в теме): Android-разработка на Хабрахабр. 

В Onde требуются:

Кто такой iOS-разработчик. Обзор изнутри от Максима Павлюченко
По теме
Кто такой iOS-разработчик. Обзор изнутри от Максима Павлюченко
Кто такой фронтенд-разработчик. Обзор изнутри от Артема Самофалова
По теме
Кто такой фронтенд-разработчик. Обзор изнутри от Артема Самофалова

Читать на dev.by