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
💎 Обновление ноушена за неделю:

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

Не устану повторять как он является драйвером и генератором идей для меня. Но также в ноушене я написал пару авторских постов.

Что было обновлено:
Закончил блоки с Swift, UIKit для джуниров. Окончательно закрылся первый блок с первой частью вопросов
Начал писать вопросы для джунов по SwiftUI
Добавлено 7 новых задач с решениями в блок алгоритмы на собеседованиях
Добавлены техники решения задач: Два поинтера, Скользящее окно
Статья про Some and Any: разбор задач, подборка ресурсов
Виды сортировок: merge sort, insertion sort. Как sort реализована в кишках
Как проходить behavioral interview
Как вести себя на собеседованиях по алгоритмам
Добавлен блок SwiftUI
Добавлены архитектуры и топ паттернов проектирования в реальных задачах
Добавлены принципы проектирования:

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

🌿 Доступ к ноушену и ко всем материалам
Please open Telegram to view this post
VIEW IN TELEGRAM
72
📺 Напоминаю, в воскресенье у нас первый созвон в комьюнити

Проснулся утром в воскресенье и не знаешь чем заняться? Проведи утро с пользой.

Эту тему в чате ждали многие: от начинающих разработчиков до тимлидов крупных компаний. Я готовлю презентацию "Я потерялся. Как расти инженером?".

Там я попробую разобрать:
🟣 Как развиваться разным грейдам
🟣 Как дела на рынке труда (попробую собрать аналитику вакансий и комментарии рекрутеров и менеджеров)
🟣 Стоит ли идти в иос или развиваться в другом направлении
🟣 бигтехи, стартапы или фриланг. Когда куда идти и что ожидать?
🟣 Какие компании лучший выбор для иос разраба
🟣 Когда лучше всего искать работу?
🟣как разнообразить свое развитие
🟣худшее время для увольнения
🟣советы по резюме

Все это будет подкреплено наблюдениями нанимающих менеджеров, тимлидов, хэдов и рекрутеров.

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

Разговоры будут открытые и откровенные, особенно с риском блокировки appleStore и смерти иос-разработки.

Так как это мои первые мини доклады доступ к встрече будет только для участников сообщества любого уровня
Please open Telegram to view this post
VIEW IN TELEGRAM
1032
Еще одно небольшое объявление

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

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

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

Я уже провел голосование. Пока лидер следующей недели архитектуры и system design. Но вы можете повлиять на это 🙂
18
Созвон прошел.
Все материалы и запись с ресурсами будут в ноушене и уже в чате.

Спасибо всем, кто пришел и участвовал.

Следующий созвон будет более интерактивным.

🖤
238
Рекомендации книг для программистов

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

В ней много уже знакомой литературы, но есть и новые книги. Большинство не читал, но уже надо. Теперь осталось только найти время.

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

Подборку обязательных задач уже создал.
9
Старт тренировок алгоритмов 5.0

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

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

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

Вступай
1122
Дрейфусовская модель приобретения навыков

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

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

На первом созвоне коммьюнити я также немного попытался разобрать этот вопрос. В своем докладе хотел разобрать тему оценки спецов. В этом мне помог доклад Саши Сычева, head of mobile Тинькофф Страхования. Здесь можете почитать расшифровку. Почти все компании, сознательно или без, приходят к такому уравнению.

Подборборка интересных ресурсов по теме:
- Как построить матрицу компетенций с нуля
- Матрица компетенций в авито для инженеров
- iOS skills matrix

💎 Ну и я выложил обещанные материалы и инструменты для построения матрицы в ноушен, вместе с моим докладом и презентацией.
Please open Telegram to view this post
VIEW IN TELEGRAM
9
System Design: Сбор требований

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

В реальных задачах писать код чаще это 30-40% рабочего времени. Все остальное большая роскошь. В крупных бигтехах создаваемые инструменты будут надолго. Ими будут пользоваться множество других разработчиков. Поэтому уделять этому этапу необходимо много времени.

Почему?
🔘Хороший дизайн вашего апи будет удобен клиентам
🔘Чистый код и логичные конструкции избавят от проклятий других разработчиков
🔘Умение замечать функциональные и нефункциональные требования перед дорогой реализацией.

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

Основные этапы проектирования:
🔘 Сбор требований
🔘 Оценка нагрузки
🔘 Высокоуровневый дизайн
🔘 Компонентный дизайн
🔘 Повышение отзывчивости и отказоустойчивости
🔘 Мониторинг и алертинг
🔘 Безопасность

В этой статье мы расмотрим этап проектирования — это сбор требований. Есть два красных флага, когда кандидат не справляется с задачей на этом этапе:

1️⃣ Сдается и отпускает руки
2️⃣ Сразу преступает молча к реализации

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

***Уточнение:** На интервью не стоит тратить много времени на сбор требований. Но на реальном проекте это один из важнейших этапов.*


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

*️⃣Все ли состояния экрана проработанные
*️⃣Что будет при ошибках?
*️⃣Что будет, если данных не будет хватать?
*️⃣Что будет, если нет интернета?
*️⃣Будет ли поддержка планшетов, макОС?
*️⃣Откуда берутся данные?
*️⃣Кэширование или локальное хранилище?

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

📌С чего же начать? Правильней всего будет выдержать баланс и не закопаться в деталях. Уметь быстро выявить важные требования и отсеять второстепенные. На этом этапе нужно забыть об архитектурах или выборе SwiftUI или UIKit

Лучшее решение на первом этапе - это лучше понять проблему.

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

Об этом в следующих постах.

Полная и расширенная статья с ресурсами уже доступна в ноушене
Please open Telegram to view this post
VIEW IN TELEGRAM
142
Неписанные правила: как вести переговоры с Meta*

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

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

Прежде чем вести переговоры:
1️⃣ Не говорите, что вы будете торговаться или собеседуетесь. Если вы сообщите заранее, то торги начнутся преждевременно
2️⃣ Убедитесь, что у вас есть несколько других офферов перед торгами. И не просто офферы от обычных компаний, а по статусу не меньше, с кем намечается торг
3️⃣ Если вы метите торг в крупную компанию, то подготовьте офферы заранее.
4️⃣ Будьте френдли. Налаживайте отношения с рекрутерами. Задача рекрутеров — закрыть ставку. Но это не значит что нужно на них давить и примерять роль избалованного хамла.

*Запрещенная в РФ
Please open Telegram to view this post
VIEW IN TELEGRAM
7
🛹 Вопросы для собеседований | Диспетчеризация | ч. 1

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

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

Доступ можно получить все там же
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
132
⚙️ Коллекции в Swift

Если вы думаете, что в iOS только три типа коллекций (Array, Set, Dictionary), то вы ошибаетесь.

Вчера в чате мы разобрали еще около 20 видов. Из которых многие очень экзотичные. А какие-то популярные:

OrderedSet — упорядоченная коллекция уникальных элементов.
OrderedDictionary — упорядоченная коллекция пар ключ-значение.
Heap — контейнер элементов Comparable, с константным доступом к min и max членам. И вставкой новых элементов с logn сложностью.
Deque — упорядоченная двухсторонняя очередь

Уже сформировали вопросы на мидла для ноушена по Swift.
Please open Telegram to view this post
VIEW IN TELEGRAM
13
💬 Техники решения алгоритмов: Скользящее окно

Продолжаю цикл постов про техники, которые упрощают написание алгоритмов.

Техника скользящего окна по реализации и сложности похожа на технику двух указателей, о которой я писал ранее.

Она используется для решения некоторых типов проблем:
Максимальная сумма подмассива размера
Минимальная сумма подмассива размера
Сумма подмассива минимального размера
Самая длинная подстрока без повторяющихся символов

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

Когда использовать метод скользящего окна?
в задаче передаётся упорядоченная и итерируемая структура данных, вроде массива или строки
просят найти подпоследовательность в массиве/строке, самое длинное/короткое, среднее/большое/маленькое и т. д.
первым в голову приходит наивное решение со сложностью *O*(*n*2) или даже *O*(2*n*)

💎 Еще больше техник с разбором задач из собеседований тут
Please open Telegram to view this post
VIEW IN TELEGRAM
73
Сейчас я работаю над проектом финтеха и мне эта доменная область очень нравится.

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

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

Те, кто с опытом, поделитесь еще чем нибудь что стоит учитывать.
1691
🌄 Подборка обязательных видосов WWDC за все время

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

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

Получить доступ можно тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
147
🟦 SwiftUI: Объяснение разницы State, StateObject EnvironmentObject, ObservedObject

Одна из самых запутанных тем для новичков в теме property wrappers.

В SwiftUI мы не управляем вьюхами напрямую, а вместо этого изменяем состояние или источники истины, которые влияют на результат.

SwiftUI дает нам несколько способов хранения состояний, но важно понимать их отличия:

State — это propperty wrapper, для управления простыми типами значений, такими как Int, String, Bool и т. д.,они изменяемые и обновляют вью при изменении значений.

🔵StateObject — юзается для хранения сложных локальных объектов.

🔴ObservedObject — юзается для хранения сложных локальных объектов, переданных извне.

🟠 EnvironmentObject используется когда у нас модель распределена во многих местах. Аналог DI.

Еще больше отличий написал в ноушене. А также добавил статьи про жизненный цикл SwiftUI.

Также там внес поправки с учетом iOS 17
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
232