iOS Makes Me Hate
3.94K subscribers
1.16K photos
168 videos
15 files
1.33K links
Авторский канал про iOS разработку. Путь продуктовых самураев в MAANG.

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

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
Разработка стала командным видом спорта

Этот пост глубже чем кажется

Вы часто слышали эти слова. Время соло контрибьюторов почти закончилось. Компании, которые оценивают тебя за импакт в одной платформе, почти вымерли.

Им уже не важно какой крутой код ты пишешь. Какую архитектуру придумываешь. Сколько юнит-тестов напишешь. Какие алгоритмы используешь.

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

Это большое заблуждение среди разработчиков — тянуть на себя все одеяло. Опыт доты 2 показывает, что тимплей в снг у нас слабый. Мы все хоть раз разбивали шмотки и фидили курьерами когда были новичками. Но адекватное ли это поведение и станешь ли ты most valuable player? Или же наоборот и ты можешь быть самым расфармленным персонажем, но вам снесли трон. Жиза?

Сила команды сейчас решает больше, чем никогда.

Что мы можем тут сделать? Стараться быть MVP и искать крутые команды.

Поэтому я ставлю доверие и тимплей впереди всего. А ложь всегда сыграет команде в убыток. Не играй на себя в командной игре. Не будь единоборцем в процессе, где важны командные усилия.

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

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

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

Допуская такие серьезные ошибки как запуск приложения после подкачки фичатоглов, что увеличивает время запуска. Избыточную нагрузку на Main Thread. Не следят за расходом батареи и памяти.

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

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

🟣Производительность влияет на такие аспекты, как время отклика, энергопотребление, использование сетевых и дисковых ресурсов. Это напрямую влияет на кол-во лидов и лояльность юзеров.

🟣Даже крупные компании, такие как Facebook, инвестируют в оптимизацию, поскольку это позволяет сократить расходы на оборудование и улучшить пользовательский опыт.

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

🟣Разработка с учётом производительности (performance-aware programming) не требует глубоких знаний ассемблера, но помогает принимать обоснованные решения при проектировании и реализации.
Please open Telegram to view this post
VIEW IN TELEGRAM
9
Топ 3 бесячих приложения

Мнение автора может отличаться от вашего*

У меня iPhone 15 Max, но даже с этим устройством некоторые приложения либо долго загружаются, либо подвисает FPS. Что меня дико триггерит.

Этим постом не пытаюсь поставить чью-то компетентность под сомнения, но просто делюсь тем, что дико не нравится.

1. На первом месте меня бесит выдача в hh.ru. Даже на моем не слабом устройстве есть ощущение при скролле, что кадры куда-то теряются. Все обрывисто и дергано

Кстати, есть слух что это сделано на SwiftUI. Апрувните?

2. Дальше Яндекс Го. Тут конечно скидка на то, что это суперапп и все они неповоротливые и неудобные, но все же очень не хватает скорости, когда нужно заказать такси. Машины у меня нет, и такси я пользуюсь часто, но вот пара секунд на дергания или запуск — часто раздражают

3. Тут я не знал между чем выбрать: мегамаркет, самокат или Яндекс маркет. Записал видео с мегамаркетом, тк иногда он просто не загружает страницу.

К маркету можно подойти снисходительно, его и так ругают часто (возможно из-за BDUI). А самокат вообще сделан на React Native достойно. Но все же отсутствие плавности, фреймдроп, долгая загрузка на мощных устройствах бросается сильно в глаза

Делитесь своими бесячими моментами
208
Пост мотивации с утра написать про дисциплину

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

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

Удивлен, что чаще многого и не нужно. Просто придерживаться планов и своим словам.

Банально, мы с женой ходим в зал уже 6 месяцев регулярно. 3 раза в неделю с тренером, в 8 утра. И какого же наше было удивление как сложно найти тренера который дисциплинировано приходит в 8 утра и не переносит под глупыми отговорками. Казалось бы, режим и методичные упражнения лучше всего воспитывают самоконтроль, но нет. Три тренера подряд начали сачковать, хотя красиво стелили и клялись что они "не такие как предыдущий(ая)" и с их стороны не будет пропусков.

Эти тренера сами себе враги. Они потеряли деньги просто потому, что сами пообещали одно, но не смогли выполнить план. Выигрыли те, кто банально просыпается раньше, тверд в своих словах и поступках. У них и клиентов больше, и их ученики добиваются результатов быстрее.

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

Также в ит, в блогерстве и тп. Каждый поставит себе цель «попасть в компанию X» или какую-нибудь другую, но его очередная цель внезапно перебилась другой внезапной целью. Забрасывают на старте, или сдуваются. 80% громких обещаний в СМИ тихо умирают, потому что «появились более важные дела». В итоге, ни одно дело до конца не доведено. А воздух сотрясен.

В эти моменты понимаешь всю силу слов «выполняй обещания и умей доводить дело до конца». Ну и более народное «мужик познается верностью слова» 😐

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

В многозадачности дисциплина помогает от инверсии приоритетов и гонки данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
271
Воскресная рекомендация

Просиживаю последние дни своего «отдыха». Решил все же перепройти весь The Last of Us.

Освежить память перед выходом второго сезона. Мне первый не понравился. Я не назову его плохим сериалом. Просто игра намного кинематографичней сериала (кек?). Где по опыту интимности и сопереживания могут превзойти только книги.

Начинал я свой «отпуск» с веселой и волшебной Ori. А заканчиваю одним из лучших драматических произведений гениального Дракманна.

Конечно, не последнюю роль играет МУЗЫКА. О ней и этот пост.

https://youtu.be/FzbKCYjoShU?si=9ffins_wiR3TQjNJ
8
This media is not supported in your browser
VIEW IN TELEGRAM
🪲 Рубрика баги SwiftUI: Проблемы со скроллом в iOS 16

Мы продолжаем инженерно изучать SwiftUI. Мне не нравится тупо читать доки или книги, ведь в них чаще всего не написано и 2/3 всех подводных камней. Никто не будет критиковать свой товар или рассказывать о багах.

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

Вот и в прошлом посте я, как ворчливый дед, пожаловался на ленту hh.ru. А именно на ее неприятный скролл. В комментах скинули интересный пост.

В нем говорится, что при использовании LazyVGrid внутри LazyVStack в ScrollView в iOS 16 возникают проблемы с отображением и поведением.


Причины проблем:
🟣Алгоритм расчёта layout'а в iOS 16 был менее оптимальным, чем в iOS 17.
🟣 Баг кэширования в LazyVStack, особенно если содержимое ячеек меняется динамически.

Скидывайте свои интересные и не очень баги.
Please open Telegram to view this post
VIEW IN TELEGRAM
10
Метафора технического долга

Всё новое — хорошо забытое старое.

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

Чем больше команда разработки —> чем больше производство кода —> тем больше нужно процессов для работы с приоритетностью и стабильностью. Объемы некоторой рутины становятся настолько большими, что обычным наймом доп рук сильно не улучшишь картину.

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

В этом вопросе тесты и техдолг отлично помогают.

1. Тема тестов с развитием LLM набирает обороты, но о ней так мало написано в контексте крупной корпоративной разработки. Это очень важный инструмент, который впервую очередь ускоряет время регрессов, а значит релизов и time-to-market.

2. Техдолг. Уметь оставлять важное и убирать второстепенное — один из важнейших навыков. Запуск и формулировка MVP это отдельный скилл. Но в погоне за избыточным упрощением или неуместным усложнением не стоит забывать про такой мощный инструмент как работа с техдолгом.

Вот и в этом видео отличная непопулярная метафора про техдолг (хотя прошло уже 16 лет).
7
Кстати, почти забыл. Тут 14 число и я обещал что-то важное публиковать в этот день.

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

Тема очень важная и актуальная. За год набролось и поменялось многое. Летом я наконец переезжаю в Москву и можем попробовать собраться на первую оффлайн сходку. Как раз соберу к ней обновленный материал.

А пока можете получить доступ по скидке.
7
📐SwiftUI: Перестраиваем мышление под Layout

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

Одна из причин следовать совету "Выходи за рамки iOS" 😏

Собрал пару важных советов, которые помогут перестроить мышление:

🌟Не думай в координатах, думай в контейнерах.
В UIKit ты часто думаешь так: “Кнопку нужно поставить на 20pt ниже текста и выровнять по центру.” Ты буквально “рисуешь на экране”.

В SwiftUI: “Я хочу вертикально разместить текст и кнопку, а между ними немного пространства.” SwiftUI сам решит, где поставить, если ты правильно укажешь что с чем и как они вложены.

🌟Пиши, будто ты описываешь структуру HTML.
Представь, что это не координаты, а вложенные блоки. HTML работает по тем же принципам:
- Элементы вложены друг в друга.
- Есть блочные (div, section) и встроенные (span, img) элементы.
- Размеры и поведение управляются контейнерами и стилями.

🌟Изучай, как контейнеры взаимодействуют.
Например, Spacer растягивается и заполняет пространство, а frame может его ограничить. Контейнеры (HStack, VStack, ZStack) — это строительные блоки. Но каждый ведёт себя по-своему, особенно при нехватке или избытке места.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
161
Как я использую ИИ для повышения производительности труда (и почему он не украдет у вас работу)

Наш любимый братишка Bruno Rocha, сеньор из Spotify, рассказывает как юзает AI для увеличения своего перфоманса. Вот несколько тезисов:

🌟ИИ как помощник, а не замена
Я полностью согласен со многими коллегами, что AI полноценно нас не заменит. Развиваться технически все еще надо. Потому что AI не замена, а множитель нашего скилла. А те, кто говорит про полную замену — далеки от практической разработки.

🌟Хорошо решает очень простые и конкретные задачи
Сейчас Cursor выполняет много рутины. Да, пусть не идеально, но это уже экономит кучу времени даже с патчингом и правками кода. Это отличная замена StackOverflow

🌟Хорошо помогает при ресерче неизвестности
Когда например гуглинг помогает при четких и конкрентых целях, то AI помогают при работе с неопределенностью. Если вы не знаете, что ищете, вы можете объяснить ему свою ситуацию, и он укажет вам правильное направление

🌟Поиск БЫСТРЫХ ответов
Автору становится все труднее и труднее получать быстрые ответы на свои вопросы с помощью Google. Поскольку SEO-оптимизация стала все более важной для выживания в Интернете. Этой проблемы нет в AI агентах. Нет ни вступление для спонсоров, ни раздутый текст с ключевыми словами. Четкий и быстрый ответ
Please open Telegram to view this post
VIEW IN TELEGRAM
12
This media is not supported in your browser
VIEW IN TELEGRAM
Вы думали эти мемы не доберутся до этого канала?
3171
Ну че, шалом алейкум.

Слава Яндексу. За императора.

Впереди несколько постов про Яндекс. Мне повезло и в мои первые дни сразу будут корпоратив и митап 🙂 поэтому ждите много контента как внутри работает Яндекс.

Можете задавать любые вопросы
388
Шок контент.

Яндекс каждому новичку выдает такой индивидуальный стартер-пак. В нем все твои увлечения и характеристики, с личной фигуркой
361310
❤️.моб

Яндексоидного вайба

По фоткам можете понять БЮ

Офис топ, можно даже помыться:)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
525