Connect with us

Разработка

Темная сторона iOS-разработки

Это тихий, медленно закипающий под давлением котёл.

Опубликовано

/

     
     

Я занимаюсь iOS-разработкой достаточно долго, чтобы точно знать одно. Если вы всё ещё считаете iOS-разработку «чистой и элегантной», вы ещё не испытали всех трудностей.

Со стороны всё выглядит идеально. Отполированный дизайн Apple. Премиальные устройства. Синтаксис Swift, который читается как поэзия. Зарплаты, которые заставляют родственников внезапно уважать «работу программиста».

Но что внутри этой работы?

Это тихий, медленно закипающий под давлением котёл.

Есть часть iOS-разработки, о которой никто не рассказывает на конференциях, сессиях WWDC или в постах LinkedIn. Это то, чему вы учитесь только после многих лет выпуска приложений, срыва сроков и выяснения одной и той же невидимой ошибки в десятый раз.

Давайте поговорим об этом.

1. Xcode — это не инструмент, это настроение

Каждый iOS-разработчик рано или поздно усваивает эту истину.

Xcode не ведет себя логично. Он ведет себя эмоционально.

Вы ничего не меняете. Вы выполняете сборку. Она завершается с ошибкой.

Вы очищаете сборку. Она завершается с ошибкой по-другому.

Вы удаляете DerivedData. Все работает.

Вы снова выполняете сборку. Она завершается с ошибкой.

В какой-то момент вы перестаете отлаживать и начинаете вести переговоры.

  • Давай я просто перезапущу Xcode
  • Может быть, перезагружу Mac
  • Вчера все работало, мамой клянусь

Вы не исправляете проблемы Xcode. Вы ритуально умиротворяете их.

2. Ошибки Swift технически корректны, но практически бесполезны

Swift — безопасный язык. Ошибки компилятора Swift… философские.

Тип выражения неоднозначен без аннотации типа.

Какого выражения? Почему неоднозначен? Почему сейчас? Почему после шести месяцев безупречной работы?

Опытные iOS-разработчики больше не читают ошибки компилятора. Они их чувствуют.

Вы смотрите на код. Вы удаляете строку. Вы добавляете тип. Вы перемещаете элементы, пока компилятор не перестанет возмущаться.

Не потому, что вы чему-то научились, а потому, что вы поняли, чего сегодня хочет компилятор.

3. Проверка App Store — это игровой автомат с туманными правилами

Отправка приложения в App Store должна ощущаться как конец работы. Вместо этого это похоже на азартную игру.

  • Вы следуете гайдлайнам
  • Вы всё тестируете.
  • Вы пишете подробные комментарии для проверяющих

Отклонено.

Причина? «Приложение не предоставляет достаточной ценности для пользователя».

Что это значит? Какой экран? Какой сценарий? По сравнению с чем?

Вы отправляете приложение повторно без изменений кода.

Одобрено.

То же приложение. Другой рецензент. Другая реальность.

Вы не спорите с рецензентами App Store. Вы выполняете требования, переформулируете и молитесь.

4. Обратная совместимость медленно пожирает вашу душу

Поддержка «только двух последних версий iOS» звучит разумно… пока вы этим не занимаетесь.

  • API работает на iOS 18, вылетает на iOS 17.2
  • SwiftUI ведет себя по-разному на одном и том же устройстве после небольшого обновления
  • Исправленная в одной ОС ошибка появляется в другой
  • Обходное решение становится постоянным кодом

Ваш код превращается в музей условной логики:

if #available(iOS 17.4, *) {
    // modern solution
} else {
    // legacy survival mode
}

Умножьте это на годы, а не на релизы.

Вот как простые функции превращаются в сложные системы.

5. SwiftUI потрясающе работает в демоверсиях, в проде совсем другая история

SwiftUI кажется волшебным — пока это не перестаёт быть таковым.

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

Самое худшее? SwiftUI часто не ломается. Он ведёт себя немного неправильно.

Анимации тормозят. Макеты смещаются. Состояние рассинхронизируется.

Ничего не вылетает. Но всё кажется неправильным.

Это самые сложные ошибки для исправления — и самые лёгкие для игнорирования.

6. Совершенство Apple становится причиной вашего выгорания

Apple устанавливает высокую планку.

Дизайн. Производительность. Доступность. Плавные анимации. Идеальное до пикселя расстояния.

Это отлично для пользователей.

А для разработчиков?

Это создает постоянное давление.

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

Экосистема вознаграждает совершенство, а не скорость.

7. Собеседования проверяют память, а не реальные навыки

Реальная iOS-разработка включает в себя:

Собеседования по iOS?

  • Внутреннее устройство ARC
  • Интересные факты о RunLoop
  • «Что происходит, когда вы нажимаете эту кнопку?»

Вы можете выпустить приложения, которыми пользуются миллионы… и все равно провалить собеседование, потому что не запомнили одну малозаметную деталь.

Опыт не защищает вас.

Иногда он работает против вас.

8. Каждая WWDC воспринимается как угроза

WWDC — это захватывающе. И пугающе.

  • Новые фреймворки
  • Старые API «не рекомендуются»
  • Шаблоны внезапно устаревают
  • Сообщения в блогах, объявляющие ваш подход «мертвым»

Вы никогда не заканчиваете. Вы просто временно подчиняетесь.

Каждый июнь напоминает вам: «Это приложение когда-нибудь нужно будет переписать».

И это «когда-нибудь» наступает быстрее, чем вы думаете.

Часть, которую никто не произносит вслух

Разработка iOS-приложений по-прежнему остается отличной профессией.

Но это не:

  • Спокойствие
  • Предсказуемость
  • И не так просто, как кажется со стороны

Это постоянный баланс между:

  • Видением Apple и реальными ограничениями
  • Стабильностью и современными API
  • Элегантностью и своевременной поставкой

Senior iOS-разработчики усталые не потому, что плохо справляются со своей работой. Они усталые, потому, что глубоко её понимают.

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: