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

Большинство мобильных приложений попадают в одну из нескольких категорий — еще один фронтенд для какого-нибудь сервиса, игра, приложение которое использует возможности телефона (например, фитнесс-трекер, или фильтр для фотографий, или тюнер для гитары), причем приложений из первой категории — подавляющее большинство.

Соответственно, скорее всего, вашей работой будет — написать клиента для REST API, отсылать туда данные и рисовать то, что пришло обратно. В целом, практически никакой разницы с разработкой веб-приложения, писать апишечки, модельки, верстать верстку. Трудности возникают с инструментарием — сборка даже небольшого проекта занимает довольно много времени, а еще нужно залить билд на телефон и подождать пока он там запустится. Импорт проекта в андроид студио занимает целую вечность. Огромный зоопарк устройств (размеров, камер, датчиков), разных версий прошивок и операционных систем. Одно из приложений, которое находится у моей компании на поддержке, не запускается на нескольких конкретных моделях асусов и самсунгов и не помог даже дебаг по тимвьюеру (потому что самих устройств чтобы протестить у нас не было). Автоматизированное тестирование сильно усложнено по сравнению с фронтендом. Обновления выкатывать очень долго, поэтому многие компании приходят к использованию каких-то хитрых фреймворков, которые позволяют пушить в приложение новую версию логики в любой момент.

Если это iOS — дело еще сильнее усложняется необходимостью всем иметь макбуки, XCode которому очень далеко до IntellJ, кучей версий obj-c/swift (особенно это напрягает если имеешь дело с легаси проектами). Ограничения аппстора, тоже не так быстро можно выложить обнову. Как люди делают CI я понятия не имею, но думаю что тоже непросто.

Как дела обстоят в играх я не знаю, но там вроде все решают всякие SDK типа Unity которые неплохо абстрагируют от разработчика от платформы. Правда АААА игры вам поделать не дадут — будете фигачить слот машины и прочую казуальщину на конвеере 🙂

По итогу большую часть времени разработчик приложений тратит не на собственно разработку/алгоритмы/бизнес логику, а на борьбу с инструментарием, то есть обучается трюкам и приемам работы с конкретными устройствами/платформами/фреймворками которые быстро устаревают.

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

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

Хотите жизнь на изи моде — идите в бекенд. Такие дела.