iOS-разработчик
iOS-разработчик — это тот человек, благодаря которому появляются и функционируют новые приложения, игры, ПО и интерфейсы для девайсов Apple.
средняя зарплата
удовлетворенность
Что делает iOS-разработчик
iOS-разработчики — одни из самых востребованных и высокооплачиваемых специалистов. Они генерируют и воплощают свои идеи для мобильных устройств Apple: iPhone, Apple Watch, iPad, iPod.
Главная задача OS-разработчика — создавать новые приложения, удобные пользовательские интерфейсы, обновления, а также заботиться о том, чтобы эти разработки приносили заказчику прибыль.
В своей работе iOS-разработчики используют язык программирования Swift — относительно легкий в изучении и устойчивый к ошибкам. Как результат, скорость разработки значительно увеличивается.
После разработки продукта, разработчики тестируют его, исправляют баги, снова тестируют и, если всё в порядке, размещают финальный вариант в AppStore. Чтобы было понятно, что это за продукт и как его использовать, разработчики составляют краткое описание и инструкции по работе с приложением.
На этом работа с конкретным приложением не заканчивается — необходимо писать обновления, добавлять новые функции и вносить правки в соответствии с оценками пользователей. Нужно постоянно держать руку на пульсе и, в случае необходимости, решать спорные вопросы касательно созданного продукта.
Сколько получает iOS-разработчик
Техника Apple — дорогая и престижная. Продукты в AppStore также отличаются более высокой ценой, так что и iOS-разработчики не остаются обиженными. Среди всех mobile developers, iOS-разработчики — самые высокооплачиваемые. За свой труд они получают намного больше, чем Android-разработчики, но и целевая аудитория здесь более требовательна.
Как стать iOS-разработчиком: инструкция и полезные ссылки для новичков

Что в статье:
— Как учиться на iOS-разработчика самому
— Hard skills начинающего iOS-разработчика
— Когда идти на собеседование
— Работа в команде: soft skills программиста
— Полезные ссылки для старта в iOS
Привет! Я Паша — тимлид iOS-отдела в «Лайв Тайпинге». Тимлид — это специалист, который не только пишет код. Ещё он руководит командой разработчиков и участвует в отборе кандидатов.
Как человек, общающийся с новичками, могу сказать, что в профессию приходят в любом возрасте и с любым образованием. Преград нет. Но легче всего разработка iOS-приложений даётся тем, кто интересуется технологиями и хочет приносить пользу людям.
Нужно быть чуть-чуть влюблённым в идеи Apple: участвовать в жизни сообщества, следить за новинками и обновлениями — тогда мотивация учиться iOS-разработке будет выше
Apple — экосистема про развитие. Корпорация привлекает молодых амбициозных разработчиков, чтобы они изучали её технологии и делали прогрессивные проекты. Вся информация про платформу iOS, языки программирования, среду разработки есть в открытом доступе. Это значит, что любой человек может стартовать в iOS, изучив материалы из официальных источников:
- Язык программирования Swift — бесплатный учебник, который поможет освоить Swift с нуля.
- Старт на Swift— полезные туториалы для пошагового изучения языка.
- Гайдлайны Human Interface Design — свод правил о дизайне iOS-приложений.
- Официальный сайт для iOS-разработчиков — комьюнити специалистов.
Чтобы процесс шёл легко, у вас должна быть база в программировании — без неё освоить эти материалы будет сложно. Пробовать никто не запрещает, но всё же перед тем как изучать iOS, лучше сначала разобраться в основах профессии разработчика. Сделать это можно разными способами:
- Поступить на техническую специальность в университет — классно, но долго. Если вы ещё учитесь в школе, то выбрать подходящий факультет, поступить на него и параллельно учиться программировать на iOS — хороший вариант.
- Записаться на платные курсы — если вы учитесь не на технической специальности, или уже работаете и хотите сменить сферу, то платные курсы помогут сделать это дисциплинированно.
- Изучить основы самому — на первых порах можно изучать разработку самостоятельно. Так вы сформируете в голове общую картину, поймёте, какие темы даются легко, а какие проседают. Единственное ограничение здесь — ваша усидчивость и мотивация.
Не у каждого есть четыре года на университет. А курсы будут эффективнее, когда у вас уже есть знания, которые нужно уложить в систему. Поэтому я расскажу, как изучить программирование и iOS-разработку самостоятельно. Поможет мне в этом наш джун — Женя. Вы познакомитесь с его историей и посмотрите, подходит ли вам самостоятельный путь.

Как учиться на iOS-разработчика самому
Время: от 6-ти месяцев обучения
Первые вложения: от 80-ти тысяч за макбук
Создавать iOS-приложения без макбука можно, но сложно. Если вы серьёзно настроены стать iOS-разработчиком, то лучше приобрести девайс сразу. По деньгам больно, но оно того стоит.

Подготовка
2. Спланируйте график. Можно почитать истории людей, которые прошли путь в разработку с нуля, и подсмотреть у них рабочие решения. Но не копируйте чужое расписание слепо, ведь только вы знаете, когда и сколько вам комфортно работать.
«Тяжело, тяжело…» — если вас уже посещают такие мысли то, конечно, лучше выбрать курс, где будет команда единомышленников и ментор. В таком случае важно внимательно выбирать программу обучения, чтобы курс рассказывал не только про Swift, но и давал основы
Что поможет в самостоятельном обучении

- Заметки. Сохраняйте полезную информацию в одном месте. Можно использовать стандартные «Заметки» на макбуке. Но лучше хранить всё в Notion, ведь со временем информации станет очень много. В Notion можно создавать огромное количество разделов и уровней вложенности. Это стеллаж IKEA в мире цифровой инфы.
- Канбан-доски. Нужны, чтобы отслеживать прогресс проекта. В вашем случае проектом может быть не приложение, а, например, чтение учебника. Оцениваете задачу, планируете проект, отлеживаете статус. Для этого тоже можно использовать Notion. Честно не реклама — просто удобно.
- Трекеры. Следить за временем, которое уходит на задачу, — это взрослый подход. Так вы будете понимать собственную скорость и отслеживать прогресс: начали ли вы справляться быстрее или всё ещё буксуете на месте. Хороший тайм-трекер — Toggle.
Hard skills начинающего iOS-разработчика
Главный вопрос: что же надо изучать? Собрал для вас базовые темы, в которых должен разбираться будущий iOS-разработчик.

✅ Знать базовые принципы ООП
Объектно-ориентированное программирование (ООП) — это подход к программированию, который используется не только в iOS-разработке. Сейчас и в обозримом будущем разработчики пишут в этой парадигме.
Вам поможет: книга « Погружение в паттерны проектирования» (включите VPN) — введение в ООП, разбор принципов SOLID и классических паттернов проектирования. В главах есть пункт «Аналогия из жизни», который объясняет тему человеческим языком на понятном примере.
✅ Понимать базовые архитектуры
Каждый разработчик на самом деле — архитектор. По-хорошему, он должен спроектировать целую систему, которая сможет работать без сбоев. Чтобы это делать, нужно разбираться в базовых архитектурах: MVC, MVVM, MVP, VIPER. Для того, кто владеет этими знаниями, не проблема создать приложение любого масштаба.
Вам поможет: The book of VIPER — большая книга, которая рассказывает про VIPER-архитектуру. Сейчас и в обозримом будущем в iOS-отделе «Лайв Тайпинга» работают по ней). Вдогонку — статья-разбор VIPER-архитектуры на примере iOS-приложения.
✅ Писать псевдокод
Псевдокод — это универсальный язык, который нужен для описания алгоритмов. Не для того, чтобы программа выполняла команды, а для того, чтобы эти команды мог прочитать любой программист. В его основе — базовые принципы синтаксиса компьютерного кода и человеческий язык.
Вам поможет: Дж. Макконнелл, « Основы современных алгоритмов» — автор рассказывает о разных видах алгоритмов и учить их анализировать. Для удобства главы книги не зависят друг от друга — их можно читать в любой последовательности.
✅ Знать языки программирования iOS-приложений
В первую очередь начинающим iOS-разработчикам нужно освоить Swift. Однако в мире ещё существуют проекты, написанные на Objective-C. Рано или поздно все сталкиваются с такими, поэтому знание Objective-C — будет вашим преимуществом.
Вам поможет: « Swift. Основы разработки приложений под iOS, iPadOS и macOS» — базовые концепции программирования и основы синтаксиса доступным языком. Если вы не занимались разработкой, то эта книга подходит для старта. 6-ое издание самое актуальное сейчас.
✅ Знать базовые фреймворки Swift
Лучше начать с устоявшихся фреймворков — Apple UIKit, Foundation и CoreAnimation, а SwiftUI оставить на потом. Он нативный, но появился только в 2019. Три года — небольшой срок для интеграции нового инструмента. Фреймворк сырой, и ему нужны доработки. Применять его в коммерческой разработке — рисково, потому что могут происходить сбои. А наша задача — сделать для клиента стабильное приложение.
✅ Уметь работать с Git
В коммерческой разработке над приложением работают сразу несколько программистов. Это значит, что им нужен общий доступ к проекту. Его может обеспечить система контроля версий Git. Она хранит изменения в проекте в полном объёме и позволяет решать конфликты слияния, которые возникают при разработке.
✅ Понимать навигацию iOS-приложений
В iOS-приложениях есть универсальные элементы навигации, способы их осуществления (UITabBarController, UINavigationController) и отображения (UIViewController). Нужно понимать, что они представляют собой на поверхности (например, как отображается таббар на экране) и как организована их работа «внутри» приложения.
✅ Понимать жизненный цикл приложения и ViewController
У приложения есть несколько состояний: когда оно не работает, когда пользователь запускает его, когда активно пользуется, когда сворачивает в фон и закрывает. Все эти состояния должны быть отображены в коде приложения, чтобы оно могло адекватно реагировать на события (действия пользователя). Жизненный цикл приложения схож по структуре с жизненным циклом ViewController — его тоже нужно знать.
Когда идти на собеседование
Для разработчиков важны практические навыки. Теория — это хорошо, но без реального программистского опыта сложно конкурировать с другими кандидатами.
Прежде, чем идти на собеседование, попробуйте придумать и создать свой pet-проект. Пусть даже это будет копия известного приложения. Нарисуйте для него прототип, подключите свободное API. Да, на проекте вы будете один: у вас не будет команды из менеджеров, дизайнеров, тестировщиков. Но главное, что вы сами на практике, методом проб и ошибок разберётесь в том, как создаются iOS-приложения.

Работа в команде: soft skills программиста
Чтобы стать успешным разработчиком, недостаточно писать чистый код. В компании, которая делает продукты для крупного бизнеса, программист — это всегда человек, который играет в команде. Вывод — нужно развивать soft skills. Это «мягкие» навыки, которые относятся не к профессиональным умениям, а к вашей личности.

Какие soft skills нужны разработчику

- Планирование — на реальных проектах вас ждёт новый уровень планирования, по сравнению с тем, что вы делали во время обучения. Вам предстоит оценивать задачи, укладываться в оценку и распределять своё рабочее время так, чтобы нагрузка была равномерной.
- Постановка задач — чтобы другой человек понял, чего вы от него хотите, нужно максимально понятно и конкретно объяснять свои ожидания и обозначить сроки. 90% успеха выполненной задачи — её правильная постановка.
- Делегирование — нельзя тащить на себе весь проект. Нужно научиться делегировать задачи коллегам, если вы понимаете, что не справитесь с объёмом работ.
- Честность — важно честно говорить, что получается и нет, особенно если проблема тормозит всю работу. Пока вы честно не сможете сказать о ней, никто не поможет с её решением.
- Умение отдыхать — важно понимать, когда вы уже всё, и давать себе время на перезагрузку. Отдохнувший разработчик работает продуктивнее, чем «горящий» специалист.
Полезные ссылки для старта в iOS
Обучающие
- Статья «Я не знаю ООП» — если вы начали разбираться в принципах объектно-ориентированного программирования и у вас возникли вопросики, то вы найдёте общий язык с автором статьи.
- Статья « Xcode — что это за среда разработки» — поможет скрасить первое знакомство со средой программирования iOS-приложений. Шоркаты в одной картинке — вместо тысячи кликов.
- Raywenderlich — неисчерпаемый источник iOS-руководств. Подходит и новичкам, и профессионалам, которым нужно быстро понять работу нового фреймворка. Плюс в том, что к каждому учебному материалу прилагается практическое занятие — можно изучить новую тему и тут же проверить себя на деле.
- Hacking with Swift — тоже крутой и полезный ресурс со свежими туториалами по Swift, но бесплатный.
- Документация Swift — исчерпывающая информация по основному языку программирования для iOS. А вот те же материалы, но с переводом на русский.
- Генератор ссылок на ресурсы в проекте Xcode в Swift— получаете строго типизированные ресурсы с автозаполнением (изображения, шрифты и тд).
- Ежегодный курс iOS-разработки от Стэнфордского университета — объясняет основы создания приложений для iPhone и iPad с использованием SwiftUI.
Блоги и телеграм-каналы
- NSHipster — блог дизайнера и разработчика облачного сервиса Heroku. Давно не обновляется, но там хранится много полезной информации про фреймворки, объекты фреймворков, Objective-C, Swift, Xcode и важные open source-проекты.
- iOS Dev Weekly — срез новостей из мира iOS-разработки. Приходит в виде почтовой рассылки по пятницам. Куратор — Дэйв Вервер.
- Канал в Telegram от Rambler — самые интересные статьи, видео и новости, связанные с iOS-разработкой.
- Телеграм-канал Mobile Insights by AppTractor — дайджест статей по iOS, Android и разработке в принципе. Можно почитать что-то интересное для разного уровня.
- Телеграм-канал iOS Dev — выкладывают хорошие статьи с кратким саммари — удобно, если нужно получить полезную информацию, но нет времени читать многабукв.
Если вы хотите работать iOS-разработчиком в «Лайв Тайпинге» — переходите в раздел «Вакансии». Наверняка там есть интересное предложение для вас.
С чего начать путь iOS-разработчику
Если в последнее время у вас возникал вопрос, востребованы ли iOS-разработчики сегодня, наш ответ — да. И еще как. На апрель 2022 года на резюме одного iOS-разработчика приходится больше четырех открытых вакансий на HH.ru. В App Store ежедневно публикуется 865 новых приложений. Сегодня в магазине находится более 2 000 000 программ. Компании заинтересованы в реализации «яблочных» приложений и найме специалистов для этого.
В этой статье мы разберём, что потребуется для успешного старта в мобильной разработке под iOS, какие задачи вам предстоит решать и какие навыки для этого пригодятся. Расскажем, как подготовиться к первому собеседованию, и поделимся историей становления одного из наших iOS-разработчиков.
КТО ТАКОЙ IOS-РАЗРАБОТЧИК
iOS-разработчик — это специалист, который пишет приложения для операционной системы iOS.
Задачи iOS-разработчика. На старте карьеры начинающие разработчики чаще всего занимаются исправлением мелких багов и рефакторингом кода. Когда наберетесь опыта, в ваши задачи будет входить: разработка нового функционала приложения и его поддержка, релиз приложения в App Store. Опытным специалистам поручают проектирование архитектуры приложения и настройку CI/CD.
Необходимые устройства. Обязательно понадобятся MacBook или iMac. Желательно также иметь устройство, под которое вы будете разрабатывать, — iPhone или iPad, с помощью которых проверите работу приложения. Конечно, есть специальные программы, которые помогают запустить приложение с ноутбука или компьютера, но в таких эмуляторах доступен не весь функционал мобильного устройства.
Если вы хотите попробовать себя в iOS, но не имеете подходящего устройства, можете рассмотреть следующие варианты:
- установка MacOS на виртуальную машину VirtualBox или VMWare;
- сервисы для удаленной работы на Mac;
- сборка Хакинтош — компьютера, совместимого по железу с продукцией 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-РАЗРАБОТЧИК

iOS-разработчик в MediaSoft
В iOS-разработку я пришел, можно сказать, случайно. По образованию я лингвист-преподаватель, так что все, что меня связывало с программированием, это слово «языки».
Серьезно заинтересовался программированием уже после университета, когда спустя пару лет работы преподавателем, понял, что это не мое. Как-то в разговоре с другом-программистом я поднял тему, что хотел бы себя попробовать в IT, и он посоветовал посмотреть в сторону iOS-разработки.
Начинал с общих курсов по программированию, параллельно подтягивая закостенелые школьные знания по математике, а также университетские азы по дискретной математике и линейной алгебре. Когда решил, что пришло время начать изучать iOS-разработку, я столкнулся с тем, что информации на русском языке было мало (или относительно мало, сравнивая с огромным пластом информации на английском языке). Можно сказать, что мое лингвистическое образование упростило мне поиск и усвоение информации по iOS-разработке.
Основной упор в обучении я делал на Swift и UIKit, параллельно изучая систему управления версиями Git и работу UNIX.
Как только я почувствовал себя достаточно комфортно в плане технических навыков, я начал делать небольшие приложения: сначала для себя, а потом в рамках тестовых заданий для компаний.
Около полутора лет ежедневного обучения мне понадобилось, чтобы получить свой первый оффер, о котором я ни капли не пожалел. «Войти в IT» оказалось сложно, но возможно. При должном рвении и приложенных усилиях нет ничего невозможного.
В ИТОГЕ
На старте не обязательно иметь все навыки, описанные в статье. Отсутствие некоторых скиллов вы можете компенсировать высокой мотивацией и развитыми soft-скиллами. Так что без паники 🙂
Учитесь, собирайте портфолио, выходите на стажировки и, вуаля, вы — iOS-разработчик!
Если вы только приступаете к изучению, обратите внимание на обучающие материалы, который мы оставили в конце статьи. Также рекомендуем пройти наш онлайн-курс разработки под iOS — регистрируйтесь на сайте, старт обучения 18 мая 🙂
ЕЩЕ РЕСУРСОВ ДЛЯ ПОГРУЖЕНИЯ
Обучающие курсы и статьи
- Документация по разработке на Swift.
- Наш корпоративный блог — там вы найдете 60+ обучающих статей, подготовленных экспертами Академии — разработчиками, тестировщиками и аналитиками с опытом работы на реальных проектах.
- Блог со статьями о Swift, Xcode и iOS-разработке.
- Каталог подкастов, статей и новостей из мира Swift.
- Книга «Грокаем алгоритмы» (Адитья Бхаргава) — иллюстрированное пособие по работе с алгоритмами.
- Подкаст Podlodka — еженедельные выпуски про IT.
- Habr — крупнейший ресурс для IT-специалистов.
- Сообщество по разработке на iOS SwiftBook.
- #swift
- #xcode
- #ios
- #карьера
Как стать iOS-разработчиком без платных курсов и найти первую работу
Всем привет! Меня зовут Анатолий Касьянов, я СТО компании Holy Water, которая входит в экосистему бизнесов Genesis и занимается разработкой мобильных приложений и игр.
Пять лет назад я начал свой путь в IT. У меня не было технического образования, знакомых или друзей в этой сфере, и я не ходил на платные курсы. Выучил разработку самостоятельно с нуля. Чтобы получить первый реальный опыт, делал проекты на фрилансе, потом перешел в аутсорс-компанию.
В Holy Water я пришел на позицию Senior iOS-разработчика более чем год назад. За это время я очень вырос вместе с проектом: стал техническим директором, у меня в команде 12 сильных специалистов.
Я провожу много собеседований. Возможно, это покажется странным, но в последнее время долго искал Junior iOS-разработчика, это оказалось не просто. Так появилась идея этой статьи.
Я хочу рассказать, как приобрести минимальный пакет навыков, найти первую работу, что спрашивают на собеседованиях и где искать ответы на эти вопросы. Пройдемся также по резюме и популярным заблуждениям на старте учебы, которые я попытаюсь развеять. Вот с последних и начнем.
Заблуждение 1. Нужно техническое образование. Нет, не нужно. Да, оно дает преимущество, но минимальное, все можно выучить самостоятельно. Мои рекомендации ищите ниже.
Заблуждение 2. Нужны платные курсы, 100500 менторов и 20 лет обучения. Нет, в интернете много качественных бесплатных источников и крутое, отзывчивое сообщество. В конце статьи найдете список надежных ресурсов. Если упорно заниматься, можно найти первую работу на фрилансе или устроиться джуном в компанию за месяцев с нуля.
Заблуждение 3. На работе будет сложно, меня быстро уволят. Сложно будет, но не уволят. Это нормально, если вы большую часть времени на работе будете искать решения проблемных моментов в интернете. Кроме того, вы будете постоянно совершенствовать свои знания и учить что-то новое. Потому что мобильная разработка быстро меняется, и знания, актуальные два года назад, уже устарели.
Когда вы уже занялись самообразованием, возникают стандартные преграды, из-за которых люди иногда прекращают продвигаться дальше. Поначалу многие вещи кажутся непонятными, появляется сомнение в себе. Кроме того, возникает впечатление, что вы изучаете что-то никому не нужное.
Что работает:
- нужно учить не все подряд, а конкретный набор технологий;
- для быстрого обучения лучше работают книги/статьи, в видеокурсах много воды;
- если технология/тема сразу не понятна (что будет в 99% кейсов), тогда нужно подключать видеоуроки;
- английский очень важен — в 90% случаях в начале работы вы будете гуглить информацию на этом языке.
Чтобы успешно пройти первое собеседование, нужно хорошо разбираться в трех основных технических темах: Swift Core, iOS SDK и иметь общие знания по Computer Science (CS). По каждой из этих тем я пропишу вопросы, которые чаще всего задают на интервью.
Swift Core
Самый быстрый способ выучить Swift — документация Apple. Она может быть местами сложная, но максимально четкая и краткая, без лишней воды. В то время как в видеокурсах вода есть, что тормозит процесс.
На мой взгляд, оптимальный подход к изучению языка такой:

Вот мой топ книг и ресурсов:
- Swift: A Step-by-Step Guide for Absolute Beginners
- Mastering Swift 5: Deep dive into the latest edition of the Swift programming language, 5th Edition
- 100 Days of Swift
- Swift 5 Tutorial 2020
А вот вопросы, которыми я проверяю знание языка у кандидатов:
- Отличие между массивом и сетом?
- В каких целях использовать словарь?
- Что такое non-escaping closure?
- Примеры использования closures?
- Отличие между структурой и классом?
- Что такое instance-метод?
- Когда лучше использовать структуру/класс?
- Как работает под капотом опционал?
- Как можно извлечь значение из опционала?
- Что такое optional chaining?
- Какую проблему решают опционалы?
- Что такое протокол?
- Зачем дженерики?
- Как работают ссылки в Swift?
- Что такое unowned, weak?
Предполагаю, что если вы можете ответить на эти вопросы, то у вас получится ответить и на более простые.
Computers Science и Architecture — общие технические знания
Когда есть хорошее понимание языка программирования, нужно получить основу по Computer Science. Это Git (основы), дизайн-паттерны и архитектура.
- Что такое push/pull/branches?
REST/JSON
- Что такое REST/JSON?
- Как происходит общение клиент-сервер?
SOLID — популярный вопрос, говорит о понимании основных принципов написания хорошего кода.
- Примеры использования каждого принципа. Теория и свои примеры из работы.
- Примеры, как этот принцип можно сломать, неправильное его использование.
Design patterns — довольно большая тема, достаточно выучить только основные паттерны, популярные в iOS, научиться ими пользоваться в pet-проектах и уметь привести примеры (Design Patterns by Tutorials By Jay Strawn & Joshua Greene).
- Какие дизайн-паттерны популярны в iOS? (Singleton, Observable, Delegation, Factory, Builder, Facade).
- Примеры использования этих паттернов. Минусы и плюсы.
Архитектура. От начинающего специалиста не ожидают много знаний по этой теме. Но хорошее понимание MVC даст преимущество. Как ее использовать, минусы, почему на старте от нее больше пользы и так далее.
- Что такое MVC? Минусы/плюсы.
- Слышал про MVVM/VIPER? (Рекомендую прочитать только поверхностно и рассказать основные принципы/отличия, в детали имплементации не лезть).
DRY/YAGNI — популярные аббревиатуры. Прочитайте и выучите, иногда могут спросить. Но если говорите, что знаете, всегда приводите примеры: как работает и как можно сломать.
iOS SDK
Многие джуниор-разработчики делают большую ошибку — начинают распыляться на мини iOS-фреймворки, например, работу с локацией, пуши, анимации и тому подобное. Я настоятельно рекомендую этого избегать. Все эти технологии точечные, похожие между собой и разнятся для отдельно взятого проекта.
Моя рекомендация — сфокусироваться на ключевых технологиях: уметь верстать и знать, как это работает. Тогда подхватить любую из этих технологий займет меньше недели. Интервьюер понимает, что если есть хороший Core, то выучить новую iOS-технологию легко.
Сейчас набирает популярность SwiftUI, но я бы его учил в последнюю очередь и чисто для саморазвития. Аргумент тот же: хороший уровень знания Core, значит, фрейм выучить легко.
Также рекомендую использовать подход «до меня это было сделано 100 раз» и всегда искать готовые решения. С таким подходом вы сможете посмотреть реализацию более опытных людей и разобраться в теме.
Вопросы по iOS SDK
Верстка. На каждый ответ должен быть пример, как делать/не делать.
- Что такое compression resistance and hugging priority.
- Отличие frames от bounds?
- Как верстать с помощью кода? Использовали какие-то библиотеки (snapkit)? Минусы/плюсы?
- Что используете для верстки — storyboard, xib? Какие минусы у такого подхода?
- Можете привести примеры создания custom views? Когда их используете?
- Как работаете с навигацией в проекте? Как открываете следующий экран? К примеру, нужно закинуть uiviewcontroller в navigation stack или презентовать, как лучше реализовать?
- Работа uicollectionview/uitableview. Какие делегаты используются? Как оптимизировать перформанс?
Application Lifecycle
- Какой жизненный цикл есть в приложении?
- Что произойдет с приложением, если вам позвонят?
UIViewController lifecycle
- Опишите очередность вызова методов при появлении экрана.
- За что отвечает viewDidLayoutSubviews?
База данных и хранение данных. Realm/Core Data/UserDefaults
Опционально можно разобраться с Realm или Core Data для понимания, как работать со сложной структурой данных. Я бы рекомендовал Realm, так как ниже порог входа и более современный функционал. В будущем нужно выучить и Core Data.
- Как можно хранить данные?
- Как хранить пароли юзера?
Pet projects. Когда начинать и в чем суть
Цель pet-проекта — иметь код, который можно показать как референс, если нет коммерческого опыта. Если придет отказ после собеседования, всегда можно попросить фидбэк и получить бесплатное код-ревью от более опытного специалиста.
Считаю эффективным такой подход:

Когда проект стабильный, можно попытаться залить его в AppStore. Так лучше узнаете, как работает весь цикл разработки.
Работу над pet-проектами можно начать сразу после уверенной базы по Swift, даже если не очень хорошо понимаете, как работает iOS SDK.
Вот пару идей: приложение по фитнесу/продуктивности/привычкам/живые обои. Можете посмотреть топ-чарты, выбрать проект, который кажется интересным.
Есть много готовых дизайнов/темплейтов. Берите любой и пытайтесь по нему работать. Сразу рекомендую начать с Figma. Примеры — здесь.
Если будут сложности с самостоятельной разработкой, можно сделать шаг назад и найти туториал/видеоурок по созданию какого-то проекта, который можно реализовать в несколько шагов.
Структура финального проекта состоит из:
- Приложения, которое работает и выполняет поставленную цель.
- Чистого кода, в котором есть хорошее применение SOLID, YAGNI, DRY.
- Хороший код-стайл — небольшие классы, отлично подобранные имена для переменных, удобная группировка файлов внутри проекта Xcode и так далее.
- Сторонних библиотек.
Soft skills
Чтобы получить работу, важно иметь не только технические навыки. На окончательное решение при найме в команду значительно влияют софт скилы, так как Junior-специалистам всегда не хватает знаний и опыта. Намного проще менторить человека, который хорошо реагирует на фидбэк, не токсичный, не сдается при первой сложности и хочет развиваться.
Многие упускают эту тему и не раскрывают ее детально. Как решить работодателю, кого, например, из двух кандидатов на Junior-позицию брать, если они оба неопытные, имеют много пробелов в знаниях? В таких случаях приходит на помощь наличие софт скилов. Вот пример самых важных для принятия решения:
- Специалист хорошо реагирует на фидбэк, не сдается, проделывает много работы, чтобы пофиксить проблему и избежать ее в будущем.
- Он настойчив — готов работать над задачей до тех пор, пока не сможет решить ее. Также он не будет легко сдаваться и бежать спрашивать, что делать.
- Инициативный — готов выучить новую технологию, с которой никогда не сталкивался.
- Доводит дела до конца — если сказал, что разберется/прочитает статью, закончит книгу, то обязательно сделает это.
Пару советов насчет CV
У Junior-специалиста нет опыта работы, поэтому сосредоточиться нужно на знаниях. Несколько советов по поводу оформления резюме:
- Стоит указывать только те технологии, с которыми реально работали. Исходя из того, что вы напишете, будут задавать почти все вопросы на собеседовании. Лишнее лучше не упоминать.
- Можно детально расписать о своих pet-проектах, технологиях. Кинуть референсы на Git. Примеры таких работ повышают ценность резюме.
- Можно рассказать, какие статьи/книги/видеоуроки изучили.
Что важно на первых собеседованиях
- Уметь хорошо отвечать на все вопросы, приведенные выше.
- Приводить примеры в своей работе и pet-проектах.
- Уметь «сломать» любой этот вопрос и не бояться рассказать о негативном опыте.
Кажется, на этом все. Если освоите все перечисленное, но вас не возьмут на работу, приходите ко мне 🙂
Топовые iOS-ресурсы
Статьи, блоги
- Learn Swift 5.3 for free
- High quality programming tutorials
- objc.io
- Weekly Swift articles, podcasts and tips by John Sundell
- Use Your Loaf
- iOS Dev Weekly
Видео
Список ресурсов по разработке смотрите по ссылке.
Все про українське ІТ в телеграмі — підписуйтеся на канал DOU
Подобається Сподобалось 15
До обраного В обраному 15

