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

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK

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

Почти каждый яндексоид знает что это за зверь. Да что там яндексоид, я до яндекса слышал о нем разное... Среди каналов и разрабов, кто не работал с BDUI, есть много мифов и заблуждений.

Будто App Store может тебя заблокировать из-за этого или что BDUI развитие только в СНГ (где удаляют прилы). Но почти все фаанг компании написали и юзают по паре таких технологий. Тот же Facebook*(осуждаем и порицаем) и апки гугла почти все на BDUI.

А в СНГ это Авито, Озон, Х5, Маркет.

DivKit — это фреймворка для BDUI. Это позволяет менять экран без релиза приложения и переиспользовать код и настройки UI между платформами. Под капотом — общий JSON, набор рендереров для клиентов и утилиты для генерации/сборки JSON на сервере.


На тренировках по систем дизайну мы разбирали BDUI. Где я во многом опирался на общие практики.

Как это работает:
- Сервер формирует JSON (карточку/экран) — руками или через json-builder.
- Клиент получает JSON и отдаёт его див-рендереру (DivView), который строит нативную иерархию.
- Интерактивность описывается в JSON: состояния, анимации переходов, обработчики действий, переменные.

Самое важное что пишется в самой доке это рекомендации когда юзать DivKit, а когда нет. На мой взгляд это отличный чеклист для всех BDUI:
- Нужно часто менять интерфейс без публикации в сторах
- Хочется единый контракт на UI между iOS/Android/Web

Когда не нужно использовать:
- Экран редко меняется, а весь продукт — чисто нативный без SDUI-процессов
- Команда/процессы не готовы поддерживать контракты и версии между клиентом и сервером
- Когда нужны сложные анимации и красивый UI

Ставь 🖤 если нравится BDUI
и 💀 если нет
Please open Telegram to view this post
VIEW IN TELEGRAM
78942
TaskLocal в Swift

В нашем воркшопе по Swift Concurrency + Swift 6 Савва немного прошелся по TaskLocal. Подметив, что это интересная, но редкая механика языка. Я даже пошел копаться в последних проектах и не нашел ни одного использования.

Представь, что у тебя куча асинхронных задач. Каждой нужен свой контекст — ID запроса, логгер, настройки. Как решать эту задачу?

Пробрасывать через параметры? Замусорено при большом кол-ве.
Глобальная переменная? Гонка данных. TaskLocal — элегантное решение.

Данные доступны везде внутри этой задачи и ее детей, но не видны другим задачам.

Ситуация: Пользователь делает запрос к серверу. Ты хочешь логировать всё, что происходит с этим запросом — куда ходили, что упало, сколько времени заняло.

🧬 Без TaskLocal: контекст либо глобальный, либо прокидываешь через 100500 параметров.

💎 С TaskLocal: каждая задача живет в своем контексте с данными, которые видны всем внутри, но изолированы от других задач.

Это как номер заказа в ресторане — официант не таскает бумажку с номером, но всегда знает, какой заказ обслуживает. Другие официанты со своими заказами ему не мешают.
Please open Telegram to view this post
VIEW IN TELEGRAM
13
жиза
4320
Референсы про продуктовое мышление vs. проектное мышление

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

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

Сейчас вижу, как этот подход постепенно становится массовым. Порой даже появляется забавный "race condition": кто же первым в 2025 начал говорить об инженерной продуктовой заинтересованности? (но ведь об этом мы в канале говорим с 2022)

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

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

Кстати, всякие LLMки круто помогают сделать погружения глубже.
64
📺 Advanced Swift Councurrency: Классические задачи №1

Недавно в опросе выяснилось, что почти 58% из 678 участников уже используют Swift Concurrency в реальных проектах. Это впечатляет. Но при этом практических материалов почти нет — в основном лишь пересказы документации или обзоры базовых концепций.

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

Забавно наблюдать претензии на оригинальность от каналов, которые сами просто пересказывают статьи. Если сомневаетесь, оцените уникальность любого любимого канала через чатгпт — иллюзии быстро рассеиваются. Я так регулярно делаю и для себя.

Но я не хочу превращать свой канал в ежедневный агрегатор чужих постов. Мне важнее другое — окружать себя людьми сильнее меня, брать опыт у реальных практиков и двигать индустрию, которая на фоне AI стремительно меняется. Мне нужны оффлайн тренировки, а не наблюдения как тренируются другие. Интервью, советы, разборы, консультации, созвоны — все это дает живой опыт и держит меня в тонусе. В такой среде работают правила спортивной конкуренции: высокий темп, постоянное развитие. Изоляция же ведет к застою и фантазиям, оторванным от реальности.

В ежедневной работе у меня хватает задач: оптимизация рендеринга, продумывание многопоточности для тяжёлых вычислений, работа с адаптацией под разные скорости сети. Проект позволяет почти не цепляться за легаси и использовать Swift Concurrency по полной.

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

В этой подборке я начал с классических задач:
🟣Race conditions и data races — почему это происходиь
🟣Task cancellation patterns — важность в реальном проекте
🟣Deadlocks и priority inversion — как такое возможно
🟣Actor reentrancy — есть ли в этом практическая польза

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

А в закрытой базе мы собираем самые практические задачи 💰тут или ⭐️ тут
Please open Telegram to view this post
VIEW IN TELEGRAM
21641
Forwarded from YDC — Pizza Powered iOS (Kirill Smirnov)
🤖 🔍 Метрики качества и производительности мобильного приложения

Мы уже поднимали тему важности метричности.
Сегодня — системно разберём технические метрики качества и производительности мобильного приложения, которые собираются в рантайме на реальных пользователях.
(только технические, без продуктовых и без CI — они будут в отдельных постах)

#Metrics

👏
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
96
главная ложь аи-агентов: Линтер ошибок не показывает. Готово к тестированию.
31
Короче, на выходных наконец записали воркшоп-интервью-подкаст про аи в иос разработке. Тянули долго. За это время рынок аи мог поменяться пару раз.

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

Обсудили почти все. И не просто обсудили, а 90% времени был код. Чистейшая практика.

Целых полтора часа практики. Шаринг реальной кодовой базы и проекта. После этого видоса точно поймете что аи тулкиты уже не игрушки. Такого видое я не видел еще на ютубе или где-то еще.

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

Прогрев? Да.

Будет скоро. А пока у меня отпуск.
27107
Наш любимый блогер взял интервью у создателя Swift

Видел как много кто публиковал это интервью. Напомню, что Pragmatic Engineer, один из главных вдохновителей этого канала, взял интервью у Криса Латтнера. И почти все говорят о инфе про сам язык Swift. Как было сложно автору и Apple его не понимало.

Но никто не сказал главное! То, что выделенно в заголовке. То ли специально, то ли из-за отсутствия опыта и погружения в контекст. Но эти мысли все упускают. А именно как "high-performance AI Engineering". Что же создатель любимого нашего языка вообще говорит про АИ?

Gergely Orosz уже писал офигенную статью "AI Engineering in the real world". Но тут он прямо в лоб спрашивает "Видите ли вы влияние на индустрию аи тулкитов?"

И что ответил Крис? Он ответил, что поощряет команду разработки языка Mojo использовать Claude Code, Cursor и все остальные инструменты. Он видит много пользы и повышает производительность на 10%. Но конечно нужно не отключать мозг и не доверять полностью.

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

Вообще советую послушать весь выпуск целиком. Там много крутых мыслей и референсов на целые книги о кодинге с аи, статьи и целые учебные материалы.
9
AI Engineering: Building Applications with Foundation

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

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

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

Эта книга без математики и сложных формул. А чисто и в лоб про главное — как строить системы, которые работают в продакшене

Выложил книгу в бесплатный доступ в отдельном канале. Там буду отдельно разбирать главы и выделять главное. Да и вообще искать самые полезные формулы и практики.
111
Кстати, если ты не знаешь чем занять себя на выхах и отпусках, то сейчас идет черная пятница!

Что тебя ожидает:
- Подборка воркшопов, интервью и мок-собесов с лучшими экспертами рынка. Изоляция — главный враг развития. Я зову самых лучших экспертов и практиков в своей теме чтобы хорошо изучить любые вопросы
- Более 1000 задач на разные темы и под реальные задачи: память, многопоточка и другое.
- Большой раздел про System Design. До сих пор мало кто его системно разбирал и делал не просто пересказы других тем, а делился опытом из первых рядов.
- Самые важные алгоритмы для мобильщиков. Алгоритмы для мобильщиков, которые задают на собесах и встречаются в жизни, отличаются от литкода и бэка. У многих компаний есть разные критерии оценки, соглашаться с ними или нет — выбор каждого. Но будет полезно хотяб почитать что они рекомендуют.
- Большой блок Swift Councurrency, который я собираю еще со времен преподавания в яндекс.практикуме
- И гигабайты другой информации, которую мы собираем постоянно

Доступ 💰тут или ⭐️ тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
162