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
Media is too big
VIEW IN TELEGRAM
А об этой книге я уже писал и она есть в наших ресурсах

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

Объяснять почему тема перфоманса важна не стоит. В крупных компаниях всегда есть команды, которые следят за быстродействием приложения: как быстро он отрисовывает UI, насколько сильно загружается main thread, как быстро работают запросы в локальную бд и сеть и много другое.

Даже сейчас занимаюсь углубленным анализом перфоманса. Недавно столкнулся с неприятной проблемой фриза приложения. В таких проблемах часто бывает, что баг сложно найти и воспроизветси. У меня все ок, а у мажорных клиентов — фриз и приложение не отвечает. Особенно сложно, когда у тебя много миллионная аудитория и баг воспроизводится лишь у 1-2%. Эта проблема умножается в разы. Приходится придумывать сложные логеры и метрики, писать быстрый код и копать в кишки.

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

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

iOS App Performance Monitoring Best Practices. Базовая обзорная статья с верхнеуровневым объяснением про перфоманс

Подборка материалов iOS-Performance-Optimization. Хороший сборник материалов про оптимизацию: от управления размеров и памяти до практик крупных бигтехов

Check List: 25 Ways To Optimize iOS App Performance. 25 базовых советов как оптимизировать апку.

Ultimate application performance survival guide. Хорошая секция на WWDC, где даются советы по оптимизации.

Writing High-Performance Swift Code. Официальные советы по написанию высокопроизводительного кода
132
Пост (не) о подборке задач и решений сообщества

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

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

Эта подборка специально для тех, кто подписан на сообщество, но не читает чат. Мы собираем ее для вас.

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

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

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

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

Недавно я опубликовывал видео «для чего нужны универы». В меня сильно вонзились слова о создании платформы одноидейных людей с +- одинаковым IQ, подсмотрев слова одного препода. Мощного коллективного разума и краудсорсинг платформы.

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

Вступить в чат и стать частью целого можно тут за символичный членский взнос.

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

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

Меня как-то попросили его написать и я сделал нечто подобное как на первом скрине.

Пишите комменты что бы изменили и добавили

Часто вижу варианты как на второй картинке, но мне кажутся они избыточны

Покидайте свои примеры
9
Главные советы за 12 лет в Google

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

🟣1. Обучайтесь всегда.

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

🟣2. Пользователь всегда прав.

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

🟣3. Умейте сотрудничать.

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

🟣4. Просто начните. Лучше исправить, чем ничего не делать

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

🟣5. Вдохновляйте.

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

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

🟣6. Смотрите шире!

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

🟣7. Сосредоточьтесь на том, что вы можете контролировать

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

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

🟣8. Общайтесь доступным языком

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

🟣9. Стройте мосты, не бункеры

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

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

🟣10. Заботьтесь о себе

Чтобы показывать высокие результаты, помимо технических навыков, необходимо заботиться о себе. Находите время для отдыха, перезарядки и занятий своим хобби. Создайте вокруг себя окружение из людей, которые поддержат вас в трудные моменты: менторы, друзья, семья, коллеги.
Please open Telegram to view this post
VIEW IN TELEGRAM
106
Ну че, учавствуем в конкурсе?

прошлый раз мы взяли призовое

https://t.iss.one/iosmakesmehate/802
11
🧬 Вопросы на собеседованиях: Реактивное программирование | RxSwift ч. 1

Я хейтер RxSwift. Мне не нравится реактивное программирование, но от него никуда не убежишь. Сейчас я, слава всем богам, не юзаю её. Но ее не перестают спрашивать на многих проектах Сбера, БКС, Звука, БериЗаряд и многих других.

Если ты претендуешь на сеньора и выше, то должен знать тот стэк, который используется у них.

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

В этом сборнике я собрал вопросы:
🟣Почему RxSwift хорошо ложится на MVVM?
🟣Какие плюсы мы получаем в проекте от RxSwift?
🟣В чем разница горячих и холодных обсерверов?
🟣В чем главные концепции реактивного программирования?
🟣И еще 15 частых вопросов, которыми меня душили

🧬 Получить доступ к вопросам можно через подписку в бусти или в боте
Please open Telegram to view this post
VIEW IN TELEGRAM
11
Почему вам не нужен Kotlin Multiplatform

Видео, как защита от андроид-фанатов KMP. Причем от одного из самых авторитетных андроидеров и кмпшников. Есть еще вторая часть (но мы ее смотреть не будем). Там говорится чем же крут КМП.

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

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

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

1. Начните прямо сейчас. Если вы собрались участвовать, то возьмите отпуск и не тяните. Прошлый раз мы делали это все после работы и спустя почти неделю. За упущенное время мы могли бы сделать в разы лучше

2. Никто не оценивает ваш код. Как вы могли бы заметить по коду, то в этом конкурсе никто не оценивает ваши паттерны, сложности алгоритмов, нейминги, архитектуры и тп. Мы, по корпоративной иннерции, думали это важно. Но нет. Забудьте опыт бигтехов и корпораций, тут он может даже вам навредить.

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

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

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

Еще один ролик на ютуб. Внезапно через час я дропаю в публичный доступ.

На этот раз его проведет разработчик из яндекса, где покажет как примерно проходят собесы.

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

🧬 Вступайте хотите получить доступ к остальным закрытым видосам

А если хотите провести/пройти — пишите мне в лс @lvbond
Please open Telegram to view this post
VIEW IN TELEGRAM
102
iOS Makes Me Hate pinned «📺 Мок-собес по платформе от разработчика из яндекса Еще один ролик на ютуб. Внезапно через час я дропаю в публичный доступ. На этот раз его проведет разработчик из яндекса, где покажет как примерно проходят собесы. Пройти собес и работать в яндексе считается…»
Спецоперации по оптимизации

Тревожные слухи ходят по интернету. Сначала пишут о массовых сокращениях в ABBY, потом в VK, потом про WB. Никто не называет это сокращениями, а снова завуалировано прячется под «оптимизацией».

Не важно как это называют, важно что происходит. Происходит очередная перестановка правил и чистка. Где это повлечет за собой очередные ужесточения входа или поиска работы.

Накрутка опыта уже не работает — все начали просить выгрузки с госуслуг. Удаленки из других стран доступны только исключительным специалистам. А офисы снова становятся обязательными. Гайки крутятся везде.

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

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

Мне кажется, что бизнес ориентированность, осознанное программирование, эффективное управление ресурсами это базовые вещи, что всегда в цене независимо от времени и цикла.
133
Forwarded from КиберТопор
Telegram разрабатывает замену YouTube — команда мессенджера объявила конкурс на создание нового видеоплеера с поддержкой HLS-стриминга.

Известно, что разработка будет функционировать внутри самого Telegram, без посредника в виде стороннего браузера, а также сможет автоматически подстраивать качество ролика под скорость интернета.

Сначала новинку выкатят на iOS, а потом и на Android с десктопом, ждем.

🕹КиберТопор — Подписаться
27
SwiftUI Best Architecture

Потихоньку я наконец-то переключаюсь в современные стандарты разработки SwiftUI и Swift Concurrency и хочу поднимать темы, которые мало кто понимал: от перфоманса и масштабирования архитектур, до решения классических задач в стиле нетворк клиентов и рефреш токенов. Короче, конвертить весь мой опыт под стэк и брать самые нестандартные кейсы.

Делаю пет-проект для себя и бросаю себе вызовы. Я уже выбирал архитектуру MVI+SwiftUI, но а сейчас хочу посмотреть на что-то рыночное. То, что популярно в сообществах.

Нашел очередной срач в редите. Если вкратце, комьюнити разделилось на два лагеря:
- одни говорят что MVVM архитектура подходит только для маленьких апок
- другие говорят, что MV идеально организует код и избегает лишних абстракций в больших

Делитесь какими архитектурами пользуетесь вы
9
🧬 Запах кода: цикломатическая сложность

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

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

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

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

Интересные ресурсы:
🟣Cyclomatic Complexity: A Complete Guide
🟣Cyclomatic Complexity Calculator
🟣Metric definitions
🟣Cyclomatic Complexity in Swift: Understanding How it Affect Your Code Quality
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
62
Программисты больше не нужны

Вчера в нашем чате сеньор разраб из гугла рассказывал как проводил собес сеньора из apple и как тот максимально провалил собес по SwiftUI и UIKit. Аккуратно под это событие вышел подкаст с принципал инженером из Apple, который дает комменты про Google.

Вкратце:
🟣гугл делает кучу ненужных продуктов, поэтому многие разрабы делают много ненужного
🟣все компании нанимают разрабов, которые умеют переучиваться.
🟣Не важно, на каких языках ты пишешь, но важно, что если не хочешь учить новые языки — ты никому не нужен
🟣Гугл не нанимает программистов. Гугл нанимает умников, которые умеют программировать.
🟣Нельзя выучить литкод. Задача на интервью через литкод понять как ты умеешь решать пазлы
🟣Гугл не нанимает узких специалистов
Please open Telegram to view this post
VIEW IN TELEGRAM
11
🧬 Swift Concurrency: Actors и классические задачи

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

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

Ну а сейчас я потихоньку и тезисно формулирую статьи в базе знаний, но больше фокусируюсь на практике. В этой статье разобрал несколько примеров:
🟣отправка классического запроса в сеть
🟣совместимость кода на GCD и Swift Concurrency с помощью continuations

Дальше будет больше задач, где разберем как сделать дебаунсеры и тротлы, рефреш токены и другие рабочие примеры

🧬 Получить доступ к статье можно через подписку в бусти или в боте
Please open Telegram to view this post
VIEW IN TELEGRAM
5