С чего начать путь iOS-разработчику

Если в последнее время у вас возникал вопрос, востребованы ли iOS-разработчики сегодня, наш ответ — да. И еще как. На апрель 2022 года на резюме одного iOS-разработчика приходится больше четырех открытых вакансий на HH.ru. В App Store ежедневно публикуется 865 новых приложений. Сегодня в магазине находится более 2 000 000 программ. Компании заинтересованы в реализации «яблочных» приложений и найме специалистов для этого.

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

Другие статьи серии: «Android-разработчик»«Системный аналитик»


КТО ТАКОЙ IOS-РАЗРАБОТЧИК

iOS-разработчик — это специалист, который пишет приложения для операционной системы iOS.

Задачи iOS-разработчика. На старте карьеры начинающие разработчики чаще всего занимаются исправлением мелких багов и рефакторингом кода. Когда наберетесь опыта, в ваши задачи будет входить: разработка нового функционала приложения и его поддержка, релиз приложения в App Store. Опытным специалистам поручают проектирование архитектуры приложения и настройку CI/CD.

Необходимые устройства. Обязательно понадобятся MacBook или iMac. Желательно также иметь устройство, под которое вы будете разрабатывать, — iPhone или iPad, с помощью которых проверите работу приложения. Конечно, есть специальные программы, которые помогают запустить приложение с ноутбука или компьютера, но в таких эмуляторах доступен не весь функционал мобильного устройства.

Если вы хотите попробовать себя в iOS, но не имеете подходящего устройства, можете рассмотреть следующие варианты: 

  1. установка MacOS на виртуальную машину VirtualBox или VMWare;
  2. сервисы для удаленной работы на Mac;
  3. сборка Хакинтош — компьютера, совместимого по железу с продукцией Apple и работающего на Mac OS.

 

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

ПЛЮСЫ И МИНУСЫ ПРОФЕССИИ 

 

+

-

Поиск работы

iOS-разработчики сейчас очень востребованы.

На апрель 2022 года на портале HeadHunter открыты 1 155 вакансий — это на 27% больше, чем в прошлом году. 

Вместе с этим в профессии очень высокий входной порог знаний. На старте вам надо знать алгоритмы и структуры данных, паттерны проектирования, SOLID, Clean Architecture, Swift, основные фреймворки, уверенно пользоваться Xcode, и на этом список не заканчивается.

Техника

Разработчик всегда знает, под какие устройства и ОС он разрабатывает. Это облегчает тестирование приложений.

Но существуют сложности с приобретением необходимых устройств.

Обучение

Apple предоставляет подробную документацию. При возникновении нетипичных проблем вы можете задать вопрос на форумах сообщества, например, Stack Overflow, MacRumors, Ray Wenderlich, Hacking with Swift.

Учитывайте, что большинство этих материалов на английском языке.

Рабочая среда 

Xcode предназначена конкретно для iOS-разработки. Она регулярно обновляется, причем обновления часто привязаны к выходу новой ОС, что позволяет отслеживать критические изменения. 

Из альтернативных IDE есть AppCode, но в ней отсутствуют важные для разработки инструменты —  конструктор интерфейсов, playgrounds, проверка исходного кода, view debugger и SwiftUI Preview.

При этом разработчики часто сталкиваются с багами и проблемами с производительностью в Xcode. На данный момент оценка Xcode в App Store— 2,5 из 5.

Экосистема

Apple внимательно относятся к безопасности устройств внутри экосистемы. Например, все приложения сторонних разработчиков помещаются в «песочницы», что ограничивает доступ к файлам, хранящимся в других приложениях, и не позволяют в них собирать и изменять информацию. 

Но вместе с этим из-за закрытости экосистемы Apple разработчик не может выйти за ее рамки и поменять поведение стандартных iOS-инструментов, в том числе у него нет доступа к файловой системе.

КАКИЕ HARD И SOFT-СКИЛЛЫ НУЖНЫ IOS-РАЗРАБОТЧИКУ 

Hard Skills

Основы. Для каждого разработчика вне зависимости от стека есть база, которую необходимо изучить: 

  • Алгоритмы и структуры данных (объекты, массивы/хэш-мапы, связанные списки, стеки, очереди, деревья, графы);
  • ООП, принципы проектирования SOLID, принципы программирования KISS, DRY и другие, паттерны проектирования, шаблоны GRASP и Clean Architecture;
  • Базы данных и язык запросов SQL;
  • Способы организации взаимодействия с сетью (REST, HTTP, UDP, TCP);
  • Системы контроля версий Git — позволяют вносить изменения в рабочих файлах;

Также нужно иметь представление про

  • Архитектуры ЭВМ и UNIX-системы;
  • Методологии разработки ПО (Agile, Scrum, Kanban, XP, RAD и другие);
  • Архитектурные подходы в разработке ПО: MVC, MVVM, MVP, VIPER

Языки программирования. iOS-разработчик должен уверенно владеть Swift. Если вы только начинаете его изучение, рекомендуем приложение Swift Playgrounds, с помощью которого вы разберетесь в основах и напишите первое iOS-приложение. Также рекомендуем познакомиться с Objective-C. На этом языке написано много крупных проектов, которые сейчас переписывают на Swift. 

Фреймворки и библиотеки: 

  • Apple UIKit, Foundation и CoreAnimation — основные фреймворки, которые используются в iOS-разработке. Их знание обязательно.
  • GCD и NSOperation — основные фреймворки для асинхронной работы, позволяют управлять запущенными задачами и процессами. Их знание также обязательно. 
  • Moya, Alamofire, RxSwift, RxCocoa, Realm — сторонние библиотеки и фреймворки. Изучите их, так как они часто встречаются в коммерческой разработке. 
  • SnapKit, Swinject, Kingfisher — знание этих библиотек не требуется на входе в профессию, но станет преимуществом.

IDE и инфраструктура. Как говорилось выше, предпочтительная IDE для разработки под iOS — это Xcode. Разберитесь в ее функционале: какие редакции есть, как подключить библиотеку, как использовать плагины. Также изучите вспомогательные инструменты: Xcode Instruments app (утилита для дебага и отладки) и Fastlane (утилита для автоматизации сборок и тестирования). И познакомьтесь с горячими клавишами в XCode — их знание помогает существенно сэкономить время разработки.

UI/UX-дизайн. Создание пользовательского интерфейса на основе макета — базовый навык для iOS-разработчика. Чтобы понимать, как строить такие интерфейсы, изучите принципы проектирования интерфейсов

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

В будущем, когда вы наберетесь опыта, вам пригодятся знания этих инструментов: 

  • Core Data — фреймворк для взаимодействия с базой данных;
  • SPM, CocoaPods, Carthage — менеджеры зависимостей и инструменты для подключения в проект утилит, библиотек и зависимостей;
  • Push Notifications — сервис по отправке уведомлений на устройство Apple с вашего приложения;
  • App Store — изучите, как подготовить приложение к публикации в App Store, обновлять и поддерживать приложение, оценивать производительность.

Soft Skills

Ваше развитие как разработчика во многом зависит и от того, как вы умеете работать в команде, отстаивать позицию и доносить мысли. Мы советуем уделить особое внимание следующим soft skills: 

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

Умение учиться. IT-сфера непрерывно растет, постоянно появляются новые технологии. Определите, как вы лучше усваиваете информацию,­ и учитесь — при помощи книг, курсов, блогов, каналов, общения на форумах или митапах. 

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

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

Системный подход к решению задач. Научитесь оценивать время выполнения задач, соотнося их сложность со своими навыками. Разбивайте задачи на подзадачи и распределяйте время на каждую из них. Расставляйте приоритеты и ответственно относитесь к выполнению. Проявляйте любопытство и старайтесь сами разобраться в проблеме. При этом не зазорно обратиться за помощью, если зашли в тупик: объясните проблему, расскажите о возможных вариантах решения и спросите, как поступил бы более опытный коллега.

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

КАК ПОДГОТОВИТЬСЯ К СОБЕСЕДОВАНИЮ

Чтобы успешно пройти собеседование, от вас потребуются:

  • Хорошие теоретические знания — понимание основ и специфических для iOS-разработки концепций.
  • Успешное выполнение тестового задания. По его результатам работодатель поймет, насколько вам близки технологии и методы, используемые в компании. 
  • Портфолио — обычно это GitHub-аккаунт. Пригодится вам для составления резюме и потенциальному работодателю для оценки ваших навыков. Подробнее о том, как составить портфолио, мы писали в статье «Как составить портфолио начинающему программисту».

Помните, что нельзя подготовиться к собеседованию за один день — необходимо не только постоянно расширять кругозор, но и углублять свои знания, возвращаться к уже изученному и практиковаться.

Теория

Чтобы освежить в голове уже пройденный материал, возьмите за основу roadmap'ы. Мы рекомендуем эти: iOS_developer_roadmap и mobile_developer_roadmap

Также поможет просмотр публичных собеседований на YouTube — вы познакомитесь со структурой собеседований и поймете, чего ожидать.

Практика

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

Задачи на знание структур данных и алгоритмовLeetCode и HackerRank.

Задачи по Swift: 

  •  «Ninety-Nine Swift Problems» — разборы задач на логику, работу с алгоритмами и структурами данных с примерами кода на Swift;
  • «Swift Interview Questions and Answers» — вопросы и задачи, которые часто встречаются на собеседованиях. 

Регулярно практикуйтесь. Не сойти с дистанции поможет дисциплина: поставьте себе челлендж, создайте чек-лист, отслеживайте прогресс. 

Не отчаивайтесь, если на собеседовании вам задали вопрос, ответа на который вы не знаете. Главное поймите, куда двигаться и что учить дальше. 

КАК ПРИШЕЛ В СФЕРУ НАШ IOS-РАЗРАБОТЧИК

В ИТОГЕ

На старте не обязательно иметь все навыки, описанные в статье. Отсутствие некоторых скиллов вы можете компенсировать высокой мотивацией и развитыми soft-скиллами. Так что без паники :) 

Учитесь, собирайте портфолио, выходите на стажировки и, вуаля, вы — iOS-разработчик! 

Если вы только приступаете к изучению, обратите внимание на обучающие материалы, который мы оставили в конце статьи. Также рекомендуем пройти наш онлайн-курс разработки под iOS — регистрируйтесь на сайте, старт обучения 18 мая :)

ЕЩЕ РЕСУРСОВ ДЛЯ ПОГРУЖЕНИЯ

Обучающие курсы и статьи

  • Документация по разработке на Swift.
  • Наш корпоративный блог — там вы найдете 60+ обучающих статей, подготовленных экспертами Академии — разработчиками, тестировщиками и аналитиками с опытом работы на реальных проектах.
  • Блог со статьями о Swift, Xcode и iOS-разработке.
  • Каталог подкастов, статей и новостей из мира Swift.
  • Книга «Грокаем алгоритмы» (Адитья Бхаргава) — иллюстрированное пособие по работе с алгоритмами.

YouTube-каналы: Sean Allen, Lets Build That App, CodeWithChris, Swift Марафон

Новостные ресурсы

  • Подкаст Podlodka — еженедельные выпуски про IT.
  • Habr — крупнейший ресурс для IT-специалистов. 
  • Сообщество по разработке на iOS SwiftBook.