iOS Makes Me Hate
4.05K subscribers
1.26K photos
186 videos
24 files
1.41K links
Авторский канал про iOS разработку. Путь продуктовых самураев в MAANG.

Самое больше iOS сообщество практиков: https://boosty.to/lionbond/

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
Вам не нужны анимации

Меня не сильно прикалывает верстка. Часто это для меня скучная рутина, если это не какая-то новая технология, видео, нагруженный UI. Или я не пишу сложный генератор лайатуов like BDUI движок.

Также я не сильно кайфую от слишком замудренных анимаций. Я сторонник минимализма и лаконичности. И если я захожу в приложение заказать пиццу, то не хочу танцующего парада кнопок — этот шум меня утомляет. Я зашел покушать, а не смотреть шоу.

Вот и автор статьи говорит, что анимации — это не всегда хорошо:
Если анимация используется часто или без смысла, она скорее отвлечёт, замедлит интерфейс, вызовет раздражение и снизит доверие к продукту.


А вы как думаете?
73
This media is not supported in your browser
VIEW IN TELEGRAM
Ну или вот. Ресерчил бест практики как работают видео ленты.

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

А представьте что разом вдруг воспроизведутся все? А еще и будет обрывистый зумерский монтаж?

Конечно, можно усложнить и сделать круто. Добавить «живости». Ведь есть миф, что крутость анимации определяет скилл разраба. Но нужно ли это юзеру?
63
Периодическая таблица систем дизайна

Тут один чел зашарил и сделал супер жесткую таблицу.

Собрал и классифицировал принципы, которые часто встречаются в разных областях. Здесь не набор конкретных решений, а абстрактные принципы.

Напомню, что для систем дизайна — принципы важнее шаблонов.

Принципы разделены на группы:

🔘Structure — как разбивать систему на модули, управлять зависимостями и расширениями.

🔘Efficiency — как делать меньше работы, избегать излишних затрат

И другие.

А в каждом принципе уже снабжен символом, целью и примером.

Топ контент
Please open Telegram to view this post
VIEW IN TELEGRAM
1521
Лучшие материалы для подготовки к System Design Interview

Собесы систем дизайна — очень сложны. Их не только сложно проходить, а еще сложнее проводить.

Если попадется неопытный интервьюер, он может оценить "по-своему" твое решение. Например, поставить важность анимаций выше отказоустойчивости. Но ты можешь аргументировать свое мнение. Ведь аргументация — здесь важнее всего.

Решил собрать самый популярный контент. Некоторый вы уже видели в канале. Какой-то попадался в ютубе. Другой дают даже компании перед собесом. Это все открыто и там правда есть чему поучиться.

💎 A Simple Framework For Mobile System Design Interviews (iOS & Android) Наверное, самый популярный репо. Изучить его рекомендуют рекрутеры рф бигтехов перед собесом и даже разрабы из гугла в нашем чате. А я даже делал свой форк и обновил некоторую инфу для iOS разрабов (скоро сделаю обновление)

💎 System Design Interview For Mobile Engineers. Полезная обзорная статья основ что и для чего ожидается от мобильного разраба

💎 Список публичных мок-собесов. А еще можете найти мой публичный собес 😉

💎 Канал про архитектуры и систем дизайн. Очень много разного контента, в котором есть полезное для всех.

Это лишь капля в море. Книги мы будем разбирать отдельно.

А получить доступ к закрытой базе и мок-собесам по систем дизайну можно 💰 тут или ⭐️ тут
Please open Telegram to view this post
VIEW IN TELEGRAM
8
This media is not supported in your browser
VIEW IN TELEGRAM
Ушел со спотика из-за того что это контора поменяла политику подписок. Сижу на Apple Music

Ну и слушайте, этот стеклянный Боттом бар прям пушка

Пример когда анимации и правда решают и не мешают. Вопрос конечно не начнет ли раздражать через время
16
Созвон комьюнити в 18.10 в 10 по мск

Очередной созвон где мы голосом обсудим самые острые и важные темы.

🟣Почему это важнейший навык в эпоху ИИ?
🟣Самые сложные задачи
🟣АРХИТЕКТУРЫ vs MOBILE SYSTEM DESIGN
🟣Всё про собесы
🟣Гайды и роадмапы
🟣И многое другое

🧬Попасть можно 💰тут или ⭐️ тут
Please open Telegram to view this post
VIEW IN TELEGRAM
9
Пагинация: от идеи до реализации

Очень частая задача в систем дизайне — это пагинация.

Особенно важно это в больших объемах инфы: бесконечных лентах, чатах, мессенджерах.

Помню одной только пагинацией+чанканизацией я сократил время загрузки чатов х2 в мессенджере при слабом интернете.

Мы даже делали мок-дизайн интервью с разрабом из ВК, где разбирали хитрые пагинации для мессенджеров.

Реализаций этой идеи есть разные.

В этом докладе автор расскажет:
- почему стандартная пагинация через offset/limit - неоптимальный выбор
- чем пагинация через курсор поможет вам
- что такое вообще пагинация и какая у этой идеи история
15
Там телега выкатила обновления с жидким стеклом. Примечательно что и для старых версий.

Позже разберем исходники
1151
Please open Telegram to view this post
VIEW IN TELEGRAM
💎 Mobile System Design: Почему это важно в эпоху ИИ?

Открываю цикл статей вводной.

Бизнесу не нужны чистая архитектура и идеальный код — ему нужны сроки и деньги. А технический долг — это уже наша боль, инженеров.

Нам говорят: "сначала MVP, потом рефакторинг". Но потом почти никогда не наступает. Так и рождаются системы, где уровень хаоса высок, а понимание причин — низкое.

Вот почему ценится глубина — не просто знание SDK или фреймворков, а умение залезть внутрь системы, понять её устройство и связи.

Говорят, с приходом ИИ, степень энтропии будет увеличиваться еще сильнее. Еще больше непонятных велосипедов, еще больше легаси кода, еще больше сложных зависимостей.

Как сохранять ясность в растущей энтропии? Как проектировать простое, и четко доносить идеи до команды? Как не свистеть кукухой?

Написал первую статью-исследование, которое открывает цикл статей Modern Mobile System Design:
🟣Почему это ключевой навык в эпоху ИИ
🟣На основе опросов и статей собрал информацию какие программисты будут востребованы
🟣Какие ключевые навыки нужно качать
🟣Кто такие Context инженеры, Контекстное мышление, Архитекторы AI-агентов

🧬Получить доступ к циклу статей можно 💰тут или ⭐️ тут
Please open Telegram to view this post
VIEW IN TELEGRAM
6
This media is not supported in your browser
VIEW IN TELEGRAM
Можно ли отказаться от Xcode?

Есть два мифа:
1. Настоящий иосер пишет только в Xcode
2. Нельзя запускать симулятор нигде кроме Xcode

Сейчас, в эпоху нейронок, многие почти не пользуются Xcode'ом или другими привычными IDE. На их место встал Cursor/Windsurf, CLI, MCP, а для кого-то даже терминал.

Но еще до взрыва нейронок, уже пару лет есть ребята, кто спокойно пересел на VSCode и чувствуют себя отлично.

Например, SweetPad помогает забилдить апку в VSCode. Если вас уже задолбал Xcode и вы не хотите встречаться с его багами — отличная альтернатива.

Чем лучше VSCode?
- VS Code легче по ресурсам: запускается быстрее, меньше тормозов при простых задачах.
- Мульти-языковая среда: если ты пишешь не только на Swift (например, backend, скрипты, веб и т.д.), то VS Code удобно объединять все в одном инструменте.
- Ты можешь ставить только нужные плагины, конфигурировать, как тебе удобно. Легче устанавливать доп плагины
- debug view hierarchy можно заменить через Reveal. Говорят он работает лучше.

Конечно, есть и зависимости:
- Interface Builder — это если вы юзаете Preview или Storyboard'ы. Но я верстаю без этого.
- Для подписи и выкладки в стор все еще нужно скачивать Xcode. Тут, если покряхтеть, можно выгружать через какой-то сервис.

Кстати, у Apple даже есть официальная дока как настраивать Swift на VSCode
141
Watchdog

Сейчас занимаюсь много перфомансом. Тк работаю с видео и изображениями. Нужно следить за производительностью и контентом. Нагрузкой на главный поток и расчетом лайаутов, контента. Надеюсь, когда-нибудь поделюсь фичей после релиза.

Для чего нужно писать свои Watchdog'и?
- профайлинг Xcode’а только для симулятора/дебага. Нужно подключенное устройство. Сейчас с этим у многих компаний проблемы. Ограничения на реальные девайсы, дебаг усложняется.
- симулятор != реальное устройство. Разные мощности и оптимизации
- Проблемы могут быть только на определенных устройствах, версиях аппки и ios.
Часто нужны реальные условия и окружения юзеров

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

Решил собрать самые интересные решения:

🟣Implementing a main thread watchdog on iOS. Автор предлагает сделать простенький таймер, который следит за нагрузкой главного потока.

🟣Addressing watchdog terminations. Дока от Apple про системный Watchdog

🟣Watchdog Terminations on iOS. Типичные ошибки разрабов почему Watchdog крашит их приложение
Please open Telegram to view this post
VIEW IN TELEGRAM
113
This media is not supported in your browser
VIEW IN TELEGRAM
Что я делаю в Яндексе?

Иногда буду делиться чем не стыдно. И что доходит до прода 😂

Мои задачи связаны с UGC. А чаще это про видео, ленты и картинки. Все, чтобы вам было интересно выбрать ресторан с вашей любимой кухней.

Было много задач, но расскажу про сторисы. Прям как в запретограме (почти).

Фича на первый взгляд простенькая, но все же требовала некоторого перестроения мышления:
- че там с оптимизациями?
- че там с кэшем и префетченгом?
- че там с контентом?
- че там с сотовой связью и перфомансом?

Заюзал еше самый современный стэк SUI + SC

В итоге вышло аж ~80 тесткейсов. Которые мы еще и почти все автоматизировали.

Тк мы одни из первых, кто работал с видео, то вызовов было много.

Пока это первая версия и на очереди уже крутое обновление. По-любому вы найдете какой-то неприятный маленький косяк. Но я его уже скорее всего исправил :)

Пока работает только в Питере и Москве.
Please open Telegram to view this post
VIEW IN TELEGRAM
32733
Как я проходил собес в Microsoft

Собесы, собесы, собесы... Отдельная дисциплина и вид спорта, который часто ничего общего с работой не имеет. Ты отвечаешь на одни и те же вопросы, решаешь одни и те же задачи, что повторяются из разной компании в компанию.

Мы даже провели опрос, где 70% посчитали собесы сломанами. Может быть в мировых гигантах дела обстоят получше и эти процессы поставили эффективнее?

Автор статьи рассказывает к проходил собес на iOS разраба в Microsoft.

Какие он сделал выводы:
- важен не код, а выбранные тобой аргументы и подходы.
- в систем дизайне выбирают не просто правильность выбранных шаблонов, но и правильные компромиссы.
- в задачах по багам проверяют внимательность к деталям и устройству приложения
- поведенческое интервью проверяет тебя на твою работу над ошибками и общения с командой.

Вроде стандартный пак. Но автор говорит, что даже не смотря на провал, такой опыт собесов дал ему много точек роста и стал полезен.
72
This media is not supported in your browser
VIEW IN TELEGRAM
Страшно, очень страшно. Если бы мы знали, что это такое…😱

Но мы в Garage Eight знаем, что это такое, потому что считаем, что настоящие прорывы случаются за пределами зоны комфорта.

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

🔥 Голосуйте за гаражистов, чтобы поддержать их в борьбе со своими фобиями!
Please open Telegram to view this post
VIEW IN TELEGRAM
41
This media is not supported in your browser
VIEW IN TELEGRAM
🥩 Рубрика Well Done: бесконечный список видео

Новая рубрика, где буду делиться рецептами кулинарии рабочих задач. Какие сложности были и как их решал. Что из паттернов юзал и как борол проблемы. Сегодня в меню — карусель из сторис.

Особой сложности здесь не было, но есть интересный кейс с небольшой оптимизацией. Как это всегда бывает — изначальные требования могут много раз поменяться. Особенно по кол-ву и качеству отображаемого контента.

Тестишь ты на одном, а релизят на другом. В случае видосов это может сильно ухудшить UX.

В карусели два контента:
- thumbnail в ввиде первого кадра видоса. Для загрузки видосов
- видео-превью 3 секудны.

У всего есть предзагрузка. Все, что во viewport'е — загружается сразу + предзагрузка соседних ячеек.

Какие оптимизации тут были сделаны:
- Visibility tracking & Lazy loading: видео загружаются только когда элемент становится видимым.
- Для соседних видосов вьюпорта также запускается префетчинг. Начинаю предзагрузку в фоне до их фактического отображения, уменьшая задержку при воспроизведении
- Видосы кэшируются. если видео уходит за границы видимости, то оно должно остановиться. А в некоторых случаях и очиститься.
- Есть VideoPlayerPool (Object Pool и Coordinator cleanup). Я работаю только с плеерами, которые видно на экране. Это же нужно чтобы избежать лишних пересозданий. Экономит память.
- есть микроулучшение для low network connection

Результат подается в готовом ввиде.

В общей сумме это увеличивает перфоманс и плавность скролла на 70-85%. А также не проседает при большом кол-во видосов.

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

Сегодня на созвоне комьюнити (делать созвоны на 2 часа в 10 утра субботы я больше не буду) мы обсудили много вопросов про систем дизайн: метрики, компромиссы, архитектуры, много обсуждали BDUI и даже его запроектировали.

Разберём безобидную идею — сложная проверка email на клиентах (iOS/Android/Web) в форме регистрации.

Одно из правил проектирования "Всё, что влияет на безопасность, деньги и целостность данных, обязательно проверять на сервере". Почему?
🟣Безопасность. Мы можем долго говорить про фишинг и реверс-инжиниринг, но правила проверок всегда видны атакующему. Для почты это не всегда важно, но все же.
🟣Слишком много реализаций. Три платформы — три реализации. Легко получить расхождения.
🟣Бизнес правила всегда идут от сервера: формат, уникальность, email/телефон/username, блокировки, инвайты, доступность региона. Это все относится к валидации.
🟣Единая точка правды. На бэкенде проще логировать попытки, строить алерты, включать капчу

Конечно, не стоит выносить ВСЮ проверку на пробелы, очевидные ошибки на сервер (хотя на проверке это тоже нужно делать). Но валидация на клиенте — это только легкий UX и простые подсказки юзеру.

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

Наша экспертиза не строится на "я всемогущ", а на "я знаю, что нужно". Именно так определяется сложность и навык. Упростить все по максимуму и оставить только необходимую сложность.
Please open Telegram to view this post
VIEW IN TELEGRAM
15