Как стать 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-разработчиком?

Привет! На связи KTS и наш привлеченный эксперт по направлению iOS-разработки Александр.
Мобильные устройства помогают оставаться на связи с друзьями, работать, развлекаться и повышать продуктивность. iOS, несмотря на введенные санкции и сокращение продаж техники в РФ, остается популярной платформой, пользователи которой ожидают качественные и стабильные приложения для смартфонов, планшетов, умных часов и ТВ‑приставок.
Насколько востребована позиция iOS‑разработчика на рынке РФ, какие риски с выбором этого направления для старта карьеры наиболее актуальны, что именно надо изучать и где искать нужные материалы — в этой статье.
В сегодняшней статье поговорим про:
- Мобильные устройства Apple в 2023 и её перспективы
- Риски iOS-направления
- Hard skills — что нужно iOS разработчику в 2023?
- Disclaimer 1: London is the capital of Great Britain
- Disclaimer 2: CS 101
- Disclaimer 3: Git
- Изучаем Xcode
- SwiftUI
- UIKit
- Pet-проект
- Deep dive
- Архитектура
- Менеджеры зависимостей
- Автоматизация тестирования
- Многопоточность
- Научитесь учиться
- Соблюдайте системность
- Найдите ментора
- Станьте частью сообщества
- Тренируйтесь проходить собеседования
- Ищите стажировки
Мобильные устройства незаменимы для коммуникации и социальной, деловой и культурной сфер жизни. По данным Росстата 78,1% опрошенных используют мобильные устройства. При этом в мире на конец 2022 года зафиксировано более 1,2 миллиарда активных iPhone (источник). По данным Tinkoff Strategy Day уже в 2018 году клиентов мобильных приложений было больше пользователей Web‑версий — и разрыв продолжает расти (источник).
Доля мобильной операционной системы Apple на январь 2023 года составляет почти 28% всего рынка (источник). Тренда на снижение использования нет, и пользователи по‑прежнему хотят «яблочные» гаджеты: компания Apple является четвертым по популярности производителем первого квартала 2023 года в России (источник). Интерес к направлению со стороны работодателей сейчас тоже остается стабильным. Так, крупные отечественные компании (например, Тинькофф или Яндекс) регулярно запускают стажировки и обучающие программы для начинающих специалистов.

Хотя стоит отметить, что в 2022 году общее число вакансий в России для разработчиков мобильных приложений под iOS и Android снизилось на 20% и 19% соответственно и составило 15,6 тыс. и 17,3 тыс. Эксперты связывают это с ростом числа проектов под отечественные ОС, но, скорее, дело в низкой базе для российских аналогов, общем сокращении рынка найма джуниор‑позиций и оттоке специалистов за рубеж.
Зарплата джуниор iOS‑разработчика в России в 2023 году составляет от 80 000 до 100 000 рублей, при этом медианная зарплата найма с учетом всех уровней сильно выше: около 230 000 рублей. На доход влияют опыт работы (ключевой фактор), расположение, форма занятости. Компании прежде всего ищут специалистов со стажем от трех лет, снижая риск неудачного найма и сокращая за счет опыта кандидатов время их адаптации на проектах.
В целом, индустрия остается многообещающей, поэтому начать свой путь в IT или переключиться с другой специальности на карьеру iOS‑разработчика будет хорошим решением. Но перед тем, как браться за сложное обучение, важно задуматься, зачем это нужно и явно определить цели. Например, это может быть желание найти работу в крутых технологических компаниях РФ или за рубежом, создание своего приложения, улучшение знаний или получение большой зарплаты. Чтобы добиться успеха, нужно заранее понимать, как будешь это делать, какие будут промежуточные итоги и как будешь мотивировать себя на каждом этапе.
Риски
Безусловно, выбор iOS‑направления связан с риском полного запрета продаж техники и блокировки программ разработчика Apple для российского бизнеса. Авторитарный стиль калифорнийской компании много раз подвергался критике. Только в последние пару лет им всерьез занялись регуляторы разных стран, и лед, что называется, тронулся.
- В ЕС планируют ввести требование для всех гаджетов о наличии порта USB‑C и, что более важно, установке приложений из сторонних источников в рамках закона ЕС о цифровых рынках (DMA), положения которого должны вступить в силу в марте 2024 года.
- про установку приложений из сторонних источников в ЕС
- про принятие этого закона в Apple
- разрешение сторонних платёжных систем в Южной Корее.
- разрешение сторонних платёжных систем в Нидерландах.
- про установку приложений из сторонних источников в США
- наша статья про мобильную разработку в 2023
- про установку приложений из сторонних источников в РФ
Сама компания открыто выражает недовольство требованиями регуляторов, но, скорее всего, ей придется подчиниться. Так что 2023 и 2024 годы покажут, насколько удастся надломить политику Apple под внешним давлением. Как только операционная система станет более открытой, потребность в разработчиках возрастет еще больше.
Hard skills
Итак, что должен знать и уметь человек, чтобы стать iOS разработчиком в 2023?
Знания, которые необходимы в работе, можно разделить на три категории, каждая из которых является основой для следующего уровня.
- фундаментальные: устройство компьютера, алгоритмы, структуры данных, парадигмы программирования, их принципы. Они медленно устаревают и будут актуальны даже через 10 лет.
- языки программирования: синтаксис, типы данных, фишки. Обновляются быстрее знаний фундаментального уровня, поэтому важно отслеживать, чтобы оставаться актуальным на рынке.
- прикладной уровень: платформа, популярные фреймворки. Нередко подвержены хайпу и могут уйти с радаров так же быстро, как и появились (например, Catalyst).
Чтобы стать senior‑инженером, погружаться стоит во все направления: фундамент даст уверенность в завтрашнем дне, а знакомство с популярными фреймворками — в сегодняшнем.
При этом в индустрии на собеседованиях проверяются все уровни знаний. Чаще всего, вопросы разделены по 4-м традиционным блокам: язык, платформа, архитектура и многопоточность.

Дальше рассматривается обучение и формирование старта в iOS‑направлении именно через входные испытания при поиске работы (так как цель — это job offer), хотя важно отметить три навыка, которые не попали в таблицу, но их изучение будет не лишним для начала карьеры.
Disclaimer 1: London is the capital of Great Britain
Знание английского языка является необходимым навыком для будущего iOS‑разработчика (да и подавляющего числа IT‑специалистов тоже). Большинство документации, руководств и инструкций написаны на английском языке, значительная часть материалов и уроков на тему программирования и создания приложений для iOS только на английском. Кроме того, знание английского позволит разработчику делиться информацией и опытом на профильных ресурсах и упростит выход на мировой рынок найма.
Стоит обратить внимание на профильные для IT курсы, которые есть у многих школ: Яндекс.Практикум, SkyEng, Udemy.
Disclaimer 2: CS 101
Как было отмечено выше, изучение любой специализации в разработке должно основываться на фундаменте базовых знаний: структурах и алгоритмах данных, работы сетей, понимании устройства компьютера. Если совсем нет опыта, то стоит начать с двух вещей: Гарвардского курса программирования CS50 и книги «Код. Тайный язык информатики».

Также будет полезным погружение в структуры и алгоритмы обработки данных. С практической точки зрения мобильного разработчика, владение ими пригодится при оптимизации производительности приложения. Например, знание алгоритмов поможет отсортировать массив быстрым и эффективным способом (можно отдать это и в руки ChatGPT, но понять, что за код он написал, все равно важно).
Можно приглядеться к классической книге «Алгоритмы. Построение и анализ» (Кормен, Лейзерсон, Ривест). Еще рекомендуется изучить «Data Structures & Algorithms in Swift» от команды Kodeco (ex. Рэй Вендерлих).

Disclaimer 3: Git
Системы контроля версий помогают ориентироваться в коде и отслеживать его изменения. Самой популярной является git (источник) — представить ежедневную работу без него не получится.
Для изучения пригодятся две ссылки.
При этом сам по себе git — это инструмент для командной строки, у него нет графического интерфейса, поэтому для него существует много популярных UI‑клиентов. Их список можно найти на официальном сайте.
В дополнение стоит разобраться с моделями ветвления кода.
После того, как три общих темы будут закрыты хотя бы на минимальном уровне, стоит приступать непосредственно к iOS‑направлению.
Язык
Язык программирования — базовый инструмент ежедневной работы.

Согласно опросу 2022 года, для старта в iOS‑разработке достаточно одного языка — Swift. Основные ресурсы для его изучения.
- Во‑первых, очень приличная официальная документация по языку. Времена, когда Apple почти не рассказывала, как пользоваться ее инструментами, прошли.
- Во‑вторых, потрясающая книга от уже упомянутой команды Kodeco. В ней подробно разобраны основы языка, также есть отсылки к внутреннему устройству компьютеров — необходимый минимум iOS‑разработчика.
- В третьих, видео на youtube, например Swift Programming Tutorial | FULL COURSE.
Для закрепления знаний важно ежедневно практиковаться. Тут помогут различные тренажеры языка. Например, приложения Unwrap, Свифти‑Квиз, Qwifty! или swiftQwiz. Также полезно «набивать руку» в решении простых задач с CodeRun. Для проверки необязательно покупать подписку — можно всегда попросить помощь и подсказку у, опять же, ChatGPT. Как им пользоваться из РФ, написано множество статей: например, в журнале «Код» или на dtf.ru.
Основными аспектами при изучении Swift будут
- Типы данных: Числа, Строки, Коллекции и так далее, — а также понимание value и reference семантики. Важно уметь создавать свои классы и структуры и делать между ними осознанный выбор.
- Функциональное программирование, но только самые основы: функции высшего порядка и их chaining. Про каррирование на старте можно не думать.
- Generics, PATs, type erasure.
- Диспетчеризация методов.
- Обработка ошибок.
- Memory management: стек и куча, MRR и ARC, copy‑on‑write, capture list, escaping и non‑escaping closures.
Изучаем Xcode
После прекращения поддержки AppCode альтернатив Xcode в списке IDE для платформ macOS, iOS, watchOS и tvOS не осталось.
При знакомстве с Xcode уделить внимание следующим моментам.
- Учимся работать с playground.
- глава из учебника по Swift от AppCoda в помощь.
- хороший туториал на английском.
- еще один хороший туториал.
- 1 и 2.
- Подробней по возможности lldb.
Платформа
iOS‑приложения (как и iPadOS, tvOS, watchOS) — это, прежде всего, фронтальные приложения, с которыми взаимодействует пользователь. Основа их разработки — удобный пользовательский интерфейс. Для его создания можно использовать фреймворки UIKit или SwiftUI.
UIKit является более старым, но и более распространенным в iOS‑разработке. SwiftUI появился в 2019 году и предназначен для создания пользовательских интерфейсов с помощью декларативного подхода. Сейчас сложно выделить конкретный подход: что UIKit, что SwiftUI будут жить рядом бок о бок еще долгое время. Так что изучать стоит оба фреймворка.

Показательно использование SwiftUI внутри самой Apple. Год к году он становится популярнее, хотя и присутствует пока что только в 1/4 всех бинарных файлов iOS. Хотя, что важнее, его проникновение растет быстрее увеличения общего числа бинарей.

UIKit
При изучении особое внимание нужно уделить вопросам:
- UIView и UIWindow.
- UIViewController, его жизненный цикл и событийная модель.
- frame и bounds, Auto Layout.
- Обработка нажатий: Touches, Gestures, hit testing.
- UIApplication, SceneDelegate.
- Offscreen rendering и render server.
Для старта рекомендую курс «UIKit c нуля». Использовать сторонние фреймворки для верстки вроде SnapKit или PinLayout на старте не советую: anchors выглядят довольно компактно и просты в изучении.
Отдельного внимания достойны анимации. Тут рекомендую книгу опять же от Kodeco — «iOS Animations by Tutorials».
SwiftUI
При изучении особое внимание важно уделить темам:
- View и его жизненный цикл
- Widgets, Text, Button, Image и так далее.
- Container views: HStack, VStack, ZStack, Group и так далее.
- Layout: padding, divider, spacer, frame и так далее.
- Навигация: NavigationView и NavigationLink.
- View modifiers.
- Property wrappers.
- Переиспользуемость элементов SwiftUI и UIKit.
Вследствие постоянного изменения API при погружении в SwiftUI, прежде всего, следует обратить пристальное внимание на официальную документацию и туториалы. Альтернативной будет часто обновляемая книга от команды Kodeco «SwiftUI Apprentice».
А уже после, для закрепления базовых знаний по Xcode, SwiftUI и UIKit, можно пробежаться по курсу от Apple «Develop apps for iOS».
Pet-проект

Для оттачивания навыков важна постоянная практика. Как говорится, код должен быть в руках. Одним из вариантов будет создание pet‑проекта в момент, когда уже есть база языка и среды разработки. Чтобы найти идею, нужно анализировать свою рутину, проблемы, с которыми сталкиваетесь на транспорте, при вождении, питании, обучении и так далее. Не бойтесь что‑то копировать!
Интересные макеты проектов для мобильных приложений есть на Behance или Dribble. При этом важно при их выборе руководствоваться Apple Human Interface Guidelines.
Для погружения вглубь создания макетов приложений можно изучить основы Figma. Иногда в компаниях еще встречаются Sketch, Zeplin, Adobe XD, но скорее как исключение.

Базовый навык, который должен быть у начинающего разработчика, — умение посмотреть отступы, изучить свойства элемента на макете и, конечно, уточнить у дизайнера, что он имел в виду
Deep dive
Безусловно, изучение платформы iOS не ограничивается построением экранов приложения. Стандартный SDK содержит колоссальное количество возможностей для решения самых разных проблем машинного обучения (CoreML, Vision, Speech и другие), взаимодействия с веб‑приложениями (JavaScriptCore), построения дополненной реальности (ARKit), чтения и записи NFC‑меток (CoreNFC), аудио‑ и видеостриминга (ReplayKit) и многого другого. При этом перечисленные технологии являются нишевыми и крайне редко обсуждаются на собеседованиях. Более популярными являются задачи, ставшие обязательными к изучению и использованию при создании любого долгоживущего приложения.
- Жизненный цикл приложения.
Текущее состояние жизненного цикла приложения определяет, что оно может делать, а что нет, в конкретный момент времени. При изучении- точно не обойтись без официальной документации
- и хорошего доклада Анны Жарковой на Mobius.
- Без официальной документации тут никуда.
- И хороший гайд от AppsFlyer в помощь.
- UserDefaults
Чаще используется, когда нужно сохранить небольшой объем данных (менее 100 КБ). - Core Data / Realm
Используется для больших моделей данных, управления каскадными обновлениями, версионирования, работы с графами объектов. Выбор между Core Data и Realm неоднозначный, но для старта рекомендую начать с Core Data: все же это собственное решение Apple, да и переход с Realm на Core Data находится в поиске быстрее. Хорошей литературы мало, но пару ресурсов можно посоветовать: книгу от Kodeco и обзор на YouTube.
Важно отметить, что CloudKit отлично работает с Core Data, так что данные, сохраненные в Core Data, могут также появиться на всех устройствах пользователя. - Keychain
Представляет собой зашифрованную базу данных, куда сохраняются небольшие объемы конфиденциальной пользовательской информации: пароли, данные платежных карт, токены авторизации и так далее. API достаточно простой, для понимания будет достаточно одной статьи. - FileManager
Когда iOS‑приложение устанавливается на устройство, создается структура папок, с которой можно работать напрямую, читая и записывая файлы с использованием механизмов Codable и, прежде всего, FileManager. Для погружения также будет достаточно хорошей статьи.
Архитектура
Надо «писать код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете» (источник). Код должен быть не только работающим, но и понятным, гибким и красивым. Или, одним словом, читаемым. Для этого существует множество правил и концепций как по оформлению внешнего вида кода, так и по его структуре.
С оформлением помогут различные стайлгайды. Например,

- От Google
- От Kodeco
- От AirBnB
Cо структурой кода или, что точнее, архитектурой вопрос сложнее. За 16 лет существования iOS мы видели Apple MVC, боролись с Massive View Controller, прошли эру доминирования VIPER и понизили его до архитектуры презентационного слоя наравне с MVP и MVVM, имплементировали CQR через Flux и Redux, говорили о принципах чистой архитектуры и SOA, решали вопросы навигации через координаторы, выросли до многомодульных приложений, изучали стандарты вроде The Composable Architecture. В этом многообразии терминов легко запутаться и потеряться. Чтобы была определенная системность, архитектурные задач iOS‑разработки можно разделить на 4 уровня проектирования, каждый из которых находится в своей точке абстракции.
- уровень типов данных
Чтобы понять границы отдельных типов данных: важно разобраться с принципами ООП, вникнуть в SOLID и другие популярные концепции: DRY, KISS, YAGNI. Все они направлены на улучшение поддерживаемости кода в долгосрочной перспективе. Хорошей литературы по этой теме написано немало, но пару докладов строго рекомендую к просмотру.- When SOLID is unsound.
- Кто подставил Барбару Лисков, или кто кого SOLID.
- Подробный разбор паттернов.
- Интерактивный учебник на Swift.
- Принципы построения многомодульного Android‑приложения (да, речь про Android, но принципы общие для всех платформ).
- Как компании подготовиться к модуляризации.
Менеджеры зависимостей
Зависимость означает использование кода, который был создан другим разработчиком и включен в ваш проект. Подключение зависимостей позволяет использовать готовый и проверенный код, избегая необходимости разрабатывать, тестировать и поддерживать определенную логику с нуля. Эти готовые кодовые компоненты часто называются пакетами, библиотеками или модулями.
Менеджеры зависимостей берут на себя часть работы по управлению сторонними наработками: подключение, обновление, кеширование и так далее. В мире iOS есть три основных менеджера: CocoaPods, Carthage, Swift Package Manager. Подробно про них написано тут.
Автоматизация тестирования
Еще один аспект в создании поддерживаемых и надежных проектов — это понимание принципов и владение техниками автоматизированного тестирования. Еще лет пять назад начинающему iOS‑разработчику было необязательно погружаться в мир контроля качества, но сейчас этот навык стал необходим при устройстве на работу. В качестве отправной точки в изучении советую записи своего интенсива: 1, 2, 3 (или расшифровку).
Многопоточность

Многопоточность тяжело дается многим начинающих (да и не только) специалистам. Важно владеть этим инструментом практически в совершенстве, чтобы обеспечить плавную и бесперебойную работу приложений. При изучении надо понять разницу между процессом, потоком и очередью, разобраться в технологиях Grand Central Dispatch и Operations, погрузиться в новый
дивныймир Swift Concurrency, узнать про примитивы синхронизации вроде локов и семафоров и попрактиковаться в решении проблем синхронизации потоков.По этой теме, опять же, хорошего материала создано не мало.
- Советую начать с доклада Александра Андрюхина про устройство многопоточности в iOS и его расшифровки от Кирилла Сидорова.
- Продолжить лекцией из курса Яндекса, разбавив ее статьей с обзором GCD и погружением в Structured concurrency.
- Закрепить книгами от Kodeco: «Concurrency by Tutorials» и «Modern Concurrency in Swift».
Как дойти до конца
Путь, который нужно пройти до первых успешных собеседований, длинный и сложный. Нельзя стать специалистом, готовым к работе над реальными продуктами, за два месяца: пресловутое правило 10 000 часов никто не отменял. За это время можно несколько раз потерять мотивацию и разочароваться в выборе, найти новые силы, когда что‑то начнет получаться, и вновь споткнуться. Можно много говорить про веру в себя и доверие к своим решениям в прошлом, но есть и другие дельные советы.
Научитесь учиться
Во‑первых, систематизируйте свой подход и увеличьте собственную эффективность в обучении. Тренировать новые навыки тоже надо уметь. Есть отличный курс «Учимся учиться» за авторством пары нейробиологов. Курс построен по принципам, которым сам же и учит. Он поможет лучше понять, как работает мозг, узнать о разных методах изучения новой информации и способах хранения полученных знаний.
Соблюдайте системность
Важно держать темп и мерять прогресс. Для этого отлично подходят карточки на доске в Trello. Разбейте каждую тему на задачи, примерно оцените их по времени, а потом расположите по важности. При этом планировать нужно не только обучение, но и отдых.
Найдите ментора
Найдите себе учителя или постоянного наставника. Большинство разработчиков подтвердят, что они многому научились у ментора, будь то опытный коллега или просто знакомый, знающий свою область. Он поможет избежать распространенных ошибок и обойти препятствия, которые могут замедлить обучение. С наставником можно участвовать в сессиях парного программирования, проходить интервью или даже получить рекомендацию на стажировку. Хороший наставник поможет вернуть в мотивацию в момент, когда она почти ушла.
Есть много профильных ресурсов, на которых можно найти ментора в IT. Кто‑то готов работать бесплатно, но это, скорее, исключение. В среднем, часовая ставка ментора с опытом — 2 500 рублей.
Также можно и нужно писать спикерам с докладов на конференциях и с записей на YouTube.
Станьте частью сообщества
Не проходите этот путь в одиночку. Начинающих специалистов много — объединяйтесь в группы и помогайте друг другу. Также обязательно подключайтесь и посещайте конференции и митапы (большинство из них бесплатны). Приведу список (далеко неполный) полезных чатов и сообществ в Telegram.
Сообщества:
- Coffee&Code — можно посещать по субботам в своем городе. Очень рекомендую.
- Ждунчики — сообщество Кирилла Дутова.
Митапы и конференции:
Новости:
- iOS Good Reads
- iOS.Devs
- Readaggregator
- Мобильная разработка
- Библиотека мобильного разработчика
- Head of mobile
Тренируйтесь проходить собеседования
У многих есть страх прохождения собеседований. Чтобы его обойти, познакомьтесь с форматом мок‑интервью. Их довольно много на YouTube (1, 2, 3). Как только почувствуете уверенность, начните тренироваться со своими друзьями, другими соискателями или экспертами из компаний, в которых было бы интересно работать, моделируя реальное собеседование.
Ищите стажировки
У обучения есть один недостаток — оно не позволяет увидеть и погрузиться в реальный трудовой процесс. Стажировка является ценным инструментом для развития навыков и построения профессиональных связей. Регулярно отсматривайте профильные сайты на предмет актуальных отборов.
Что еще почитать по теме
Это, конечно, не первая статья про старт карьеры в направлении iOS‑разработки. Если какой‑то аспект был неполным, на ваш взгляд, обязательно посмотрите еще эти материалы.
- iOS Developer Roadmap
- How to become an expert in iOS development
- iOS Roadmap for beginners
- Из дальнобойщика — в IT: приключение, где нужно быстро учиться и работать без выходных
- Как я стал iOS‑разработчиком за 8 месяцев
Заключение
Начать свой путь в iOS‑разработке может быть захватывающим и перспективным шагом для всех, кто мечтает о карьерном росте и творческом развитии. Обучение и саморазвитие являются основой успеха. Постоянно совершенствуйте свои навыки, изучайте новые технологии и следите за трендами в отрасли.
Удачи в вашем пути!
Другие наши статьи по iOS-разработке:
- Начало работы с Dynamic Island и Live Activities в iOS 16.1
- Подключение OAuth в iOS за полчаса
- KMM глазами iOS-разработчика
Моя история в IT: как самостоятельно изучить Swift и стать iOS-разработчиком
Максим — iOS-разработчик из Казани, который работает в компании Neti. Он рассказал, почему решил стать iOS-разработчиком и что из этого вышло.
Максим — iOS-разработчик из Казани, он самостоятельно освоил Objective-C и Swift и пишет мобильные приложения с 2017 года. Он успел поработать в стартапе и международной ИТ-компании, делал приложения для клиента из Арабских Эмиратов и Музея русского импрессионизма. С 2020 года Максим работает в Neti.
В автобусе увидел у человека iPad и решил стать iOS-разработчиком
— Максим, где ты учился?
Мне кажется, у выпускников вообще нет понимания, что делать после школы. По крайней мере, у меня не было. Я просто постарался максимально хорошо сдать ЕГЭ и подал документы на факультет, на который сложнее всего пройти по баллам. Это оказалась «Информационная безопасность» в КНИТУ-КАИ им. А.Н.Туполева: чтобы поступить на бюджет, нужно было набрать за ЕГЭ 220 баллов. Я подумал, что раз туда сложно поступить, значит, это перспективная специальность. Но сначала мне там не очень нравилось — было мало программирования.
На первом курсе мы изучали Assembler, низкоуровневый язык программирования, который мало понятен людям. Он мне казался очень странным. С третьего курса мы начали программировать на C# и стало интереснее.
— Как получилось, что ты стал именно iOS-разработчиком? Не легче ли было развиваться в разработке на C#?
Я заинтересовался разработкой под iOS на втором курсе, до С#. Тогда под iOS писали на Objective-C, Swift только появился. Помню, в автобусе увидел у человека iPad и подумал: «Прикольно делать софт для iOS, iPad, iPhone». После этого случая я начал изучать Objective-C по учебнику и видео на YouTube. Потом продал игровой компьютер, купил MacBook и стал практиковаться. Через 7–8 месяцев самообучения решил искать работу. Сначала не клеилось: без опыта никуда не брали. Я прошел 5 собеседований, прежде чем устроился в ИТ-отдел банка.
Спарсил «Википедию», чтобы устроиться в банк
— Помнишь тестовое на собеседовании в банке?
Попросили написать список городов России на Objective-C. Нужно было, чтобы в нем отображались название, герб и небольшое описание. Я справился с заданием за 6-8 часов: подтянул библиотеку парсера страниц и спарсил «Википедию».
— Какие задачи ты решал в банке?
Я дорабатывал банковское приложение. Там надо было сделать карту с банкоматами. В принципе, моих знаний хватало на то, чтобы это реализовать. Но у приложения была очень сложная архитектура, и я, тогда еще совсем новичок, не мог в нем разобраться, а мой руководитель, программист, который закладывал архитектуру, не особо помогал. Я ушел из банка через три месяца: ничего не получалось и я потерял мотивацию.
Когда увидел Swift, подумал: «Что это за прелесть?!»
— Быстро нашел новую работу?
Да. Я устроился в мультипликационную студию, где делал игровое приложение, по которому дети могли учить алфавит. Там тоже проработал недолго — несколько месяцев. На проекте я был единственным разработчиком и мне не хватало наставника, который бы научил меня хорошей архитектуре. После увольнения был перерыв около года, а потом я вернулся в разработку. Устроился в ИТ-компанию, которая делала мобильные приложения. Там я познакомился со Swift. Помню, увидел его и подумал: «Что это за прелесть?!»
Все понятно и логично. Не нужно писать кучу кода в отличие от Objective-C. Объявления переменных и функций в Swift гораздо легче и проще. Я перешел с Objective-C на Swift быстро, за пару дней.
— Какие проекты ты делал в ИТ-компании?
У меня было несколько сложных и интересных проектов. Например, мы сделали приложение для Музея русского импрессионизма, в котором можно посмотреть видео или послушать аудио о картинах. Еще запомнилось приложение «Зеномания» для фанатов волейбольного клуба «Зенит». В нем можно почитать новости, посмотреть матчи, купить мерч с символикой команды. А еще там можно «примерить» шарф или кепку и сделать «зеноселфи».
— Тебе нравилось в ИТ-компании?
Да. Там интересный коллектив, классные проекты, коллеги помогали другу другу и обучали новичков. За полтора года, что я там работал, прокачался до начинающего мидла.
— Что было дальше?
Из ИТ-компании я ушел в стартап — делали социальную сеть наподобие «ВКонтакте» для Арабских Эмиратов. В нем было очень много функционала: чат, фото, видео, посты, группы, внутренняя валюта, видеозвонки.
— С реализацией какого функционала возникли сложности?
Я тогда впервые делал чат, и там были не только текстовые, но и аудиосообщения. Пришлось поломать голову, как реализовать этот функционал так, чтобы он работал быстро и без лагов.
— Сколько ты проработал в стартапе?
Около года. В один момент прекратилось финансирование и все загнулось. Больше я в стартап не пойду. После этого я полгода работал в интернет-магазине, а после устроился в международную ИТ-компанию Luxoft.
Как вместо Москвы переехал в Питер и устроился в Luxoft
— Как ты вышел на Luxoft?
Я планировал переехать из Казани в Москву и искал работу в столице через hh.ru. Мне позвонила HR-менеджер Luxoft. Мы поговорили, и она уже собиралась назначить собеседование, когда я спросил: «Вы находитесь в Москве?» Она ответила, что нет. Я сказал, что тогда ее предложение мне неинтересно, а HR-менеджер спросила: «А если мы вот такую зарплату предложим?» Так вместо Москвы я переехал в Питер.
— Я слышала, что в Luxoft очень жесткий отбор и сложные собеседования…
Собеседование действительно было сложным, но интересным. Оно проходило не в формате вопрос-ответ: мы просто разговаривали с другим разработчиком о разработке, iOS, Git.
— Как тебе в Luxoft?
Там очень дружный и отзывчивый коллектив. Мне понравилась легкость, с которой все друг с другом общались: например, у нас не было митингов с отчетами о проделанной работе. Вместо этого мы ходили с руководителем на обед и в это время обсуждали задачи.
В Luxoft я занимался интересным проектом — делали приложение для клиентов сети АЗС. По-моему, мы одними из первых добавили в приложение возможность использовать виртуальную карту лояльности вместо физической. Тогда эта фича еще не была распространенной.
— Почему ты оттуда ушел? Это крутое место, многие хотят работать в Luxoft.
Мне не принципиально где работать и не важно, насколько велика и крута компания. Для меня главное — чтобы было комфортно. На дорогу до офиса и обратно каждый день я тратил по 2-3 часа. К тому же, я переехал в новый город, где никого не знал и одному мне там было неуютно.
— Одиноко было, наверное?
Ну да. В общем я решил вернуться в Казань и устроиться в Neti.
Как пришел в Neti
— Почему именно в Neti?
Я начал сотрудничать с Neti, еще когда работал в Luxoft. Осенью 2019 года мне написал руководитель проектов и спросил, могу ли я помочь с приложением для застройщика. Клиент хотел загружать в приложение тяжелые документы в формате pdf и оставлять в них замечания. РП вообще не был уверен, что это возможно сделать, а я реализовал функционал нативно, без библиотек. После этого я остался на проекте, а летом 2020 года перешел в штат Neti.
— И как тебе здесь?
Здорово. Очень комфортно, все нравится. Много интересных задач. Например, решал прикольную задачку с шахматкой квартир в приложении для риелторов. Делал список, который скроллится вправо, влево, вверх и вниз. Самым сложным было синхронизировать вертикальный и горизонтальный скроллы.
Советы начинающим разработчикам
— Трудно ли учить языки программирования самостоятельно?
Когда я начал учить Objective-C, у меня еще не было программисткой базы. Она появилась через год, когда на третьем курсе вуза нас познакомили с ООП, SOLID на примере С#, наследованиями, объявлениями классов, объявлениями методов. Это сильно пригодилось. На самом деле, без базы непросто. Поначалу вообще непонятно что происходит. Потом, где-то через полгода, появляются какие-то проблески и становится более-менее ясно. Но вообще тем, кто хочет стать разработчиком, я рекомендую идти на курсы, если есть такая возможность.
При самостоятельном обучении ты, конечно, чему-то научишься, но не факт, что будешь делать хорошо и правильно. Можно научиться так, что потом долго придётся переучиваться. А на курсах изначально закладывают правильную базу.
— У тебя, как у самоучки, была проблема, что ты чему-то неправильно научился и потом пришлось переучиваться?
Не знаю, скорее всего, была. Но я никогда не задумывался о том, что научился не тому. Скорее, у меня всегда была мысль, что нужно найти команду, у которой можно учиться.
— Что еще ты мог бы посоветовать начинающим программистам?
Я бы посоветовал сразу кодить. Когда кодишь, запоминается лучше. Когда появляется свободная минутка, изучать что-нибудь новое. И, конечно, нужно гореть, тогда обучение будет приносить удовольствие.
— Последний вопрос. Стал ли ты адептом Apple: iPhone, MacBook, Air Pods, iPad? Только Apple и никакого Android.
Я всегда был адептом Apple. У меня всегда был iPhone. Может, это тоже повлияло на то, чем я занимаюсь. Сейчас у меня просто больше разных Apple-устройств, потому что они связаны с работой. Но я не против Android — на самом деле есть крутые «андроиды».

