iOS или Android: что выбрать?

Ликбез для начинающих разработчиков.

Если вы только пришли в разработку, невозможно заняться iOS и Android одновременно. Разработка под эти операционные системы ведется на разных языках программирования. Для iOS необходимо владение Swift и Objective-C. Для Android – Kotlin или Java. Больше того, вам потребуется разная техника. Для iOS – Mac или iPhone. Для Android подойдет любой компьютер и смартфон. Существуют эмуляторы, но для постоянной работы и тестирования этот вариант не подходит.

Доля рынка операционных систем в мире Statcounter.com

Оба направления разработки перспективны. Однако если посмотреть на статистику, по данным Statcounter.com, Android лидирует среди всех операционных систем на мировом рынке. Он установлен на 40% всех устройств. Среди мобильных телефонов доля Android – 70%, iOS – 29%. Среди планшетов: Android – 40%, iOS – 60%. По России картина немного отличается, но тренд совпадает с общемировым. Среди смартфонов Android – 80%. На планшетах: Android – 48%, iOS – 52%. Есть региональные различия. Так, в Москве и Красноярске более популярен iOS, в Петербурге и Новосибирске – Android.

Покупательская способность аудитории Android и iOS разнится так же сильно, как их популярность. Но в обратную сторону. По данным techrocks.ru, пользователи iOS покупают через мобильные приложения в три раза активнее. Впрочем, это имеет значение для владельцев бизнеса, создателей стартапов. На зарплаты разработчиков это не влияет: они на одном уровне.

Прежде чем выбирать операционную систему и делать ее своим полем деятельности, стоит освоиться в IT-разработке в целом. Если это новая для вас сфера, можно записаться на бесплатный курс для новичков или заняться изучением основ самостоятельно. Например, в открытом доступе есть гарвардский курс «‎CS50. Основы программирования»‎ на русском языке. Ориентируясь на ту технику, что у вас есть, выберите программное обеспечение и язык. Осваивайте их, экспериментируйте. Попробуйте для начала сделать несколько проектов для портфолио, по фану. Можно найти заказчиков для своих пробных проектов среди друзей. Ваши шансы на успех повысит владение английским языком (на нем написаны многие материалы, необходимые для работы) и готовность постоянно учиться, следить за трендами.

Android

Преимуществ много:

  • для работы подойдет любой компьютер;
  • большое сообщество разработчиков;
  • язык программирования Java может быть использован при написании не только мобильных, но и веб-приложений, игр;
  • на Android работают не только приложения для смартфонов, но и для умных часов, Smart TV, VR/AR;
  • среда разработки анализирует код и может автоматически формировать некоторые его части;
  • хороший фреймворк; можно найти готовые модули под самые разные цели;
  • платформу можно адаптировать под любую специализированную задачу;
  • исходный код Android открыт для всех; есть платформа Android Open Source Project, где компания публикует все данные, и разработчики тоже могут это делать;
  • публикация приложений в Google Play происходит практически мгновенно, обычно без участия модераторов – не нужно долго ждать подтверждения;
  • небольшая плата за размещение приложений в Google Play ($25 один раз, при регистрации).

Каковы недостатки?

  • многообразие устройств и их параметров создает почву для багов, неодинаковой работы приложения на разных смартфонах;
  • многообразие версий операционной системы: в отличие от iOS, у Android остаются актуальными и могут работать без обновлений устаревшие версии;
  • не все обучающие материалы и ответы на форумах актуальны: система существует давно, нюансы разработки меняются;
  • приложение и аккаунт могут быть заблокированы без объяснения причин, на жалобы в техподдержку отвечает бот.

В базе вакансий HeadHunter на момент написания этого материала открыто 2773 вакансии по запросу «‎Android developer»‎ в России.

По данным «‎Хабр Карьера»‎, на 2020 год средняя зарплата разработчика на Java – 130 тыс. рублей, на Kotlin – 125 тыс. рублей.

Согласно исследованию «‎Яндекса»‎, к концу 2019 года зарплата Android-разработчиков с опытом меньше года составляла около 46 тыс. рублей. Специалисты с опытом больше 6 лет могли рассчитывать на зарплату в районе 207 тыс. рублей.

iOS

Преимущества для разработчиков:

  • строго ограниченное количество версий смартфона, размеров экрана и самой операционной системы;
  • все изменения в ОС прозрачны: Apple ежегодно выпускает гайдлайны по разработке приложений для iOS и объясняет, как заменить элементы кода на более производительные;
  • приложений и разработчиков меньше, конкуренция ниже.

Недостатки:

  • для работы необходима дорогостоящая техника;
  • чтобы загружать приложения в AppStore, нужно ежегодно продлевать аккаунт разработчика за $99;
  • публикация приложения может занять больше недели, потому что модерация производится вручную.

В базе вакансий HeadHunter на момент написания этого материала открыто 2497 вакансий по запросу «‎iOS developer»‎.

По данным «‎Хабр Карьера», на 2020 год средняя зарплата разработчика на Swift – 130 тыс. рублей, на Objective-C – 150 тыс. рублей.

Согласно исследованию «‎Яндекса»‎, на 2019 год зарплата iOS-разработчиков с опытом меньше года составляла около 69 тыс. рублей. Специалисты с опытом больше 6 лет могли рассчитывать на зарплату в районе 216 тыс. рублей.

Как научиться?

В Сети легко найти обучающие курсы по мобильной разработке. Например, на «Нетологии», Skillbox, Geekbrains. Можно даже поступить в университет и изучить это как предмет в рамках бакалаврской программы по информатике. Однако некоторые наши специалисты считают, что можно научиться всему необходимому самостоятельно.

Вадим Ахмаров
Android-разработчик Reactive

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

Антон Лунегов
Главный специалист компании «ЛУКОЙЛ-Технологии», iOS-разработчик Reactive

‎Научиться разработке для iOS можно самому и без специальных курсов. Дело в человеке. Если он упертый, то сядет и найдет всю необходимую информацию. В книгах, в интернете. Все курсы и видео есть на торрентах. Можно скачать, сесть и учиться самостоятельно. Платные курсы могут помочь с мотивацией: раз заплатил, по-любому результат надо получить. Плюс, обычно на курсах преподает лектор, ему можно задать любые вопросы, быстрее прийти к пониманию. А если учишься сам, очень помогает, когда среди знакомых есть разработчики в нужной сфере. Можно советоваться с ними‎.

Так с чего лучше начать?

Вадим Ахмаров, Android-разработчик Reactive:

«‎Зависит от того, сколько у человека денег. На Android можно начать бесплатно, а на iOS придется Mac покупать. Если говорить о технической сложности, Android сложнее из-за большего количества устройств»‎.

Антон Лунегов, главный специалист компании «ЛУКОЙЛ-Технологии», iOS-разработчик Reactive:

«‎Начинать с iOS не рекомендую. Вообще для начала нужно понимание программирования в целом, базовые знания. Просто так прийти из другой сферы невозможно. Необходимо изучать языки программирования. Стартовать в мобильной разработке я бы рекомендовал с Android. По Android больше структурированного материала. Книги написаны более понятно.

Я и сам начинал с Android. После шести лет в этой сфере занялся iOS, теперь параллельно работаю над проектами для обеих операционных систем. У меня уже было понимание, что из себя представляет разработка для iOS, оставалось только изучить язык. Тогда в «‎Лукойле»‎, где я работаю до сих пор, была необходимость адаптировать под iOS приложение, Android-разработкой которого я руководил. Специалиста со стороны подключить было сложно. В итоге я сам за это дело взялся. Мне предоставили и iPhone, и MacBook, и достаточное количество времени. Я просто стал изучать, погружаться и сам написал это приложение»‎.

Конечный выбор только за тобой. Успехов тебе и новых свершений.

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

До связи!

0
13 комментариев
Написать комментарий...
borodutch

Все просто: выбирать не надо. Нужно взять и начать писать на React Native или Flutter.

Пользователи не замечают разницу между нативными приложениями и приложениями на RN/Flutter. Эту разницу замечают только разработчики этих самых приложений.

Ответить
Развернуть ветку
Вячеслав Кислицын

Ты немного лукавишь, глобально конечно для пользователей разницы скорее всего не будет, но есть объективно множество причин почему многие пишут мобилки на нативе. 

Стэк надо выбирать от потребностей, когда-то можно выбрать и Flutter 100%

Ответить
Развернуть ветку
borodutch

Нет, не лукавлю. Если что-то нельзя написать на React Native или Flutter — то это что-то переусложнено. А переусложненные приложения и сервисы никогда не становятся успешными.

Ну и стоит понимать, что разработка кода нативно — это не только разработка двух разных баз кода, но еще и поддержка их. Либо удорожание разработки минимум в два раза, либо отказ от одной из платформ и отказ от 50% рынка минимум.

Никто в здравом уме не будет автоматически ставить себя в неудобное положение еще до запуска продукта.

Ответить
Развернуть ветку
Denis Bystruev

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

Если нет бюджета на обе платформы, лучше сделать нативно только под iOS, чем криво под обе.

Потом, когда iOS-пользователи принесут деньги, можно задуматься и об Android-версии.

А если не принесут — значит, бизнес-модель неправильная, и на Android-пользователях заработать тем более не получится.

Ответить
Развернуть ветку
Denis Bystruev

Гладко на бумаге. В реальности вместо двух версий приложения получается три:

— общая часть
— исключения для iOS
— исключения для Android

Поэтому, намучившись с React Native, переходят обратно на нативную разработку.

У Flutter тоже не всё здорово. Количество вакансий для нативных разработчиков и Flutter различается в 20 раз не в пользу последнего.

Flutter хорош для Android — сгладить зоопарк версий — но под iOS это борьба с Apple. Который совсем не хочет, чтобы приложения работали одинаково на всех платформах, и каждый год выпускает такое количество обновлений SDK, что ни Flutter, ни React Native, ни Xamarin просто не поспевают.

Ответить
Развернуть ветку
Dmitry Tumashev

Не знаю, как дела у RN и Xamarin, но Flutter позволяет спокойно делать вызовы к нативным библиотекам, так что если нужно работать с каким-то API, который ещё не проброшен во Flutter, то можно всегда сделать это самому без больших проблем и временных затрат. 
Так что хоть исключения под каждую из платформ, естественно, есть, но их не так много выходит в большинстве случаев.

Ответить
Развернуть ветку
Denis Bystruev

Так я про это и говорил — из-за вызовов к нативным библиотекам у вас получается три ветки (общая, для iOS, для Android) вместо одной.

Год писал на Flutter — параллельно iOS — всё время какие-нибудь косяки вылезают, которых в нативе нет.

Большинство библиотек на pub.dev создают добровольцы, поэтому их качество очень разное, но всегда хуже, чем нативных.

С точки зрения разработчика проекты на Flutter не выгодны — те, кто их заказывают, экономят на всём.

Типичный нативный проект — 5-6 человек с бюджетом 2,5–3,5 млн ₽, где на каждого выделяют тысяч 500–600 ₽.

Типичный проект на Flutter — 1 человек, который за 300 тыс. ₽ должен сделать всё.

Ответить
Развернуть ветку
Azer

хорошо сказал

Ответить
Развернуть ветку
Boris Evstratov

Flutter-приложение не соберёшь под iOS без Мака как ни крути

Ответить
Развернуть ветку
borodutch

Как и React Native прилжения. Только это не является причиной разрабатывать и поддерживать два разных нативных решения под две разные платформы.

Ответить
Развернуть ветку
yesYouStp

пользователи замечают разницу, поэтому всё остальное сказанное - невалидно

Ответить
Развернуть ветку
borodutch

Нет, не замечают. Просто это вы, похоже, плохо пишете код, что он лагает :) Так и нативные приложения можно заставить начать лагать!

Ответить
Развернуть ветку
Ivan Roduman

Удел Flutter - это малый и средний бизнес с низкими бюджетами - что-то типа тильды и wordpress с его шаблонами. Низкие бюджеты и экономия на всем. Разработчики - оно Вам надо?

Ответить
Развернуть ветку
10 комментариев
Раскрывать всегда