Как оставаться востребованным специалистом: Тренды мобильной разработки 2023
Рынок технологий меняется едва ли не каждый месяц, а чтобы соответствовать запросам заказчиков, разработчикам приходится беспрерывно обучаться новому.
Илья Богин, эксперт программы ускоренного онлайн-бакалавриата «Фронтенд и мобильная разработка» от Яндекс Практикума и ИТМО, руководитель Школы Мобильной Разработки Яндекса, ex-руководитель разработки мобильных приложений Яндекс и Яндекс.Браузер, рассказал о сегодняшних и будущих трендах, а также о том, какие навыки стоит осваивать уже сейчас, чтобы остаться востребованным специалистом.
Есть проблема — есть тренд
В мобильной разработке сейчас есть три основные проблемы, решение которых диктует тренды на ближайшие два-три года. Это необходимость делать приложения для разных мобильных платформ, фрагментация версий, медленная раскатка обновлений и недостаточная скорость самой разработки. Рассмотрим каждый пункт подробнее.
Содержание
Два разных мира и фрагментация внутри миров
Как минимум, есть два больших лидера рынка мобильных операционных систем — iOS и Android, при этому существуют и более нишевые игроки. Пользователи, до которых мы хотим дойти с нашим мобильным приложением, используют и первую, и вторую платформу. И нам необходимо создавать приложения для обеих операционных систем с разными архитектурами, языками программирования и т.д.
Это уже два разных мира, но ситуацию усугубляет то, что версии операционных систем тоже очень фрагментированные. В мире Android хвост старых версий очень длинный. Поэтому кто-то живет на последней версии, а кто-то — не обновлялся пять лет. iOS лучше поддерживает жизненный цикл аппаратных девайсов и девайсы обновляются быстрее. Но Apple сама, как ни странно, вносит дополнительную фрагментацию. Например,выпускает новый способ создания UI приложения с использованием SwiftUI. Чтобы воспользоваться этими возможностями, приходится отрезать поддержку части старой аудитории, которая не обновилась до необходимой версии. Поэтому разработчики вынуждены сочетать новые технологии и делать вещи, которые работают на старых версиях.
В ответ на эти вызовы родились кроссплатформенные фреймворки. Из наиболее успешных решений сейчас активно развивается Flutter, но еще можно отметить Kotlin Multiplatform Mobile.
Деплой за три недели
Если говорить о мире фронтенда и бэкенда, то там деплой практически моментальный: пользователи видят новую версию софта почти сразу после того, как она выпущена в релиз.
В случае же с мобильными приложениями все начинается с того, что сборку нужно отправить на ревью в соответствующий стор приложений — допустим, в AppStore или Google Play. Ревью можно прождать и день-два, и неделю, и даже дольше. Наконец-то ваше приложение прошло ревью, казалось бы, вот оно, счастье, но затем потребуется время на раскатку и обновление версий у пользователей. По нашим оценкам, за три недели раскатки приложение дойдет до 50% вашей текущей аудитори, срок может разниться в зависимости от региона и других параметров. Оставшиеся 50% аудитории будут обновляться еще медленнее: у кого-то выключены автоапдейты, у кого-то в нужный момент нет в доступе зарядки и хорошей связи. Например, я обновляю все приложения раз в пару дней, а у моей жены около 50 необновленных приложений, и её это вообще не волнует. На практике дойти до 100% никогда не получается — всегда останется «хвост», который будет сидеть на одной из ваших старых версий.
В итоге важные изменения приложений очень медленно «доезжают» и «прорастают», и это большая проблема. Один из вариантов как можно ее решить — использование Backend-DrivenUI подхода. В этом случае конфигурация того, что пользователь видит на экране в данный момент, формируется на сервере. То есть это не «зашито» в клиенте, а формируется на сервере. Тогда деплой происходит по законам фронтенда и бэкэнда, а не по законам мобильного мира: вы можете быстро раскатать изменения, и новая версия применится к пользователям на следующий заход в приложении. Поэтому выбор — «50% и три недели», или «завтра и для всех». Это огромная разница, и в крупных компаниях Backend-Driven UI очень активно используют и развивают.
Совсем недавно мы в Яндексе провели первую конференцию, которая целиком посвящена вопросам Backend-Driven UI. До этого конечно же были доклады на различных мобильных конференциях, но они были частью общей программы. Сейчас же возросло и количество внедрений BDUI, и людей, которые этим занимаются — так что тема заслуживает отдельного мероприятия.
Быстрее, еще быстрее
Третья яркая проблема: скорость разработки всегда отстает от продуктовых желаний. И чем больше продукт, тем больше разница между готовностью бизнеса вносить изменения и скоростью разработки. Это связано и со сложностью процессов, необходимостью интегрироваться в общие механизмы, и с необходимостью тщательной проверки. Поэтому любые вещи, направленные на ускорение разработки — это то, что мобильная индустрия ждет, ищет и пытается воплотить.
Существует много трендов, направленных на то, чтобы ускорить разработку. И кроссплатформенность вносит сюда большой вклад, ведь с меньшим количеством разработчиков можно делать большее количество функциональности. Или тем же коллективом делать еще больше новых фичей.
Также к способам повысить скорость разработки следует отнести тренды на развитие нейросетевых ассистентов программистов по мотивам Copilot и подобных технологий. Они могут на лету предлагать шаблоны, генерировать не только сигнатуру, но и элементы реализации. Это то, что будет сильно влиять на индустрию в ближайшем будущем.
Навыки времени
В свете нынешних трендов для карьеры разработчика больший вес приобретают обобщенные навыки, не привязанные к конкретным технологиям.
General coding
В первую очередь здесь важно сказать о general coding. Если коротко, то это семейство навыков работы со сложностью при разработке. Как найти оптимальное решение если оно не очевидно? Как выбрать наиболее перспективных подход для решения если их несколько? Как пройти путь от идеи до работающей реализаци?
Какие трудности могут возникнуть на пути? Не секрет, что при написании кода можно допустить ошибку. Чем сложнее код, тем больше вероятности ошибки и тем сложнее ее обнаружить. Навыки general coding включают умение видеть и искать ошибки в собственном коде. И не только путем пошаговой отладки своего или чужого кода. Это важный навык, ведь конкретный пример, где ваш код не работает, далеко не всегда будет под рукой.
Когда мы говорим, что Copilot-like-технологии развиваются и занимают всё больше места на рынке, важность general coding навыков пропорционально растет. ИИ генерирует код, но нам важно убедиться, что он работает так, как нужно — это в том числе об умении читать код и видеть ошибки. Можно постоянно заниматься отладкой, но это будет уже ретроактивное действие, съедающее большое количество ресурсов.
Адаптивность и Т-shaped форма навыков
Второй важный аспект после general-кодинга — умение быть гибким, адаптивным, осваивать новые знания, свежие фреймворки и быть открытым к этому. Да, не всегда хочется опять что-то изучать и начинать заново. Но в сфере IT это приходится делать постоянно, ведь фреймворки сменяют друг друга, и ваши знания становятся не такими актуальными на рынке. Поэтому важна готовность меняться и изучать новые вещи.
Значима, так называемая, Т-shape форма навыков. Верхняя планка буквы T говорит о широте кругозора: человек изучает новые области, смежные вещи, обладает знаниями и умениям в различных областях программирования. То есть специалист более-менее представляет, как те или иные вещи работают на платформе — авторизация, какие проблемы ускорения сборки могут быть, какие способы подхода к построению архитектуры можно использовать и так далее. Речь не о глубине знаний во всех областях, а о базовом уровне, который показывает, что разработчик будет начинать уже не с нулевой отметки.
Вертикальная «ножка» буквы Т говорит об области, где человек хорошо разбирается. Это демонстрирует, что он может углубиться в сложные вещи настолько, насколько это будет необходимо. Если эта палочка короткая или вообще отсутствует, получается, либо специалист не сталкивался со сложными задачами, либо не смог освоить сферу. И то, и другое не нравится работодателям.
Где изучать актуальные тренды мобильной разработки
Важно уделять время актуализации собственных знаний и отслеживанию трендов на рынке. Самый простой способ это сделать — проходить обучение. Стоит выбирать школы и программы, создатели которых сами в курсе последних тенденций и отражают это в продукте. Например, совместная программа Яндекс Практикума с ИТМО по мобильной разработке и фронтенду как раз такая: в ней учтены актуальные запросы работодателей, а студенты учатся на реальных современных задачах специалиста уровня junior.
Также помогут оставаться в курсе трендов профильные информационные ресурсы и участие в профессиональном комьюнити.
Без soft skills — никуда
Третья вещь, о которой хочу сказать — soft skills. В 95% случаев разработка — это командный труд. Вы взаимодействуете со смежными специальностями: бэкендом, дизайнерами, тестированием и т.д. И чем более эффективно вы будете коммуницировать, тем больше пользы будет для проекта. Умение слушать и слышать собеседника, находить компромиссы, уметь объяснять проблемы, причём не только специалистам, но и тем, кто находится немного «сбоку» от технологий. На мой взгляд, важно и в целом понимание того, как работают люди в смежных областях. Знание, как устроены процессы дизайна или продакт-менеджмент, поможет выстроить разговор. Поэтому не стоит замыкаться только в своей сфере.