Обложка: Как стать разработчиком мобильных приложений: рассказывает эксперт

Как стать разработчиком мобильных приложений: рассказывает эксперт

Давид Григорян — эксперт в сфере разработки мобильных приложений на платформе iOS, главный инженер по разработке в Сбербанке. Он принимает активное участие в развитии сообщества, выступает на конференциях и публикует тематические материалы.

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

Востребована ли профессия мобильного разработчика? Легко ли найти работу в этой сфере?

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

Даже в докоронакризисные времена на рынке была нехватка в мобильных разработчиках. Сейчас ситуация стала намного острее.

Согласно исследованиям, в России число специалистов в области мобильной разработки оценивается в 25-30 тыс. человек. Для тех предложений, которые есть на рынке, этого мало. Разница в зарплатах в этой области может составлять от 100 до 200 тыс. руб. для одной и той же позиции.

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

Какие направления существуют в мобильной разработке? Есть ли смысл осваивать кроссплатформенные решения?

Существуют три основных направления в мобильной разработке: Android, iOS и кроссплатформенные решения (Flutter, React Native, PhoneGap).

Для Android-разработки используются языки Kotlin и Java, для iOS — Swift и Objective-C. Ещё несколько лет назад основными языками для Android и iOS были Java и Objective-C. Однако с появлением новых языков многие проекты, в том числе крупных IT-компаний, стали использовать современные решения. Сейчас начинающему специалисту достаточно владеть знаниями об основной платформе, на которой он разрабатывает (iOS или Android), а также одним из новых языков программирования (Swift или Kotlin).

Нужно исходить из требований того региона, в котором вы собираетесь искать работу. Например, если вы живёте и собираетесь работать во Владивостоке, где основные вакансии по iOS требуют знания Swift, то очевидно, что изучение Objective-C будет неоправданным.

Кроссплатформенные решения в России не так востребованы как нативные (родные). Но у них есть своя ниша. В основном это стартапы, которые требуют минимальных вложений для реализации задуманной идеи на обеих платформах.

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

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

Разработчик в целом — это не только тот, кто набирает код на клавиатуре. Это специалист, который понимает конкретную бизнесовую проблему, которую ему необходимо решить с помощью этого кода. Мобильный разработчик — не исключение. Единственное отличие — это понимание особенностей мобильных технологий в целом (таких как push-уведомления, ограничения скорости интернета, зарядки и памяти).

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

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

Мобильные приложения могут выступать как:

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

Первый вариант встречается не так часто. Как правило, это простые будильники, To-Do List’ы без возможности синхронизации и прочие приложения. Вся настройка и кеширование в таком случае происходит на самом девайсе. Одним из вариантов синхронизации может быть iCloud — если говорить об iOS без использования собственных бэкенд-решений.

Как стать разработчиком мобильных приложений?

Если мы говорим про случай, когда у человека нет знаний и опыта в программировании, то стоит для начала изучить:

  • один из языков программирования (Kotlin или Swift),
  • саму платформу (Android или iOS),
  • объектно-ориентированное программирование,
  • алгоритмы и структуры данных (без фанатизма, только основные принципы).

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

Стоит оговориться, что для начала разработки под iOS необходимы устройства от Apple. Как минимум нужно приобрести бюджетный Mac mini или MacBook на вторичном рынке. Для изучения одного из языков программирования и изучения самой платформы подойдут основные туториалы на сайте Apple или Android. В идеале — найти ментора, который поможет на первоначальном этапе и выстроит план обучения. Курсы тут тоже будут кстати, но не стоит надеяться, что после простого их прослушивания всё станет очевидным и понятным.

Достичь успеха получится, если заниматься самостоятельно, делая домашние задания и разрабатывая собственные мини-проекты, которые в дальнейшем станут отличным портфолио для поиска первой работы.

Какие ошибки чаще всего совершают новички?

Многие новички совершают ошибки при изучении новой области. Я не был исключением.

  1. Не стоит сравнивать свой темп обучения с другими. Кому-то материал даётся за день, другому потребуется неделя или две. Но в итоге они оба овладеют этим материалом. Попытка сопоставлять себя с другими, как правило, ничем хорошим не заканчивается,
  2. Пустое прослушивание/просматривание курсов и туториалов ни к чему не приводит. Так материал не усваивается. Да, знания откладываются в кратковременной памяти, но спустя пару дней всё забывается. Без практики освоить профессию невозможно. Поэтому главный совет — выполнять задания, делать свои проекты.
  3. Отдых. В своё время я думал: «Зачем тратить время на отдых, если за это время можно изучить что-то новое или освоить то, что уже изучил?». Однако это неверная позиция. Начиная работать с материалом или заданием, вы будете сталкиваться со сложностями и непониманием. Как правило, это решается перерывом на 15-20 минут. Если вы вернулись к проблеме со свежей головой, а решение всё равно не удается найти, вернитесь к ней через день. Многочасовая зубрёжка здесь неэффективна.

Насколько сложно войти в мобильную разработку в отличие от смежных направлений, например, веб-разработки?

Есть мнение, что вход в мобильную разработку сложнее, чем в тот же веб. Но я не согласен с этим аргументом. Для освоения веб-технологий как минимум потребуются знания о том, как работает интернет в целом, как действуют основные протоколы взаимодействий между клиентом и сервером. Добавьте сюда HTML/CSS/JavaScript, один из серверных языков (PHP/Python/Java/Go/Ruby), SQL и много чего ещё интересного. Это вовсе не значит, что мобильному разработчику не нужно понимать, как работает интернет, или иметь представление о смежных технологиях. Но это всё-таки не основной стек технологий, с которым специалисту нужно будет иметь дело изо дня в день.

Как известно, во фронтенд в целом легко входить, но сложнее поддерживать себя в форме. Обновления инструментов для разработчиков Apple и Android-платформ, выходят ежегодно, их нужно изучать и применять. Похожая ситуация и с JS-фреймворками для фронтенд-разработчиков.

Останется ли мобильная разработка востребованной в ближайшие годы?

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