Команда Apiqa занимается продуктовой разработкой для специфической сферы ЖКХ. Найти опытных разработчиков в Екатеринбурге непросто — здесь за ними охотятся крупные IT-компании, многие кандидаты уезжают в столицы или покидают страну, а удалённое сотрудничество на текущем этапе нам не подходит. Мы выращиваем сотрудников внутри компании, идём им навстречу и стараемся обеспечивать комфортные условия работы. Так, один из наших веб-разработчиков в прошлом году решил попробовать себя в программировании для iOS. Мы помогли ему совершить этот переход плавно, сейчас он параллельно занимается и вебом, и мобильной разработкой. А теперь он готов поделиться своей историей от первого лица. Добро пожаловать под кат.
Кто я
Привет, Хабр! Я — Саша Калинин, разработчик в Apiqa. Мне всегда нравилось писать сайты, собирать компьютеры, разбираться в сложных технических штуках, но по настоянию родителей я получил экономическое образование и пошёл работать в банковскую сферу.

В 2015 году начал изучать программирование и устроился на стажировку в УрЗПИ («Уральский завод программных изделий»), который позже объединился с интерактивным агентством «Всё ясно», и появилась Apiqa. Так я погрузился в мир веб-разработки. В прошлом году мне захотелось попробовать себя на просторах iOS, и компания пошла мне навстречу.
Начало: веб-программирование
УрЗПИ занимался разработкой сайтов: «Золотого яблока», «Лиги ЖКХ», ювелирного бренда, салонов красоты и других. Мы сделали масштабный проект Digital Pathology — это платформа для исследования онкологических заболеваний. Параллельно с основной работой я был наставником в двух онлайн-школах: Loftschool и HTML Academy.
В 2018 году якорным клиентом Apiqa стал ПИК-Комфорт — кру��нейшая управляющая компания в России — в результате чего определилась специализация, и мы стали заниматься продуктовой разработкой в сфере ЖКХ.

В мае прошлого года у нас появился спрос на мобильные приложения, и в компанию пришли нативные разработчики. К тому моменту я устал от веба и захотел попробовать себя в мобилке. Так как я большой фанат Apple, решил писать для iOS.
Погружение в мобильный мир
В первый день я попросил нашего iOS-разработчика посоветовать мне, с чего начать. Он оказался отзывчивым и сыграл роль моего наставника, помогая на разных этапах обучения. Ближе к осени я начал читать книги: «Swift. Основы разработки приложений под iOS и macOS» (4-е издание) Василия Усова и «Swift 3. Разработка приложений в среде Xcode для iPhone и iPad с использованием iOS SDK» (3-е издание) Молли Маскри. Полгода читал, выполнял задания, параллельно что-то писал, получал идеи приложений от наставника, чтобы прокачать скиллы.

Swift мне понравился — он оказался достаточно простым и схожим с TypeScript по синтаксису, на котором я пишу веб. С инструментами для разработки под платформы Apple сложнее — там очень много наследия из времён Objective-C, старого и неудобного системного API. Вторую книгу дочитал со скрипом.
Первый pull request провалился, и мне впервые захотелось всё бросить, но я этого не сделал. И процесс выстроился примерно за полгода: сейчас я пишу и для веба, и для iOS.
Текущие задачи мы распределяем. Мне нравится заниматься чем-то необычным, недоступным веб-разработчику — например, 3D Touch, а вот анимации пока не поддаются, нет у меня дизайнерского чувства. На вебе анимировать интерфейс, конечно, проще — там код получается понятнее, нет сложных заморочек.
Мобильная разработка и веб: в чём разница
На вебе весь визуал создаётся с помощью кода. Его можно читать и представлять себе конечный продукт. В Xcode, это IDE для iOS-разработчиков, есть Interface Builder — инструмент, который позволяет верстать при помощи графического интерфейса, перетаскивая курсором элементы — то есть для визуальной части код писать не нужно.

Звучит круто, но работает весьма нестабильно — то глючит, то зависает, то ломается. Иногда происходят конфликты между собственным кодом и Interface Builder — в консоль падает много ошибок, может упасть само приложение, может вообще всё полететь к чертям.
Что выбрать: веб или мобилку?
Решение за вами. Нужно понимать, что у них принципиально разная рыночная ситуация. Веб — это свободная платформа, а законодателями в мобилке выступают компании, которым принадлежат iOS и Android, — они решают, куда развиваться, какими инструментами пользоваться разработчикам. При программировании для веба можно юзать разные фреймворки, писать на разных языках, использовать разные IDE, в то время как для iOS есть только Swift, Cocoa и Xcode. Если для Xcode выходит какая-то новая фича, то она появляется у всех разработчиков, но если нет — то нет. Такая огранич��нность Apple обеспечивает порядок при написании кода, на вебе же этот порядок приходится устанавливать самостоятельно.
Плюсом веба также могу назвать большое количество решений open source, которых нет для iOS. Когда я начинал писать мобильные приложения, искал инструменты, аналогичные вебу, которые бы что-то автоматизировали, но здесь приходится писать руками.
В свою очередь, плюс разработки для iOS в нативности, Apple даёт разработчику больше свободы в плане реализации функциональности — Face ID, iCloud, хранилище и многое другое. У тебя есть большой доступ к пользовательскому железу. А в браузере ты ограничен тем, что тебе этот браузер позволяет.
Дальнейший путь
Моё потенциальное развитие на вебе — это изучение вещей, которые не сильно востребованы в повседневной работе. В iOS же у меня до сих пор много вопросов, есть куда развиваться, расти и учиться. Меня привлекает возможность практического применения навыков в рамках повседневной жизни и работы: нужно для телефона что-то написать — напишу, нужно для Mac — помучаюсь, поразбираюсь и напишу, для часов и Apple TV — тоже. Я уже хотел писать игрушки, но потом понял, что это отдельное сложное направление, погружение в которое отнимет слишком много времени. К такому я пока не готов.
Сейчас больше занимаюсь разработкой для iOS, но в любой момент могу вернуться обратно. Я слежу за частыми обновлениями веба, получаю release notes и понимаю, куда всё движется. На мобильных платформах обновление происходит фактически раз в год.
Сразу после анонса SwiftUI и новых версий операционок мне захотелось их пощупать. Я установил себе бету… и убил часы — они превратились в кирпич. Чтобы заставить их снова работать, пришлось ещё и телефон обновить до сырой, глючной беты iOS.
В целом подход со SwiftUI мне понравился гораздо больше, чем тот, с которым мы работаем сейчас — Auto Layout. SwiftUI прост и понятен, пишешь код и сразу видишь, что у тебя получается. По сути это схоже с вебом: пишешь код, а в браузере всё сразу появляется, это не требует какого-то долгого компилирования и постоянной сборки приложения.

Что в итоге?
Я не жалею, что прошёл такой путь. Если вы захотите повторить мой опыт, оценивайте свои навыки и возможности своей компании. Коллеги в Apiqa пошли мне навстречу, но не факт, что у вас будет так же, поэтому перед тем, как начать подобный переход, обсудите его с менеджментом.
Важно уделять мобильной разработке достаточно времени и применять новые знания в боевой среде — создание одного простенького приложения не даст полной картины, ценный опыт приходит только тогда, когда есть задача, от которой нельзя отступиться.
Если вы совсем не знакомы с программированием, учитывайте, что на вебе планка входа ниже, доступно намного больше образовательных ресурсов на русском языке. iOS сложнее для освоения и в плане написания кода — здесь требуется мыслить, как программист, иметь достаточно базовых знаний.
Стать веб- или Android-разработчиком может любой человек, который поставил себе такую задачу — нужно лишь искать информацию, изучать её, нарабатывать опыт. А вот чтобы посвятить себя iOS, как минимум придётся раздобыть Mac.
