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

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

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
Как работают кривые Безье

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

Особенно полезно для тех, кто увлекается анимациями и графикой
92
Опрос про грейды среди опытных интервьюеров и руководителей

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

Кризис мобильной разработки связан не только с отсутствием задач, а с неправильной оценкой ресурсов на текущие задачи.

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

Новички, которые только начинают интервьюировать, чаще думают что сеньор это тот, кто идеально отвечает на теорию.

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

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

Я решил сделать опрос и воспользоваться своим социальным ресурсом. Где соберу все комментарии опытных интервьюеров и руководителей. Результатами открыто поделюсь с вами.

Пройти опрос можно тут
63
🌿 Вопросы и задачи для собеседований: Обработка жестов через UIGestureRecognizer

Продолжаю обновлять базу вопросов. В прошлый раз мы разбирали задачи на hitTest, а сейчас подборка на обработку жестов. В ней я затронул UIGestureRecognizer:
🟣 Как работает UIGestureRecognizer?
🟣 Как UIGestureRecognizer учавствует в Responder Chain?
🟣Какие проблемы решает UIGestureRecognizerDelegate?
🟣Как непрерывные жесты отличаются от дискретных?
🟣И другое

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

🌄 Получить это можно по летней скидке. Скоро я буду делать рефакторинг
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
132
Fear of Missing Out

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

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

Главный враг современной жизни — это страх упущенной выгоды.

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

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

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

Уже не редкость ты встретишь мысли «мне универ не нужен — ютуб меня всему научил». Страшно пугающие слова.

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

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

Люди перестают читать статьи, верить им. Они возвращаются в книги и документации. Сокращают посредников и дилеров.

Единственный инструмент, который стал эффективным — это люди. Наши рекомендации и предпочтения.
12
🌿 Принцип инверсии зависимостей

Этот принцип SOLID один из самых сложных для понимания. Формулировка из вики звучит так:

A. Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
B. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.


Окей. С абстракциями понятно, но что такое модули верхних и нижних уровней и где тут инверсия зависимостей? Давайте разберемся.

Для начала разберемся что такое модули: в iOS модулями можно назвать классы, фреймворки и библиотеками. Возьмем пример с классами.

🟣Класс нижнего уровня — это конкретные классы, которые выполняют конкретные действия
🟣Классы высокого уровня — это классы, обрабатывающие результаты от низкого уровня

Теперь попробуем разобраться со второй частью “Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.”

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

Где тут инверсия зависимостей?

Принцип инверсии зависимостей помогает строить приложение не от реализаций, а от абстракций.

🌄 Полная статья по подписке со скидкой на бусти
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9
Подборка статей по Core Data

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

🟣Стартуем с Core Data! Сложное простыми словами
🟣Core Data в деталях
🟣Demystifying Core Data: A guide for newcomers
🟣Migrating your data model automatically
Please open Telegram to view this post
VIEW IN TELEGRAM
11
Хорошо, что успел взять ипотеку на прошлых условиях.

С утра поздравляют как с днем рождения.
1812
🌄 Экзистенциальные типы: Все о прозрачных типах

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

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

В этой статье я постарался основательно подойти к вопросу и разобрать важные вопросы:
🟣Какие проблемы есть у протоколов и дженериков
🟣Что такое экзистенциальные типы
🟣В чем разница универсальных и Непрозрачных типов
🟣Какие проблемы решали some от any?
🟣Что такое экзистенциальный контейнер
🟣Когда Value Type может хранится в куче?

Если у вас по этой теме были проблемы, то очень советую эту статью.

🌿 Доступ к ней вы можете получить через летнюю скидку на бусти или чатбота
Please open Telegram to view this post
VIEW IN TELEGRAM
85
Качественные мок-собесы лучше слитых реальных

У недобросовестных представителей ит сейчас новый способ вовлечения — слитые собесы. Почему я считаю что это неэффективный способ обучения?

За последние 2 недели я усердно готовлюсь к марафону по мок-собесам. За мой большой опыт я провел уже 200 собесов (это очень много). Знаю как проводить алгоритмы, платформу, скрининги и даже проектирование с поведенческим. Участвовал в бурных обсуждениях внутри стартапов и бигтехов, менял и предлагал задачи, которые оценивают кандидатов. И понимаю какой огромный труд стоит за всем этим процессом. Я никогда так не готовился ни к одному собесу.

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

И вот представьте такую ситуацию. У вас есть два контента от двух разных интервьюеров:
- интервьюер Коля тратит огромное время на донесение инфы. Подбирает слова. Создает справедливые принципы оценки. Фильтрует адекватные задачи и вопросы. Он понимает всю ответственность своей публичной работы и тратит время на подготовку

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

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

Ну и если вы учитесь, то учитесь у тех, кто уважает свою работу и труд
622
📺 Подборка статей про менеджеры зависимостей

Управление пакетами — одна из главных задач разработчика. Нужно ли тащить новую либу? Как передавать свой код другим командам? Чем отличаются между собой пакеты?

Подборка статей, которые помогут в этом разобраться:
🟣Менеджеры зависимостей
🟣Стать от Red Mad Robots "Swift Package Manager"
🟣Тернистый путь внедрения Swift Package Manager. Доклад Яндекса
🟣Cocoapods, Carthage, SPM: как выбрать менеджер зависимостей в iOS
🟣Swift Package Manager vs CocoaPods vs Carthage for All Platforms
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Задача недели

Можно решать разными способами:
🟣самый лаконичный
🟣самый быстрый
🟣самый читабельный
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Ссылка структур на саму себя

Когда-то меня просили сделать рекурсивный связанный список через структуру. Но так как структура это Value Type, то мы это не сможем сделать с ней.

В статье рассказывается как обойти эту историю:
🟣Определить переменную с нужным типом в массиве
🟣Создать обертку над нужным типом
🟣Заменить структуру на класс 🪗
Please open Telegram to view this post
VIEW IN TELEGRAM
3