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

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

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

Оставить комментарий
Кто такой 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-разработчик. Обзор изнутри от Максима Павлюченко
По теме
Кто такой iOS-разработчик. Обзор изнутри от Максима Павлюченко
Кто такой фронтенд-разработчик. Обзор изнутри от Артема Самофалова
Кто такой фронтенд-разработчик. Обзор изнутри от Артема Самофалова
По теме
Кто такой фронтенд-разработчик. Обзор изнутри от Артема Самофалова

Хотите сообщить важную новость? Пишите в Телеграм-бот.

А также подписывайтесь на наш Телеграм-канал.

Горячие события

Ярмарка вакансий Nordic Game Talents
27 октября — 29 октября

Ярмарка вакансий Nordic Game Talents

Читайте также

ID Finance набирает QA-джуниоров в новый проект. Лучшие получат оффер
ID Finance набирает QA-джуниоров в новый проект. Лучшие получат оффер
ID Finance набирает QA-джуниоров в новый проект. Лучшие получат оффер
Azur Games купила за $2,2 млн долю Neosus —  разработчика игр с беларускими корнями
Azur Games купила за $2,2 млн долю Neosus —  разработчика игр с беларускими корнями
Azur Games купила за $2,2 млн долю Neosus —  разработчика игр с беларускими корнями
dev.media привлекла инвестиции под новый проект про образование в ИТ
dev.media привлекла инвестиции под новый проект про образование в ИТ
dev.media привлекла инвестиции под новый проект про образование в ИТ
6 комментариев
Xiaomi тестирует блокировку приложений из сторонних сторов
Xiaomi тестирует блокировку приложений из сторонних сторов
Xiaomi тестирует блокировку приложений из сторонних сторов

Обсуждение

Комментариев пока нет.
Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже