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

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

лектор ВШЭ и тп

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

Сайт iosmakesmehate.tech
Download Telegram
Media is too big
VIEW IN TELEGRAM
Этот обзор вы не просили, но я принес
1153
Проектирование реальных фич: Feed App ч 2

В первой части мы поговорили про требования и про главный выбор: pull vs push. Во второй спускаемся на уровень "а что конкретно проектируем?".

Какие экраны, какие API, какие модели, как пагинировать, как устроить клиент, чтобы все было быстрым и живым.

1️⃣ Все начинается с уточнения скоупа работ:
- Feed: бесконечный скролл, лайк и шаринг, тапы, детальная страница, форма для создания поста.
- Create Post: текст + вложения (картинки/видео)
- Post Detail: полный контент + действия

И отдельно важная скрытая фича, которую часто ждут на интервью — это prefetching (подгрузить посты заранее, чтобы открыть ленту быстрее)

2️⃣ API

Дальше идем в проектирования API-контракта. Смысл API-дизайна в интервью простой. Вот вы договорились как клиент и сервер будут говорить, и дальше не спорите “а откуда это берется”. Здесь очень важно не перезагружать данными модели. Нужно их обрезать чтобы не перегружать сеть; не убивать память/CPU клиента; не тянуть тяжелые вложения без необходимости

Особенно когда с интернетом беда.

3️⃣ Пагинация

Для ленты почти всегда выбирают cursor-based pagination. Я еще делился прикольным докладом про пагинацию тут.

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

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

4️⃣ Архитектура клиента: слои и поток данных

Классический подход в структуре — разделять на слои

UI layer — это экраны (Feed / Detail / Create). А за состояниями овечаются ViewModel и Presentor. Навигация должна быть в отдельном компоненте.

Data layer — желательно разделять все на репозитории, data source'ы, а медиа хранить на CDN.

5️⃣ Offline-first и “Single Source of Truth” на клиенте

В той самой книге по проектированию автор говорит, что для мобильной ленты это прям must-have, потому что сеть бывает медленная, нестабильная и пропадает во время скролла. Автор советует:
- все, что пришло с бэка, нужно сразу писать в локальную БД
- UI читает данные из локальной БД, даже когда интернет есть
- при оффлайне показываем кэш и аккуратно сообщаем, что обновиться не можем. Это и есть "Backend -> Local Storage -> UI" как единый стабильный пайплайн

Что интервьюер хочет услышать?
- Нужно отдавать в ленту Preview, чтобы не тянуть тяжелые данные
- Пагинация cursor, потому что лента часто обновляется
- Клиент offline-first, local DB — SSOT, UI читает из нее
- Статику раздаем через CDN, чтобы ускорить ленту и снять нагрузку
Please open Telegram to view this post
VIEW IN TELEGRAM
55
Кстати, по ленте. Еще около года назад скинули фотку как результаты опроса из нашего канала использовали в докладе

Тогда это был доклад Саши Сычева @headOfMobile. Он был кросс-лидом Feed в Яндекс Го

По выбранному ответу можно сделать все же выводы, что не всегда Feed можно комфортно сделать на BDUI 🫣
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Fucking Approachable Swift Concurrency

Достали занудные правильные документации? Хочется чего-то народного и без цензуры? Устали от корпоративного дресскода?

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

Мне, если честно, гораздо ближе такая форма. Прямая, простая, без лишних терминов.

Не отвлекает от сути и быстро вводит в курс дела без лишних аккуратностей
21
Итоги 2025 года часть 1

Потихоньку решил писать итоги года и разделю это на несколько частей.

Этот год для меня является годом переездов.

Я наконец переехал, выбравшись из небольшого городка. Мигрирую за границы своего телеграм канала. Делаю трансфер в сторону разных форматов. И становлюсь смелее с каждым шагом, вырываясь из стеклянных потолков и невидимых стен, которые сам себе когда-то поставил.

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

Я уже года полтора не читаю другие каналы про иос разработку, а твиторы никогда не читал. Меня не привлекает ютуб контент. А с всплеском нейродерьма стало еще хуже. Теперь мое потребление заменили книги и коллеги.

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

Чтением в этом году я не сильно доволен, мог бы лучше, но наконец сделал в своей комнате огромную книжную полку. В детстве у моей бабушки была огромная стена книг, где подходя к ней, я чувствовал свою незначительность и глупость. Сейчас моя полка напоминает мне, что следующий год нужно поднажать, чтобы прочитать хоть половину.
2463
📺 Swift Concurrency + Swift 6 на практике

Предновогодний подгон. Опубликовали в открытый доступ видос по Swift 6 + Swift Councurrency.

Пообщались о том, как в реальной практике живется на современном стэке.

В выпуске:
🟣с какими неожиданностями пришлось столкнуться при переводе боевоего проекта
🟣насколько документация Swift Councurrency помогает в реальных задачах
🟣что изменилось в правилах языка и почему об этом важно знать
🟣практическими советами и лайфхаками для разработки
🟣лучшие материалы для обучения

Доступ к другим видео и материалам 💰тут или ⭐️ тут
Please open Telegram to view this post
VIEW IN TELEGRAM
64
Не смог не побыть corporate girl не захватить хайповый мерч от яндекса
2854
мем жизни
3112
Нужен ли чистый код в эпоху его гниения? Эволюция отношения к коду.

Есть правило, что никакой код не вечный. У него есть инфляция, энтропия и гниение.

1️⃣ Меняется контекст.
Требования, продукт, команда, интеграции. То, что было элегантно при задаче А, становится обузой при задаче B. В стартапах или продуктах с низкой определенностью писать сразу "понятный и идеальный" код - опасно и неблагодарно.

2️⃣ Меняется платформа и язык.
Swift быстро развивается: concurrency, macros, новые API, новые бест практики. Код, который был правильным в 2020, в 2025 может выглядеть как кусок говна.

3️⃣ Меняешься ты.
Ты начинаешь видеть вещи, которых не видел раньше: границы модулей, места для инверсии зависимостей, контрактов, тестируемости. Прошлый ты не был херовым. У него были другие ограничения.

4️⃣ AI генерация
Читать напрямую код стало всем меньше людей. Даже по нашему опросу люди чаще читают чужой код (и даже книги) с помощью нейронок. Фронтенд может писать код для бэкенда. И наоборот.

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

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

Интересные статьи:
- Entropy — Why Code Rots And Technical Debt Grows
- Is writing clean code overrated
- Why Clean Code is Overrated: The Data-Driven Reality Check

Ставьте 🖤 если пишите "чистый" код, и 💀 когда "достаточно понятный"
183
Итоги года часть 2: игры и фильмы

Традиционно раз в год делаю свои итоги под конец. Что из контента понравилось больше в этом году. Но в отличии от прошлых лет тут не будет мест, а только S тир.

🎮 S tier игры:

Doom: Dark Ages. В этом году я открыл для себя мир шутеров. Никогда не был фанатом дума и стрелялок, но здесь визуал и геймплей просто разрыв. Потому что лучший визуальный стиль.

ARC Riders. Потому что собирать мусор очень весело. А об истории технарей-разрабов можно отдельно говорить.

Dispatch. Потому что лучший тейтел-лайк опыт за последние годы и офигенный саунтред.

🎥 Cinema:

Northman. Потому что лучший фольклерный эпос о винигах с крепкой эстетикой ультранасилия.

Adolescence. Потому что лучшая роль Томми из "большого куша"

The Studio. Потому что оригинально и с кучей отссылок.

Но смотрел я очень мало, поэтому на праздники дотянусь до многих других картин.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
42
Мотивационная история

Возвращаясь к ARC riders

В одной из далеких параллельных вселенных я бы хотел разрабатывать игры.

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

В этом году премия самой мотивирующей и бунтарской игре отдается разрабам ARC Riders.

История о том, как топ разрабы ушли из корпорации, наплевали на правила монетизации дрочильн и сделали свое. Так, как захотели сами. Без компромиссов.

Технари с вайбом раннего Apple. Отдельное уважение как разрабы вместо стандартных маркетинговых булщитов продвигали свой продукт хардкорными докладами про техничку

https://youtu.be/Ie8jP2w6L4Y?si=a-TdWf_JNqFCkpkx
9
iOS Makes Me Hate
Network: Мобильная связь и квота пропускного канала Зачем думать о 2G интернете? Ведь далеко не все тестят свои апки в этой сети. Тема мобильной сети — гиперчувствительная. И при этом сильно недооцененная в мобильной разработке. Недавно я брал консультацию…
Кстати лютая жиза.

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

Поставил 2G и все заработало. Пришли пуши, телега читается и отправляется, ты не в блэкауте.

Поэтому тестируйте сеть на херовом интернете
121
Martin Fowler: How AI will change software engineering

Я хз почему в ру сегменте молчат про крутейшие выпуски от "The Pragmatic Engineer". Преступное молчание.

В этом очередном охеренном видосе пришел сам Мартин Фаулер. Автор знаменитой книги, и библии многих программистов, - "Refactoring". Вкратце, нет никого экспертнее в рефакторинге, чем он.

Основные полезные темы выпуска:
- Вайбкодинг — почему это хорошо только для простых прототипов
- проблема и сложность ревью кода.
- Сравнение бездумного копипаста раньше из StackOverflow и сейчас из AI
- Проблема контроля и фокуса над проектом
- Важность автотестов и культуры автотестирования в эпоху LLM
- Как меняется рефакторинг
- Как полезно юзать LLM чтобы разбираться в инструментах
- Как меняются паттерны проектирования архитектур сейчас

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

Вообще тема живого опыта мне кажется сейчас все острее и острее. Накрутчики с выдуманным опытом, аишки с ошибочными знаниями, докладчики с продажными докладами. Новичкам легко запутаться и оступиться. Опытным легко ошибиться.
1141
Замечаю, что у многих компаний, финальный грейд для individual contributor'а (обычного разраба) — сеньор.

И будто на этом весь рост заканчивается. Какой у вас самый высокий грейд для инженера?
Anonymous Poll
24%
Сеньор
23%
Ведущий
11%
Принципал
11%
Стафф
17%
Архитектор
13%
Другое
Главные тренды мобильной разработки 2026

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

Давайте снова поиграем в гадалок. Достаем свой шар предсказаний, натальные карты. Делаем расклад.

1️⃣ AI-First, AI и контекст-инжениринг

Я уже вижу, как комьюнити начало четко делить людей на два лагеря:

1. позорный Вайб-кодер. Человек, который слабо понимает программирование и просто хаотично промтит нейросеть.
2. почетный AI-инженер. Тот, кто умеет настраивать окружение, пайплайны, контекст, понимает ограничения моделей и бустит свою продуктивность в разы.

Эта тема будет только набирать обороты. Старые подходы постепенно трансформируются. Инженеру все чаще нужно понимать, что именно пытается сделать нейросеть, почему она так решила и как ее направить, а не просто слепо принять результат.

2️⃣ Нетворк и новые инфраструктурные вызовы

Проблема чебурнета настала в 2к25, а в 2к26 это станет новой реальностью. Мы это уже разбирали в отдельной серии постов.

3️⃣ Техно-сингулярность: кроссплатформа и BDUI

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

4️⃣ Безопасность и оффлайн-логика

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

5️⃣ Low-код и AI-assisted разработка

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

А с каким трендами вы не согласны или что бы добавили?
101