Команда 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.