Мобильная разработка что это
Мобильная разработка — это просто и скучно? Доклад Яндекса
Существует миф, что создавать приложения для iOS или Android проще, чем быть, скажем, бэкенд-разработчиком. Разумеется, это не так: в работе с любой платформой есть свои сложности, всюду возникают неочевидные проблемы, требующие навыков в предметной области и за её пределами. Роман Абузяров из команды Яндекс.Чатов подготовил доклад о своих нескольких задачах, который показывает, насколько широкими знаниями должен обладать специалист по iOS. Доклад предназначен для начинающих и junior-разработчиков.
— Всем привет, меня зовут Рома, я iOS-разработчик в Яндекс.Чатах. Сегодня я попробую рассказать про то, что мобильная разработка — это очень интересно и сложно, и там есть чем заняться. Я сделаю это на примере задач, которые я решал в процессе моей стажировки и когда я был junior-разработчиком.
Я окончил факультет компьютерных наук в Вышке. На третьем курсе ФКН я немного позанимался iOS-разработкой, заинтересовался, мне понравилось. Я подумал — можно пойти куда-нибудь позаниматься, постажироваться. Удалось попасть в Яндекс на стажировку, и когда я ее закончил, то перешел в штат и сейчас продолжаю работать в команде Яндекс.Чатов.
Немного про Яндекс.Чаты. Мы занимаемся общением на многих сервисах Яндекса. Если вы с кем-то общаетесь в Яндексе, то, скорее всего, через Яндекс.Чаты. Есть, допустим, приложение Яндекс на мобильных девайсах, туда встроены чаты. Есть Яндекс.Район, где вы можете написать любому юзеру через Яндекс.Чаты. На Маркете вы можете с организациями общаться в чатах, спросить что-нибудь по товару и все такое. Список можно продолжать. Есть мобильный Яндекс.Браузер, где есть чаты, на Картах их можно открыть. В Яндекс.Коннекте, это такая штука для бизнесов, тоже поставляются чаты как бандл для бизнесов. Есть еще Аура, это такая социальная сеть, где можно свайпать посты и тоже общаться с юзерами через чаты.
Мы нанимаем, если у вас есть желание заниматься общением, приходите. Еще у нас есть стажировки в Сочи. Мы ездим туда в командировки каждые несколько месяцев. Про Чаты пока все.
Что и почему я хочу вам рассказать? Первое, что я заметил, пока учился на ФКН, — это что у многих людей вообще и у преподавателей в особенности предвзятое отношение к мобильной разработке. Они все считают — чего там делать? Кнопку подвигал, все просто. И особенным челленджем было взять диплом про мобильную разработку, потому что тебе скажут: возьми чего-нибудь посложнее.
Я хочу сегодня показать, что на самом деле все не так, это плохая стигма. В мобильной разработке много чего интересного и сложного. Второе — когда я пришел на стажировку, у меня не было никакого представления, какие задачи делают мобильные разработчики в компаниях. А команды, наоборот, хотят знать, чем вы хотите заниматься и есть ли у вас опыт промышленной разработки.
Я попробую сегодня пролить свет на все это, показать вам конкретные задачи, которые я решал, чтобы у вас сложилось примерное представление, что здесь происходит и чем можно заниматься.
Я вам покажу сегодня три задачи, которые я решал. Давайте сразу перейдем к первой.
Дыры в истории
Основная задача Чатов и, вообще, мессенджеров — отправлять сообщения кому-то и получать сообщения от кого-то.
Допустим, я могу использовать чат, чтобы общаться с моей мамой. Пунктуация авторская, запятых здесь специально нет. И я могу отправить ей какие-то сообщения, ждать, что она увидит их и все будет хорошо. Но мама имеет свойство иногда быть там, где связь не ловит: допустим, в метро или тоннеле.
И какое-то сообщение до нее по независящим от нас причинам может не доставиться. У не сложится не совсем правильное впечатление о беседе, она может начать паниковать. Мобильный мессенджер должен правильно эту ситуацию обработать.
Чтобы двигаться дальше, я расскажу вам немного важной информации о сообщениях. Первое — у каждого сообщения есть какой-то уникальный идентификатор. В данном случае это просто цифры по порядку. На самом деле они немного по-другому выглядят, но основная суть в том, что он уникальный и позволяет нам эти сообщения идентифицировать. Он хранится прямо внутри сообщения вместе с текстом, он у нас есть.
Второе, что есть в сообщении, — такой же уникальный идентификатор предыдущего сообщения. Он хранится там же и, зная идентификаторы, мы можем делать выводы о том, насколько целостная у нас история.
Сейчас ситуация такая. У мамы на телефоне три сообщения. Она их все прочитала и не понимает, что происходит, очень сильно паникует.
Чаты могут сразу эту ситуацию обнаружить. Мы смотрим на эти идентификаторы и видим, что перед четвертым сообщением должно быть третье, но его у нас почему-то нет, и есть второе. Эту штуку мы легко обнаруживаем. Большими буквами пишем — происходит загрузка сообщений, рисуем какой-нибудь спиннер, а сами в это время идем к нашему бэкенду и говорим ему: у нас такое-то сообщение потеряно между этими двумя, можешь нам его, пожалуйста, отдать?
Он нам его быстро и легко отдает, потому что нужно отдать всего одно сообщение. Мы его берем, встраиваем обратно и все выглядит нормально. Мама понимает полную ситуацию и не волнуется.
О чем нужно было подумать, когда занимаешься решением такой задачи? Первое — мобильные девайсы имеют свойство быть вне сети очень часто, и это нужно всегда держать в голове. Нужно понимать, что какие-то запросы могут обвалиться, нужно делать retry. Может быть, у вас девайс час был не в сети и потом нужно восстановиться, когда сеть появилась.
Второе — нужно уметь взаимодействовать с бэкендом. Во многих приложениях полезный навык — нужно отправлять запросы и парсить ответы. Третье — нужно понимать базовые структуры данных. Допустим, здесь мы можем понять, что эти сообщения связаны, то есть имеют свойства связанного списка. И эти свойства, то есть эту связь между сообщениями можно использовать, чтобы наш клиент стабильнее работал. Мы можем таким образом лечить дыры.
Недавние стикеры
Давайте перейдем к следующей задаче. Стикеры много где есть. Это такая картинка, которую вы можете отправить и вам не нужно ее предварительно загружать. Просто кто-то до вас кто-то ее загрузил на бэкенд и вам нужно ее только отправить ее идентификатор, и все другие пользователи смогут ее по этому идентификатору найти. «Недавние стикеры» — это такое специальное место, куда попадают стикеры, которые вы отправили последними. Можно стикеры, которые вам нравятся, часто так использовать и очень удобно к ним обращаться.
Допустим, я хочу отправить звезду. Я отправляю ее, она становится на вот это первое место в моих недавних стикерах.
Все остальные стикеры сдвигаются на один вправо. И когда я отправляю все последующие стикеры, все предыдущие также сдвигаются на один вправо, новый становится первым.
Тут можно сразу понять, что это похоже на структуру данных, которая называется «очередь» или queue или First In First Out. То есть первый элемент, который попадает туда вначале, он первым в конце и выпадет. Птичка, которую мы когда-то раньше добавили, вывалится, когда у нас закончилось место под эти недавние стикеры.
Однако, что будет происходить, когда мы хотим добавить стикер, который уже есть в нашей очереди? Допустим, это кошечка с монеткой. Продуктово мы понимаем, что хотим получить. Чтобы старая кошечка пропала на том месте, где она есть, а новая стала первой.
Но так как мы все разработчики, мы понимаем, что в очередь можно вставлять с одной стороны, доставать с другой стороны, а что-то менять в середине очередь не позволяет, или это будет супер-неэффективно. Что можно с этим попробовать сделать?
Я ввел еще одну структуру данных, которая называется Hash Map. На всякий случай уточню. Это такая таблица соответствия одних величин другим, грубо говоря. В данном случае ключом в нашей таблице будет выступать стикер или какой-то его уникальный идентификатор. А значением будет количество его вхождений в наши недавние стикеры.
Здесь я сразу обозначил, что они все зашли по одному разу, кроме птички. Зачем мы будем это использовать? Предположим, мы захотим наши данные, вот эту последовательность стикеров вытащить — допустим, сохранить ее в базу данных, чтобы потом юзер перезапустил приложение, и они у него восстановились в правильной последовательности. Мы будем доставать стикер с другой стороны, как из очереди, но выдавать мы их будем, только если количество вхождений этого стикера равняется единице. Если их было больше, чем один, мы его просто проигнорируем и выкинем.
Как это работает? Допустим, мы добавляем кошечку. Она попадает в нашу очередь. Число около кошечки стало 2. То есть сейчас в нашей очереди две кошечки.
Допустим, теперь мы хотим все последовательность стикеров сохранить, начинаем их доставать. Смотрим на календарик, он входил всего один раз.
Мы его без проблем достаем. Дальше мы смотрим на кошечку. Кошечка входила два раза, поэтому мы ее в этом моменте не берем, просто выкидываем, игнорируем ее, и число два уменьшаем до единицы.
Все последующие стикеры у нас были по одному разу, мы их спокойно достаем.
Все в порядке, у нас получается. Кошечка на данный момент тоже встречалась всего один раз, поэтому мы ее тоже достаем спокойно и все в порядке.
Давайте посмотрим на вот эти зеленые галочки. Какая последовательность стикеров у нас получилась?
Мы поймем, что получили ровно то, что нужно, и все работает так, как было поставлено в задаче.
О чем нужно было подумать в этой задаче? Здесь уже нужно знать структуры данных чуть побольше — знать, что такое очередь и Hash Map, какие операции у них определены и что можно вообще с ними сделать. Также нужно оценивать сложность. Вообще, полезно знать сложности операций на основных структурах данных, это позволит более эффективно строить композитные структуры или имплементировать алгоритмы. Третье, что очень важно делать и в работе, и в жизни, — адаптироваться к поставленной задаче, брать какие-то знания, которые у вас есть. Допустим, знание тех же структур данных. Складывать в единую картинку, которая будет решать ровно ту задачу, которая стоит перед вами в конкретный момент.
Картинка в картинке
Теперь давайте перейдем к третьей и последней задаче. Это картинка в картинке. Уточню. В Яндекс.Чатах есть звонки и есть видеозвонки.
Во время звонка вы можете свернуть ваш видеопоток собеседника в маленькое окошко и двигать его по экрану, при этом пользуясь мессенджером. Такой мультитаскинг получается, видео прилипает к углам экрана, когда вы его перетаскиваете. Чтобы добиться такой функциональности, нужно проделать несколько шагов. Первое и основное, что вам нужно сделать, — чтобы вот этот большой прямоугольный видеопоток стал маленьким и оказался в нужном вам месте. Должно произойти примерно это. Тут мы вспоминаем базовую геометрию — умножаем стороны прямоугольника на какой-то множитель, двигаем его середину и все хорошо, вот он в правильном месте.
Вторая задача посложнее. Нужно сделать так, чтобы он располагался в углах экрана и прилипал к ним. Для этого я решил применить стандартный фреймворк, который называется UIKit Dynamics.
Это такая штука, которая позволяет придавать визуальным объектам разнообразные физические свойства — гравитацию, инерцию, вот эти вещи. Конкретно из этого фреймворка я применил такую сущность, как Spring Field. Spring переводится как пружина. Это такое поле, которое в зоне своего действия притягивает объекты к какой-то точке.
В интерфейсе мессенджера это выглядит так. Красными точками показано направление применения силы. И если я оттягиваю эту вьюшку от середины, она притягивается обратно.
Для простоты я вот такой прямоугольник обозначил вот таким прямоугольником. Это желтая зона с точкой применения силы, обозначенной черной точкой.
Теперь еще раз вернемся к тому, как у нас поставлена задача. У нас есть основной экран пользователя, четыре точки на нем, и мы хотим, чтобы наш видеопоток в них притягивался. Как я начал ее решать? Мы просто берем наше целое поле, лепим его на весь экран. Обозначаем ему четыре точки притяжения, и фреймворк делает все за нас.
Так у меня, конечно, ничего не получилось сделать, потому что одному полю можно задать только одну точку притяжения, задать четыре точки не получится.
Я подумал: окей, второй этап. Мы берем четыре таких поля, располагаем их так, чтобы они заполнили весь экран, и расставляем точки там, где нам нужно притягиваться.
Но такое у меня тоже не сработало, потому что величины, которые можно изменять у поля, — это размер и его центральная точка. И притягивается она только в середину. Очень удобно, спасибо, Apple, но не получилось.
К чему я пришел в итоге? Мы берем наши поля, располагаем их так, чтобы они заполнили весь экран и не пересекались, не конфликтовали, и чтобы их середины оказались в нужных углах. Поля вылазят за экран, но нам это абсолютно никак не мешает, это выглядит вот таким образом:
Есть визуализированные поля, и эта вьюшка притягивается к месту, куда юзер ее тащит пальцем.
Чтобы данную задачу решить, нужно было знать следующие вещи. Первое — базовая геометрия. Вообще, когда занимаетесь какой-то визуальной мобильной или фронтенд-разработкой, нужно уметь вычислять вот эти прямоугольники, двигать фреймы, так сказать. Это полезный навык, его в школе можно получить.
Второе — нужно уметь работать с жестами юзера, чтобы вы могли считывать жесты, которые пользователь совершает, например свайпы, и чтобы для юзера работа с вашим приложением была плавной и интересной. Это тоже можно делать стандартными средствами, я потом покажу ссылку.
И третье, немаловажное: нужно знать системные фреймворки. Необязательно знать, как с ними работать, а просто знать об их существовании и о том, чего они вам могут помочь добиться. Потому что когда вам поставят какую-то задачу — сделай вот это, вы можете вспомнить: ага, есть такой фреймворк, я сейчас посмотрю в интернете, как им пользоваться и сделаю задачу. А если вы не будете о нем знать, вы просто подумаете, что даже не стоит брать такую задачу, потому что вы не знаете, что с ней делать.
Я показал вам всего три задачи, но на самом деле уже есть довольно много вещей, о которых надо подумать, экспертизу которых нужно знать, развивать. Задач сильно больше, и они все очень разнообразные и интересные. И если вы хотите, чтобы ваш продукт развивался, вам нужно их постоянно решать. Я еще обещал немного ссылочек:
Профессия: мобильный разработчик
Сегодня в мобильную разработку рвутся все: от инженеров до филологов. Им кажется, что они нашли золотую жилу и она вот-вот даст миллионные доходы. А между тем найти хорошего мобильного разработчика не так уж просто. Потому что хорошее приложение — это сложная архитектура, скрупулёзное проектирование и интенсивная работа над юзабилити. На коленке его не запилишь.
Кто это?
На первый взгляд кажется, что всё просто: мобильный разработчик — это тот, кто разрабатывает программы для мобильных устройств. Всё верно. Но большинство людей не из мира ИТ под мобильными устройствами подразумевают смартфоны и особо продвинутые — планшеты. Но мы-то с вами знаем, что мобильные устройства — это не только наши любимые гаджеты, носимая электроника, но и различные научные аппараты, компоненты исследовательских систем на базе гаджетов, компоненты интернета вещей. Это огромный мир приспособлений, который будет становиться всё больше и больше — мобильные приложения востребованы обычными пользователями, бизнесом, медициной, наукой и т.д. Поэтому профессия мобильного разработчика — это однозначно профессия будущего, во всяком случае ближайших 10-15 лет это точно.
Где нужен?
Сегодня мобильные разработчики востребованы везде: корпоративные приложения имеют мобильные версии, СМИ имеют мобильные приложения, бизнес активно переводит свои программы лояльности в приложения (у кого из нас нет приложений разного ритейла — от Ленты и Ашана до РивГош и Л’Этуаль) и т.д. Мобильное приложение — гарантия того, что ты будешь оставаться в руках своего клиента, и почти все компании это понимают. Поэтому мобильные разработчики нужны абсолютно везде. Перечислю наиболее перспективные отрасли, на которые можно ориентироваться сегодняшним студентам, желающим выйти в мир мобильной разработки (и вообще всем).
Средняя заработная плата
Уровень специалиста | Средняя заработная плата |
---|---|
Стажёр (Intern) | 26 272 руб. |
Младший (Junior) | 59 061 руб. |
Средний (Middle) | 114 908 руб. |
Старший (Senior) | 187 925 руб. |
Ведущий (Lead) | 200 915 руб. |
Как видите, особенностью рынка мобильной разработки является большой шаг от стажёра к джуну и от джуна к миддлу: между этими уровнями заработная плата растёт практически в два раза. Важная особенность: заработная плата растёт только с вместе с ростом квалификации разработчика.
Базовые требования к профессионалу
Стек мобильной разработки активно меняется, поэтому, выбирая мобильную разработку, вы должны быть готовы поглощать новую информацию, изучать мануалы в огромных количествах и постоянно перестраиваться. Основные мобильные платформы постоянно обновляют стек и развивают его. По объёму изучаемой литературы для мобильного разработчика эту профессию можно сравнить, например, с профессией терапевта. Проще говоря, без постоянного чтения и освоения новых принципов работы с кодом вы будете говнокодером.
Конкретные требования по стеку определяются задачами компании, тем, что она использовала ранее и даже средним возрастом разработчиков команды. Но в целом можно обозначить несколько ключевых требований, которые скорее всего будут в желаемой вакансии.
Топ-5 востребованных технологий у специалистов по данным «Хабр Карьеры», 2 полугодие 2019 года
Кроме технических знаний, необходимо понимать основы той сферы, в которой вы собираетесь работать — так программисту будет проще понять потребности и проблемы пользователей мобильного приложения. Как минимум, это может быть базовый учебник по профилю компании, как максимум — тесное общение с коммерческой командой и тестированием и постоянное исследование профиля клиента.
Важные личные качества
Мобильный разработчик — это стрессовая, нагруженная работа, связанная с постоянным общением, с нервами, которые непременно настигнут вас, когда вы начнёте читать отзывы пользователей на работу своего приложения 😉 Поэтому будущий мобильный разработчик должен обнаружить у себя несколько важных качеств.
Необходимость знания иностранных языков
Вот некоторые ключевые ресурсы для мобильных разработчиков.
Где учиться
В отличие от программирования другого профиля, мобильная разработка в вузах представлена крайне слабо, поэтому это, так сказать, дополнительная квалификация для разработчика, которую нужно осваивать самостоятельно.
Лучшие книги и средства обучения
Очень сложно рассказать про книги, потому что всё зависит от того, что, на каком языке и для какой платформы вы собрались разрабатывать. Поиском можно найти хорошие подборки — например, на сайте Skillbox (эта и другие ссылки в статье не являются рекламой, просто хорошие материалы).
Будущее мобильного разработчика
Профессия мобильного разработчика особенная во всём. Так, у неё очень низкий порог входа и в то же время огромный шаг от джуна к миддлу. Хороший мобильный разработчик отличается от обычного прокачанными навыками, разносторонними знаниями в смежных с разработкой сферах и т.д. И действительно, нередко случается так, что этот путь занимает больше двух лет кропотливой работы.
Будущее у мобильных разработчиков пока весьма уверенное: сомневаюсь, что мир откажется от мобильных смартфонов и планшетов в ближайшее время, не говоря уже о росте разных видов носимой электроники и IoT. Поэтому развитие программистов этого типа будет выглядеть как пошаговый переход junior — middle — senior — lead. Поэтому скорее важно выбрать отрасль и компанию, в которой этот путь будет пройден.
Из ребят, которым внезапно наскучила мобильная разработка, получаются хорошие фуллстек разработчики для веба или даже энтерпрайз-программисты. В общем, особых ограничений в карьере действительно нет.
Мифы профессии
Главный совет
Не идите в мобильную разработку за модой или весёлыми рабочими буднями. Это довольно тяжёлый труд, связанный с непрерывным самообразованием и необходимостью делать регулярные обновления. Да, в мобильной разработке интереснее, потому что один разработчик занимается не просто каким-то фрагментом, а большим блоком, модулем или даже почти всем приложением. Интересно бодаться со сторами и попадать под санкции, когда твоё приложение удаляют, интересно работать с конечным пользователем. Выбирайте эту специальность только в том случае, если вы готовы к труду и профессиональной работе. Некачественных мобильных приложений и так хватает 🙂
Кто такой мобильный разработчик и как им стать
Рассказываем, как стартовать в мобильной разработке и почему без Мака у вас только один путь.
Мобильный разработчик — это программист, который пишет приложения для мобильных устройств. К ним относятся не только смартфоны и планшеты, но и умные часы, фитнес-трекеры, электронные читалки, GPS-навигаторы и все остальные штуки с экраном и клавиатурой, которые можно носить с собой.
Большинство носимых устройств работает под управлением Android или iOS. Поэтому мобильные разработчики пишут софт для этих операционных систем.
Фанат Free Software Foundation, использую Linux и недолюбливаю Windows. Пишу истории про кодинг и программы на Python. Влюблен в LISP, но пока что не умею на нем программировать.
Немного истории: предсказание Джобса и революция мобильной разработки
Мобильная разработка в нынешнем её понимании возникла в нулевых, после выхода Java Micro Edition и WAP — урезанной версии доступа в интернет. Люди хотели развлекаться в сети, проверять электронную почту, общаться в ICQ — делать всё то же самое, что и на обычных компьютерах, но со своих мобильных телефонов.
Специальная версия языка Java для устройств с ограниченными ресурсами — телефонов, КПК, плееров.
Разработчиков было мало, а под каждую модель телефона приходилось писать отдельную версию программы. Не существовало и удобной системы дистрибуции, хотя идею маркетплейса приложений Стив Джобс выдвинул ещё в 1983 году на международной конференции по дизайну в Аспене.
В выступлении «Будущее уже не то, что раньше» Джобс сравнил распространение программ с музыкальными магазинами: человек приходит, берёт бесплатно демку софта, а потом оплачивает полную версию. Причём всё это удалённо, через телефонную линию с помощью номера банковской карты. «Я пока не знаю, как мы это сделаем, но нам это определённо нужно», — закончил он описание будущего AppStore, который появился только через 25 лет.
Первое время рынок мобильной разработки развивался слабо, но Apple и Google постепенно изменили ситуацию:
В мобильной разработке произошла революция: появился спрос на приложения, система дистрибуции и удобные способы монетизации. Телефоны перестали быть просто звонилками — их новые функции надо было как-то использовать.
Перспективы мобильной разработки в цифрах
Мобильных разработчиков нужно всё больше. По данным международной системы аналитики Statcounter, в апреле 2020 года доля мобильного трафика составляла 57%, хотя еще в 2012 году не превышала 14%. Маркетплейсы тоже растут: в первом квартале 2020 года Google Play предлагал 2,5 млн приложений, AppStore — 1,8 млн (по данным Statista.com ).
Вероятно, всё это надолго. Уже появляются док-станции для смартфонов: ноутбук без процессора, превращающий смартфон в полноценный компьютер или компактный настольный девайс, к которому можно подключить смартфон, монитор и клавиатуру с мышью. Два таких проекта — Mirabook и NexDock — получили краудфандинговые инвестиции, а Samsung запустил свою линейку DEX Station.
Какие языки используют для мобильной разработки
Фронтенд — внешняя часть приложения, с которой взаимодействует пользователь. Как руль и педали в машине. Бэкенд — скрытая от пользователя часть приложения, которая обеспечивает всю работу. Как двигатель и ходовая часть.
Kotlin — язык программирования, основанны на Java, разработан в питерской компании Jetbrains.
Язык программирования, созданный Apple. Основная идея — преодолеть все недостатки Objective-C и сделать его максимально простым.
Основанный на Си язык программирования, используется в MacOS и iOS.
Сейчас Apple советует писать на Swift, а Google агитирует всех за Kotlin. Причина в том, что Swift появился в недрах Apple — он изначально создавался как базовый инструмент мобильной разработки, который закрывает все недостатки «старичка» Objective-C. А Kotlin, наоборот, приглянулся командам Android-разработчиков и сначала получил поддержку «снизу». Отвечая на их просьбы, Google в 2019 году назвал Kotlin языком № 1 для Android.
Как новичку выбрать платформу для мобильной разработки
Среда разработки для Android на базе Intellij Idea от Jetbrains. Включает эмулятор Android, языки программирования, компиляторы, инструменты для сборки приложения и создания интерфейсов.
Аналог Xcode от Jetbrains.
Среда разработки для iOS и других операционок от Apple. В ней можно писать и запускать код, собирать и тестировать приложения, создавать графические интерфейсы.
Вот базовый набор инструментов для старта в Android-разработке, который можно установить для Windows, Linux или MacOS:
Набор для старта в iOS-разработке:
Если нет Мака, но попробовать очень хочется, есть три простых варианта:
Где требуются мобильные программисты
Если коротко, то везде. Мобильные приложения делают для любых задач: календари, почта, заметки, игры, мобильный банкинг. Есть даже эмулятор баяна под iOS: щёлкаете по нарисованным на экране кнопкам — наслаждаетесь музыкой:)
Десктопные сервисы и программы тоже не отстают и запускают свои мобильные приложения. В маркетплейсах Google Play и AppStore, например, уже есть 1C Bitrix, Photoshop Lightroom и «Госуслуги». Но мало написать приложение — его нужно постоянно обновлять и поддерживать. Это огромная работа, для которой тоже требуются специалисты.
Но есть и особенно перспективные направления. Ниже — данные за 2019 год.
Игры. Огромная и прибыльная индустрия.
Образование и развлечения. Изучение языков, книги, музыка, путешествия, тренировки, обучающие курсы. Онлайн-образование все сильнее теснит офлайн — люди видят, что это удобно и эффективно. Только за 2019 год объём рынка интернет-обучения вырос на 60%. И это не однократный рост — тренд продолжится.
Банки и финансы. Все банки уже пришли в смартфоны. Например, в приложении «Точка-банка» можно открыть и закрыть счёт, а в мобильном Сбербанке — выпустить физическую или виртуальную карту. Даже «Система город», у которой много офлайн-точек для оплаты коммуналки, уже есть в мобильных.
Это интересная и сложная отрасль. Начинающему разработчику попасть в неё не всегда реально, но грамотным специалистам финтех рад.
Так что потребность в мобильной разработке с годами только растёт — это гигантский рынок с большими оборотами.
Сколько зарабатывает мобильный разработчик
Зарплатная вилка Android-разработчика по данным hh.ru на конец июня 2020 года:
Кроме языка программирования, требуется знание Git и специальных библиотек: RxJava, Dagger, Android Architecture Components.
Зарплатная вилка iOS-разработчиков по данным hh.ru на конец июня 2020 года:
Обычно в вакансиях требуют знание библиотеки RxSwift.
Как стать мобильным разработчиком за семь шагов
Вот дорожная карта: на входе — новичок, на выходе — деньги, слава и крутые задачи.
Конечно, всему этому можно учиться самостоятельно — по книгам, видео и мануалам. Но это трудный и долгий путь, особенно для новичков в программировании. Гораздо эффективнее стартовать с опытными наставниками и постоянной обратной связью.
На курсе «Мобильный разработчик» от Skillbox студенты создают полноценные проекты в атмосфере реальной студии, изучают весь необходимый набор технологий и общаются с менторами. Первые полгода можно учиться бесплатно, а деньги за курс отдавать уже с первой зарплаты.