Как начать свой путь в iOS-разработку

Поговорили с ведущим разработчиком команды мобильного SuperApp Александром Денисовым о его пути в iOS-разработке. А ещё — дополнили наш гайд по запуску своего приложения новыми ссылками. Но обо всём по порядку!

Чем ты занимаешься в Яндексе?

Я занимаюсь разработкой приложений Яндекс Браузер и Яндекс — с Алисой. Невероятно, но факт: я до сих пор в той же команде, куда пришёл в далёком 2013 году. У нас в команде никто не ограничен только работой с кодом: например, мне нравится участвовать в подготовке учебных курсов, а ещё у меня есть опыт в роли тимлида.

А как ты начинал изучать iOS-разработку?

Это было 13 лет назад. Вообще, в iOS-разработку я попал достаточно случайно. Я дважды стажировался на позиции сисадмина и неплохо себя зарекомендовал. Позже эта компания искала разработчиков для будущего проекта на iPad, меня порекомендовали — и я успешно прошёл собеседование.

Мой карьерный путь не был похож на целенаправленный. Его скорее можно было описать так: быстро изучай необходимое прямо сейчас и навёрстывай базу в процессе. Я учился на IT-инженера со специализацией в автоматизации производств, управлении процессами, работе с «железом» и имел опыт разработки веб-приложений. У меня были профильные знания с точки зрения computer science. Однако опыта разработки под iOS совсем не было, как и у 99% остальных разработчиков в то время.

Artboard

Ого! А что тебе помогло вкатиться?

Интересные проекты. В самом начале работы у меня была возможность попробовать свои силы помимо мобильной разработки ещё и в бэкенде. Мы тогда делали на заказ приложения для электронного документооборота: такие удобные мобильные инструменты для руководителей, которые интегрировались с развёрнутыми в компаниях СЭД, системами электронного документооборота.

Команда. У нас была молодая команда — преимущественно из вчерашних студентов, сильный техлид и отличные непосредственные руководители. Мы сами создавали процессы и инфраструктуру и принимали активное участие в проработке технических и продуктовых деталей.

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

Саша, а с какими трудностями ты столкнулся на старте?

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

Первые iPad с одноядерным процессором и малым объёмом оперативной памяти добавляли сложностей в разработке масштабных приложений — очень быстро упирались в ограничения «железа».

Не всегда было понятно, с чего начинать обучение. Конкретно по iOS в то время было мало хороших материалов, и я больше читал об архитектуре и технологиях в целом. Первым шагом в обучении стал поисковик и Stack Overflow, вторым — официальная документация и литература, которую рекомендовал мой техлид.

Кстати, о материалах. Что помогает тебе оставаться в теме?

Настроил пассивный канал поступления новых знаний: оформил подписку на iOS Dev Weekly. Стараюсь не пропускать новые лекции WWDC.

Ещё регулярно челленджу себя, забираясь в области, с которыми редко сталкиваюсь. Например, так я недавно подробно разбирался в SwiftUI и ML. Поставил себе цель подготовить лекцию к Школе мобильной разработки и в процессе хорошенько разобрался в теме сам.

Поделишься полезными ссылками?

Easy: для тех, кто только начинает

  • Лекции Школы мобильной разработки по iOS. Материал рассчитан на слушателей, которые хотят базово познакомиться с платформой, узнать больше об инструментах разработки, UI, многопоточности и систематизировать полученные знания. Также вы изучите разные подходы к построению архитектуры и научитесь собирать и тестировать приложения.

  • Hacking with Swift. Подойдет, если вы только делаете первые шаги в разработке мобильных приложений с помощью UIKit и SwiftUI. Здесь доступна обширная программа обучения, интерактивные тесты с распространёнными вопросами, которые могут встретиться на собеседованиях, и советы экспертов.

  • IOS App Dev Tutorials — это учебное пособие по созданию приложений для iOS. С помощью этого руководства вы изучите основы Xcode, SwiftUI, UIKit и узнаете всё — от общих языковых шаблонов до синхронизации напоминаний. В качестве бонуса — подборка полезных ресурсов: документация, видео, примеры кода и ссылки на форумы.

  • Бесплатный курс «Основы работы с Git» подходит для новичков и основан на реальных практических задачах. Вы сможете не только освоить все базовые навыки работы с Git, но и разобраться, в каких рабочих задачах он используется. Вся теория подкреплена схемами и визуальными материалами — вам не придётся искать и расшифровывать информацию. Заниматься можно в удобном темпе: материалы доступны 24/7.

  • Pro Git. Если ваша цель — знакомство с инструментом, то достаточно будет внимательно прочитать первые три главы. Для тех, кто хочет погрузиться с головой, есть разделы о том, как настроить собственный сервер с Git, как заставить систему Git вести согласно вашим желаниям, как наладить  взаимодействие при работе над общим проектом и автоматизировать почти всё, что только можно.

Опыт в моменте важнее теоретического знания. Однако со временем отсутствие теоретической базы может вас сильно замедлить или направить по ложному следу.
Это относится примерно ко всему: к языку программирования, алгоритмической подготовке, архитектуре, инструментарию, инфраструктуре. Поэтому без теории никуда.
Александр Денисов, ведущий разработчик команды мобильного SuperApp

Intermediate: для тех, кто уже вкатился

  • Kodeco. В коллекции этого каталога уже более 5 тысяч видеороликов и 50 книг об iOS, Android, Swift, Kotlin, Flutter и Dart. Каждую неделю каталог обновляют: актуализируют уже существующий контент, добавляют новые курсы, книги и статьи о фреймворках и технологиях.

  • Thinking in SwiftUI. Это не справочник по API SwiftUI, а скорее руководство по совершенствованию интуиции относительно того, как работает SwiftUI. Авторы этой книги подробно рассказывают о концепциях, лежащих в основе фреймворка, чтобы четко понять принципы его работы.

  • SwiftRocks, где вам доступны записи публичных выступлений и доклады Бруно Роша — разработчика в Spotify и создателя Burnout Buddy. В основном Бруно пишет статьи на темы iOS и Swift для продвинутых разработчиков, но также он высказывает своё мнение по общим вопросам разработки программного обеспечения. Например, сравнивает SwiftUI и UIKit, рассуждает, насколько необходимы основы программирования, и делится лайфхаками по устранению сбоев в iOS.

Hard: для тех, кто давно в теме

  • PointFree припасли на десерт. Это серия видеороликов, посвящённых функциональному программированию и Swift. В нулевом эпизоде ведущие кратко рассказали, чего стоит ожидать от этой серии. Следующие четыре эпизода можно также посмотреть бесплатно, остальные доступны по подписке. Для любителей хардкора в мире мобильной разработки: в лекциях можно познакомиться с новаторской The Composable Architecture, чтобы применять её при проектировании iOS-приложений.

Краткий пересказ от Yandex GPT