🍏 Путь в профессию: интервью с iOS-разработчиком Кевином Ренскерсом

Создание приложений для iOS – одно из самых перспективных направлений в IT. Наш корреспондент пообщался с программистом-фрилансером из Голландии, который трудится в этой сфере уже 11 лет. Он рассказал о своем пути в iOS, Swift и SwiftUI, а также о будущем iOS-разработки.

- Как вы пришли к разработке приложений для iOS?

В 2009 году я начал работать в местной компании в качестве программиста на Python. Мы создавали веб-сайты для крупных компаний, используя Plone и Django. В 2010 году некоторые клиенты начали просить приложения для iPhone, и это стало началом моей карьеры разработчика iOS: мне платили за то, чтобы научиться создавать эти приложения.

К тому времени у меня уже был десятилетний опыт работы в программировании. Я начал в 2000 году создавать веб-сайты с помощью HTML и Flash, в 2001 году занялся PHP и JavaScript, а в 2009 году перешел на Python.

- Вы занялись разработкой для iOS в 2010 году. Что изменилось сейчас?

Почти все. Когда я начинал, мы не только все еще использовали Objective-C (который мне действительно очень нравился), но даже ARC еще не существовало. Xcode еще не был интегрированным инструментом, Interface Builder был отдельным приложением, поэтому вы могли открывать обе программы одновременно. Это было очень мило.

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

- 11 лет – большой срок. Чему вам пришлось научиться за это время?

Очевидно, мне сначала нужно было изучить Objective-C, UIKit, Foundation и другие фреймворки. Позже мне пришлось изучить Swift, функциональное программирование, реактивное программирование, а также все новые фреймворки и API, которые Apple представила за эти годы. MVC, MVVM, координаторы, составная архитектура – обучение никогда не прекращается!

Однако написание приложений для iOS сильно отличается от написания веб-приложения, поэтому освоение правильных шаблонов, таких как делегаты и способы работы с (фоновыми) потоками, было своего рода кривой обучения.

- В 2010 году Apple была не такой огромной корпорацией. Почему вы выбрали разработку под iOS?

Я бы не сказал, что они не были крупной компанией в 2010 году. Конечно, сейчас они огромны, но iPhone стал хитом с самого первого выпуска. В любом случае меня не волновал размер, я просто знал с первых же слухов о телефоне Apple, что он будет отличным. Когда Джобс представил iPhone, я был влюблен и знал, что мне нужен именно такой. Требовалось, чтобы iPhone 3GS был доступен в Нидерландах.

Я хотел разрабатывать приложения для этого устройства, потому что оно было таким безупречным и гладким. Все было быстро, приложения удобны для пользователя и хорошо спроектированы… это было намного лучше, чем что-либо до него, это было революционно.

Что вы думаете о Swift и SwiftUI? Хотите что-то в них изменить?

Обожаю Свифт! Я дождался Swift 3, пока не начал его использовать. Я работал над большими сложными приложениями Objective-C, мне очень нравился Objective-C, поэтому я дождался подходящего момента для перехода. Этот момент наступил в декабре 2016 года: я только начал работать фрилансером и начал новый проект с нуля, поэтому в тот момент Swift казался очевидным выбором.

SwiftUI, с другой стороны… Мне нравится его концепция, я бы хотел иметь возможность использовать его, но он еще не готов. Я создал побочный проект средней сложности с использованием SwiftUI 1, когда он был только что выпущен, и хотя мне понравилось первоначальное повышение производительности, это быстро превратилось в раздражение, так как я потратил слишком много времени, работая над ошибками и сбоями в самом SwiftUI. Легкие вещи стали действительно легкими, а сложные – невозможными. Я отказался от этого побочного проекта.

Я действительно надеюсь, что SwiftUI стал лучше с iOS 15, но если вы не пишете приложение только для iOS 15+, это не имеет значения. На самом деле я не думаю, что буду использовать SwiftUI для производства в ближайшие 2 или 3 года.

Я бы хотел изменить то, чтобы изменения Swift и SwiftUI можно было использовать со старыми версиями iOS. Например, новая поддержка async/await в Swift действительно потрясающая. Но… только для iOS 15+. Я бы хотел, чтобы Apple нашла способ удалить такие зависимости из самой базовой ОС, чтобы отдельные фреймворки могли обновляться без полного обновления ОС. То же самое и с такими приложениями, как Mail, Weather, Notes и т. д. Почему они являются частью самой iOS? Если бы они были в App Store, как и любое другое приложение, их можно было бы обновлять чаще и с меньшими проблемами.

- Какие ресурсы вы используете для работы и обучения?

- Были у вас ошибки, и что бы вы посоветовали ребятам из России, которые только начинают осваивать профессию?

На самом деле это не ошибка, но мне бы хотелось, чтобы я вскочил на подножку FRP немного раньше. Мне никогда не нравился RxSwift (или ReactiveCocoa во времена Obj-C), он никогда не работал до тех пор, пока я не начал использовать ReactiveKit и Bond еще в 2019 году. Теперь я использую Combine во всех своих приложениях с 2020 года, и не могу представить, что вернусь к старому способу создания приложений.

Если вы только начинаете разработку iOS, совет номер один – не перегружаться всеми вариантами архитектуры и не пытаться делать все идеально с самого начала. Просто используйте MVC, не волнуйтесь, получите ли вы в итоге массивные контроллеры представления или нет. Используйте раскадровку с переходами, если они вам нравятся, даже не думайте пока о координаторах. Забудьте о комбинированном и реактивном функциональном программировании.

Просто начните с основ и получайте удовольствие! Вы поймете, что не масштабируется, когда начнете создавать большие приложения, и будете искать решения проблем по мере их появления. Но если вы хотите делать все идеально с самого начала, вы просто закончите аналитическим параличом и вообще ничего не сделаете.

- Какое будущее у iOS-разработки?

SwiftUI и async/await. Жаль, что будущее реальных приложений, где вы должны поддерживать старые версии iOS – это буквально несколько лет.

- Чем вы занимаетесь сейчас и какие у вас планы?

Я занимаюсь проектом для клиента, в котором также работаю над приложением iOS и серверным кодом. Планирую продолжать получать удовольствие как разработчик-фрилансер, принимая проекты, которые меня интересуют.

Мне почти 40 лет, и я не знаю, как долго захочу оставаться разработчиком или фрилансером. Так что со временем я, возможно, захочу больше сосредоточиться на том, чтобы быть наставником, чем мне действительно нравится заниматься сейчас несколько часов в неделю. Посмотрим :)
***

Хочу научиться программировать с нуля, но не знаю, с чего начать. Что делать?

Можно учиться самостоятельно (долго) или пойти на курсы с преподавателями (быстро). Плюс нужно учитывать, что джунов много, конкуренция выше и работодатели повышают порог вхождения при найме на работу. Чтобы получить актуальные знания, мы в proglib.academy запустили курсы:

  • Основы программирования на Python.
  • Профессия Python-разработчик.
  • Алгоритмы и структуры данных.
  • Математика для Data Science.
  • Профессия Data Science.
  • Frontend Basic: принцип работы современного веба.
  • Профессия Фронтенд-разработчик.
  • Обработка естественного языка. Полный курс.

На подходе еще больше 10 курсов для взрослых и детей.

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ