Как стать iOS разработчиком с нуля? Мой путь.

ios-dev-roadmap

Разберёмся, что нужно, чтобы влиться в сферу разработки под iOS сегодня и как стать iOS разработчиком. Скажу по своему опыту, для этого совсем не обязательно иметь степень магистра в информационных технологиях. Профильное образование тут играет второстепенную роль.

Самые главные качества которые понадобятся они из разряда Soft Skills. Это, прежде всего целеустремленность и сила воли.

Тебе знакомо чувство, когда ты вроде бы что-то изучаешь, читаешь, тратишь много времени на материал, а понимания либо нет, либо оно везде настолько поверхностное, что не даёт начать самостоятельную разработку? Кругом пробелы, и заполнить их довольно трудно. Закрадываются мысли: "Блин, возможно iOS разработка(программирование) не для меня?.."

Я тоже прошёл через это. Так получилось в жизни, что моя основная работа долгое время не была прямо связана с IT. И на самостоятельное обучение я потратил не один год.

Так вот, чтобы избежать прокрастинации и выйти из бесконечного цикла обучающих материалов (а сейчас всяческих курсов выпускают все больше и больше) я хочу поделиться своей дорожной картой становления iOS разработчиком. Самое главное - ПРАВИЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ, и методичное следование заданному плану. На каждый пункт этой карты я сделаю видео материал на YouTube и статью на сайте. Пожалуйста, подписывайся и добавляй в закладки.

iOS Developer Roadmap


Прежде всего хочу сказать, и даже скорее призвать тебя, дорогой читатель - УЧИ АНГЛИЙСКИЙ ЯЗЫК! Английский язык пригодится тебе в жизни во многих сферах, но для программирования он жизненно важен. IT это такое направление, где все развивается очень стремительно. Технологии постоянно обновляются и совершенствуются, выходят новые фреймворки. И ко всему этому документация и литература появляется прежде всего на английском языке. Множество различных API просто не имеют русского перевода, а их функционал тебя удивит. Что касается книг на русском, то в большинстве случаев перевод очень посредственный, либо эта информация уже устарела.

Изучаем основы

Основы - это касается прежде всего базовых школьных знаний алгебры. Математические операции: сложение, вычитание, умножение, деление, деление с остатком, округление, возведение в степень. Хорошо бы понимать что такое логарифмы и интегралы. Понятия инкремента, декремента.

Дальше системы счисления, базовые типы данных (символьные, строковые, числовые, логические).

Также читайте:  Что такое поток в iOS разработке?

Неплохо так же иметь представление об основах устройства компьютера (или по старинке ЭВМ), его основные элементы, как работает процессор, как устроена память (ОЗУ, ПЗУ). Знать и понимать, как работают Операционные Системы (ОС), что такое ядро, драйвера. В нашем случае нужно подружиться с MacOS, ведь весь процесс разработки происходит именно под этой системой.

Сюда же относится изучение Интегрированной Среды Разработки (IDE) XCode, SwiftPlayground.

Синтаксис языка программирования

Для разработки под iOS используется два языка программирования:

  • Objective-C
  • Swift

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

Swift очень дружелюбный язык для новичков, в нем нет странного запутанного синтаксиса. Все достаточно очевидно. Мне очень нравится этот язык, тем более что поддержка его вышла за пределы Apple, и можно начать изучать и практиковаться на Swift не имея компьютера на MacOS. О том, как это сделать я расскажу в отдельной статье.

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

Принципы построения мобильного интерфейса

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

iOS технологии

Базовые вещи, такие как структура каталогов приложения, жизненный цикл приложения, как соединить пользовательский интерфейс с кодом с помощью ViewController, как расположить элементы пользовательского интерфейса с помощью AutoLayout так, чтобы приложение выглядело одинаково красивым на различных устройствах очень хорошо отражены в основном БЕСПЛАТНОМ учебном курсе от Apple.

Я рекомендую начинать с секции UIKit, это основной фреймворк для построения интерфейсов на котором работает 90% всех приложений на данный момент. Он очень хорошо документирован, и на любую не стандартную ситуацию можно найти решение на различных форумах. В отличии от SwiftUI. Это новая технология, безусловно классная, но на данный момент еще сырая. В России 99% работодателей на собеседовании устроит такой ответ на вопрос про SwiftUI:

Также читайте:  Scarlet iOS альтернативная установка приложений на iPhone

-- "Я знаю что SwiftUI существует, и готов уделить изучению данной технологии свое время."

Отдельно стоит отметить многопоточность и NSOperation. Это важная тема, информация тут:

Cocoa паттерны проектирования

Cocoa - это фреймворк, созданный Apple для написания приложений на устройствах под управлением MacOS и iOS. За базовую архитектуру Apple выбрала Model-View-Controller (MVC). Все остальное, можно сказать, ее наследники. Архитектура нужна приложению, чтобы структурировать свой код и не потеряться в нем. Для того, чтобы код был читаем для других программистов, и когда тебе через 2 недели понадобиться вернуться к нему, не составит труда понять, что есть что.

На своем YouTube канале я уже рассказал на примере как использоваться MVC, MVP, Делегирование в своем проекте.

Клиент-серверное взаимодействие

Современные приложения практически все так или иначе взаимодействуют с удаленными серверами. Будь то загрузка пользовательских данных, хранение файлов в облаке, подгрузка изображений в ленту. Это все относится к серверной части. Так называемый backend. А вот само приложение чаще всего является frontend'ом. Оно выполняет роль посредника между действиями пользователя и сервером. Нужно уметь понимать и разграничивать frontend и backend, понимать как прилолжение общается с сервером, какие запросы формирует, и как это использовать себе во благо.

Существует огромное количество различных API сторонних сервисов, которые совершенно бесплатно можно интегрировать в свои проекты.

Базовые фреймворки

Эти вещи должен знать (ну или хотя бы понимать и знать где взять информацию) каждый iOS разработчик. Сюда можно включить CoreFoundation, SwiftFoundation, SwiftStandart, Cocoa Touch, UIKit, UIDynamics, CoreAnimations, DispatchQueue.

Погружаемся глубже

Приложения становятся все больше и сложнее. Количество модулей в проекте увеличивается. Встает вопрос об оптимизации написания кода. И тут на смену MVC приходит паттерн MVVM.

VIPER - еще один архитектурный паттерн.

Также читайте:  Как использовать URLCache в Swift?

Coordinator - паттерн разработки iOS приложений, который целиком отвечает за навигацию между контроллерами, исключая Segue's в Interface Builder. На эту тему у меня есть хороший видео-пример написания простого приложения:

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

Данные темы тоже очень важные, но их можно на время пропустить, чтобы уделить больше времени практике и отработать уже пройденный материал.

Хранение данных

Рано или поздно, при проектировании приложения встанет вопрос о том, что нужно каким-то способом сохранять состояние приложение после его завершения. Или даже удаления. Есть много разных способов достичь этой цели. UserDefaults, CoreData, Sqlite, Realm, Serialize, Cloud.

Чуть позже я обязательно освещу эти темы подробно. Добавляй в закладку и подписывайся на Youtube канал. Статья будет обновляться и обрастать ссылками.

Отладка, Тестирование

В процессе написания кода неизбежно будут возникать ошибки. Не стоит из-за этого огорчаться. Прямо сейчас я рекомендую пойти на StackOverFlow и завести себе аккаунт. Там есть много ответов на типичные вопросы и ошибки новичков.

Собираем проект

Финиш. Сборка проекта. Тут стоит создать учетную запись iOS разработчика, присоединиться к программе Apple. Изучить правила и тонкости публикации приложений в магазине AppStore. Научиться работе с сервисами аналитики приложений.

Вывод

Шаг за шагом, изучай технологии описанные выше. Главное поставь цель. Начни с языка Swift. установи Xcode. Начни создавать приложения. Обязательно нужна практика, чтобы картина стала целостной в голове. Будь активным учеником, старайся сразу закреплять усвоенный материал примерами. Не нужно хвататься сразу за все. Так ты сможешь минимизировать трату времени в пустую. У тебя все получится. Удачи.

P.S. А если возникнут вопросы, не стесняйся оставлять комментарии тут на сайте, и под моими видео на YouTube. Буду рад помочь.