Программирование • 02 августа 2024 • 5 мин чтения

Android или iOS: какой путь выбрать мобильному разработчику

Успешную карьеру можно построить в обоих направлениях — у каждого есть преимущества. О них и расскажем. Возможно, именной этой информации не хватает для принятия решения.

Кто такие мобильные разработчики?

Мобильный разработчик — это тот, кто пишет программы для мобильных устройств — например, смартфонов, планшетов, умных часов и фитнес-браслетов. Мобильные приложения нужны всем: от обычных пользователей до бизнеса и науки. Поэтому спрос на специалистов, которые их разрабатывают, в ближайшие 5–10 лет будет только расти.

Где нужны мобильные разработчики:

Бизнес. Например, для разработки приложений маркетплейсов, фитнес-центров, такси.
Индустрия развлечений. Можно стать разработчиком игр или стриминговых сервисов музыки и фильмов.
Образование. Например, разрабатывать программы для изучения языков, занятий спортом.
Финансы. Банковские мобильные приложения практически заменили кошельки. Благодаря мобильным разработчикам, удобно оплачивать покупки, открывать банковские продукты и переводить деньги в интерфейсе смартфона.
Производство. Например, компания, которая поставляет холодильное оборудование для хранения медицинских препаратов, может разработать систему мониторинга температуры в холодильниках. Оператор в режиме реального времени сможет отслеживать на экране планшета, какое оборудование вышло из строя.
Медицина. Приложения для пациентов разрабатывают и коммерческие клиники, и государственные учреждения.

В мобильной разработке два вида разработчиков: нативные и кросс-платформенные. Нативные пишут программы под конкретную операционную систему (ОС). Чаще всего — под iOS или Android. Обычно для таких приложений дизайнеры делают разные макеты, поэтому визуально они отличаются. Например, может быть разное расположение кнопок, цвета, меню. Какие-то функции могут быть доступны только для конкретной платформы.

Кросс-платформенные разработчики используют специальные фреймворки, которые позволяют разрабатывать одно приложение сразу для двух операционных систем. Это удобно, когда нужно быстро создать базовую версию продукта и протестировать её, разработать простое приложение или не хватает бюджета на две команды разработки. Но если это сложное приложение, например для банка, в кросс-платформенном варианте оно может работать не так эффективно, как нужно пользователю, или какие-то его элементы могут отображаться с ошибками. Всё потому, что фреймворк не всегда учитывает особенности работы конкретной ОС. Поэтому для высоконагруженных приложений со множеством разделов и нестандартными функциями выделяют бюджет на нативную разработку.

Михаил Вассер, руководитель мобильной разработки в AGIMA, наставник и автор на курсе «Android-разработчик»
На российском рынке в кросс-платформенной разработке чаще используют фреймворк Flutter. На мой взгляд, со временем рынок заказной разработки полностью перейдёт к Flutter-разработке. Такие приложения дешевле создавать и поддерживать. Но продуктовые компании останутся в нативной разработке, чтобы поддерживать приложения на должном уровне качества. Поэтому путь в мобильной разработке лучше начинать с нативных приложений: это позволит подробно изучить особенности одной или двух платформ. Позже при желании освоить кросс-платформенные технологии. С нативной базой это получится сделать быстрее.

Когда разрабатывают сайт или веб-приложение, веб-разработчик может заниматься и клиентской частью — той, которую видит пользователь, — и серверной, которая помогает сервису стабильно работать и не тормозить.

В мобильной разработке серверной частью приложения почти всегда занимается отдельный специалист — бэкенд-разработчик. А мобильный разработчик отвечает за функциональность интерфейса — правильное расположение кнопок и текста, анимацию, проигрывание видео, переходы по разделам приложения, обработку запросов от интерфейса к базе данных. Этому учат на курсах iOS- и Android-разработчиков. Студенты начинают с основ программирования, знакомства с языками мобильной вёрстки и инструментов для разработки приложений. К концу курса знаний уже достаточно, чтобы разработать полноценный проект — игру под iOS или агрегатор вакансий под Android.

Попробуйте себя в мобильной разработке
Выберите курс по душе и начните бесплатную вводную часть.

Сравнение Android и iOS

Для пользователя iOS — это операционная система, на которой работают мобильные устройства Apple: iPhone, iPad, Apple Watch. Разберём технические особенности платформы.

Языки. В приложениях для iOS используют два языка программирования. До 2014 года — Objective-C, а после — более удобный и современный Swift, который Apple разработала специально для своих приложений. Он совместим с Objective-C, поэтому в проекте можно использовать оба языка: на одном поддерживать старые функции, а на другом писать новые.
Среда разработки. Для создания приложений на iOS есть специальная среда разработки — Xcode. В ней удобно писать код и сразу проверять, как он будет работать в готовом продукте.

Минус среды Xcode — она доступна только на macOS. Источник: Apple

Ограниченный выбор техники для тестирования. Ключевая особенность iOS в том, что эта платформа работает только в устройствах Apple. С одной стороны, это накладно для разработчика: чтобы разработать и протестировать приложение, нужно купить iPhone и Macbook. Как альтернативу можно использовать программы, которые имитируют интерфейсы техники Apple, но разработчики жалуются, что они неудобные и работают нестабильно. С другой стороны, не нужно тестировать приложение на множестве разных устройств, как это пришлось бы делать в Android-разработке.
Долгая публикация в магазине приложений. Чтобы опубликовать приложение в App Store, нужно пройти строгий процесс проверки. Это требует времени и усилий, но в магазине меньше приложений низкого качества.

Теперь рассмотрим особенности Android.

Языки. В Android-разработке тоже используют два языка — Java и Kotlin. Код на Kotlin, как и на Swift для iOS, более лаконичный и читаемый, поэтому новые приложение пишут именно на Kotlin. Но чтобы поддерживать старые проекты, важно знать Java.
● На Android работает много устройств с разными экранами, процессорами и версиями ОС. Это усложняет разработку и тестирование: нужно учитывать больше вариантов, чем для iOS.
● Возможности для экспериментов. Библиотеки для Android позволяют создавать более гибкие интерфейсы. Для разработчика это возможность больше экспериментировать.
Публикация в Google Play проще и быстрее, чем в App Store. Требования к качеству приложений менее строгие, но это значит, что пользователям чаще могут попадаться приложения с багами.

Для Android тоже есть среда разработки — Android Studio. Она доступна на Windows, macOS и Linux. Источник: Android для разработчиков

Что лучше выбрать для старта карьеры?

Правильного ответа на этот вопрос не будет. Но при выборе платформы можно опираться на опыт или интересы. Например, с опытом программирования на Java проще войти в Android-разработку, потому что Kotlin создавали на основе этого языка. Знание Objective-С облегчит старт в iOS-разработке.

Кому-то нравится техника Apple, и это тоже может быть причиной стать iOS-разработчиком. А кому-то важнее разработать приложение с большим количеством пользователей — 70% гаджетов в мире работают на Android.

Задачи на первом проекте для Android и iOS-разработчика будут примерно одинаковые, а их сложность будет расти по мере погружения разработчика в проект. Например, в зрелой компании задачи могут быть такие:

● Исправлять мелкие баги, до которых не добрались другие разработчики. С одной стороны, в таких задачах не страшно ошибаться, потому что они мало влияют на работу приложения. С другой — это возможность изучить продукт: модули, классы и объекты, архитектуру, то, как приложение использует данные.
● Задачи, которые затрагивают разные части приложения. Например, добавить кнопку, изменить текст.
● Когда джун разобрался в работе приложения, ему могут поручить поменять логику работы экрана, сделать экран с нуля, разработать flow — путь пользователя из нескольких экранов.

В стартапе времени на долгое погружение нет: бизнесу важно быстрее запустить продукт. Бывает, что в команде один-два разработчика, поэтому придётся учиться на ходу, делать не идеально, но быстро.

Михаил Вассер
Если выбрал какое-то направление, это не значит, что придётся всю жизнь им заниматься. Например, я начинал как Android-разработчик, потом изучил iOS и теперь руковожу направлением мобильной разработки. Для перехода на другую платформу нужно делать то же самое, что делал, когда осваивал первую ОС: учить язык, инструменты, делать pet-проекты. Постепенно знания наслаиваются. Но если однажды проделал этот путь, второй раз будет легче.

Порог вхождения в мобильную разработку: что нужно знать?

Стать разработчиком теперь сложнее, чем 7–10 лет назад. Специалистов на рынке больше, а значит, и конкуренция выше. К тому же технологии развиваются и разработчикам нужно просто больше знать. Но благодаря онлайн-школам учиться стало проще: вся информация структурирована, дают только актуальные знания на примерах реальных проектов.

Разберём список базовых хард-скилов для iOS- и Android-разработки:

Михаил Вассер

Разработка — это не только про харды. Люди работают в командах и общаются с другими специалистами. Поэтому важно уметь доносить свои мысли грамотно, особенно нетехническим специалистам — дизайнерам, аналитикам. Токсичных разработчиков тоже вряд ли выберут для проекта, даже если у них сильные харды. Такие специалисты создают плохой климат в команде: люди будут быстрее выгорать и потеряют интерес к продукту.

Решающим фактором на собеседовании могут стать именно софт-скилы. Подтянуть технические навыки несложно, и компании готовы в этом помогать. Куда сложнее научить человека уважительно общаться и аргументировать свою позицию.

Софт-скилы проверяют на первом этапе — интервью с HR — и на собеседовании с техническим специалистом. Все технические интервью для мобильных разработчиков можно разделить на два типа — теория и лайвкодинг.


Теоретическое интервью


Лайвкодинг — решение задачи в реальном времени

О чем могут спросить:
- архитектура приложений;
- языки программирования;
- особенности библиотек;
- опыт в конкретном фреймворке или технологии

Задача может быть алгоритмическая или связанная с работой конкретной ОС — iOS или Android.

Кандидат и интервьюер делают вид, что работают на одном проекте. Тот, кто проводит интервью, даёт задание разработчику, как будто он его руководитель. Разработчик выполняет задачу и параллельно комментирует свои мысли

Задача — проверить не только заученные знания, но и то, чем занимался разработчик на практике
Задача интервью — понять, получится ли с кандидатом сработаться, как он подходит к решению задач, где ищет информацию, бежит ли он сразу выполнять задачу или сначала анализирует её и подбирает эффективное решение

Какие будут дополнительные вопросы, зависит от компании. Например, в команде, которая разрабатывает приложение для онлайн-кинотеатра, будут спрашивать о работе плеера. А для проекта по созданию соцсети или мессенджера пригодятся знания о многопоточности, потому что лента с постами должна обновляться быстро, а сообщения — приходить без задержек. Часть вопросов может затронуть прошлый опыт: в каких проектах разработчик участвовал, из какой сферы пришёл, как была устроена работа в команде.

Зарплаты мобильных разработчиков

Разберём данные для двух уровней мобильных разработчиков — джунов и мидлов. На первую позицию можно рассчитывать после завершения учёбы. Чтобы перейти на следующий уровень, нужно нарабатывать опыт в течение 1,5–2 лет.

По данным сервиса Getmatch, медианная зарплата junior-разработчиков под Android — 80 000 рублей. Источник: Getmatch

Медианная зарплата iOS-разработчиков больше — около 100 000 рублей, но зарплату от 50 до 100 тыс. предлагают чаще. Источник: Getmatch

А вот предложение для разработчиков-мидлов, специализирующихся на Android или iOS, одинаковое — в районе 200 000 рублей. Источник: Getmatch

Аналогичную цифру показывает исследование «Хабр Карьеры»: по данным их анкет, мидл-разработчики могут рассчитывать на сумму от 147 000 до 273 000 рублей. Источник: «Хабр Карьера»

Условия и требования к middle Android-разработчику в банке. Источник: «Хабр Карьера»

Вакансия в том же банке для middle iOS-разработчика. Источник: «Хабр Карьера»

По джунам данные в том же диапазоне, что и у Getmatch, но чуть оптимистичнее. Источник: «Хабр Карьера»

Требования к iOS-джуну в вакансии от компании, которая занимается заказной разработкой. Зарплата от 80 000 рублей. Источник: «Хабр Карьера»

Требования к Android-джуну от компании, которая разрабатывает софт в сфере банковской безопасности. Источник: hh.ru

Теперь посмотрим, где больше конкуренция. По запросу «Android разработчик» с опытом от 1 года на hh.ru нашлось 152 вакансии в России и ближнем зарубежье. Аналогичный запрос для iOS-разработчика принёс 127 вакансий. В обе выборки попали вакансии не только с нативной, но и с кросс-платформенной разработкой.

Совет эксперта

Михаил Вассер

Рост в разработке зависит от мотивации. Профессия разработчика хорошо оплачивается, но без интереса к проекту и задачам можно долго просидеть в джунах. И наоборот — если нравится верстать интерфейсы, писать алгоритмы и есть время, чтобы что-то дополнительно изучать, рост в профессии будет быстрым. Такими темпами за 1,5 года реально дорасти до мидла и увеличить доход.

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

Статью подготовили:
Михаил Вассер
Яндекс Практикум
Наставник и автор на курсе «Android-разработчик», руководитель мобильной разработки в AGIMA
Яндекс Практикум
Редактор
Полина Овчинникова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться
Идеи новогодних подарков от нейросети + промокоды на курсы Практикума и акции от партнеров
Wed Aug 14 2024 16:29:36 GMT+0300 (Moscow Standard Time)