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
🧬 Анонс фреймворка для Mobile System Design Interview

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

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

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

В нем будут собраны:
🟣Частые задачи в мобильных приложениях (создания чата, рисовалки, аналитики, модуляризации, кэширования)
🟣Общие правила и концепцие построения высококачественных систем
🟣Ресурсы и тренажеры для прокачки или поддержки навыков
🟣Множество других плюх

Основные ресурсы для вдохновения:
🔘Фреймворк для Mobile System Design
🔘Книга “Mobile System Design"
🔘Книга “Building Mobile Apps at Scale”
🔘 Множество других инструментов и книг из соседних платформ (бэк, фронт, андроид)
🔘Сбор мнений и валидация через комьюнити экспертов

💎 Пока инструмент будет наполняться только в закрытом комьюнити
Please open Telegram to view this post
VIEW IN TELEGRAM
12
This media is not supported in your browser
VIEW IN TELEGRAM
Черный пояс по собесам, белый по работе
182
💎 Как проходят собесы: Почему литкод лучшая секция для собесов

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

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

Поэтому среди разрабов вечно споры:
- одни обвиняют других, что алгоритмы не нужны в реальных задачах и важно знание платформы
- другие обвиняют других, что 90% вопросов про платформу бесполезные на практике и занимаются поиском энциклопедии, а не программиста

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

Давайте разберем как вообще применяются алгоритмы.

Есть два вектора применения алгоритмов:
- алгоритмы для повседневных задач;
- алгоритмы для оценки навыков на собеседованиях.

🌋 Алгоритмы для повседневных задач

Уже почти ни у кого нет никаких сомнений, что знание алгоритмов и структур данных является очень полезным навыком для любого разраба. Это фундаментальная область computer since, на которой держится вся разработка. Если вы будете практиковать навык разработки алгоритмов, то это поможет быстрее и эффективнее решать типовые задачи в повседневной работе и меньше ошибаться. Грубо говоря, вы набиваете руку и тренируете насмотренность.

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

🌋 Алгоритмы для оценки навыков на собеседованиях

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

Чаще на алгоритмах не проверяет знание специфичных алгоритмов, а проверяется гораздо больше:
🟣мышление
🟣последовательность
🟣умение отладки кода в голове

Цель не в том, чтобы посмотреть как человек пользуется IDE или зазубрил очередное решение в ответах литкода, а узнать как он мыслит. Как он ведёт себя в стрессовой ситуации тоже важно (становится ли конфликтным или сдержано контролирует ситуацию)

Кодер != программист

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

Компании нужен человек умеющий решать проблемы.
Please open Telegram to view this post
VIEW IN TELEGRAM
1131
🧬Алгоритмы: Является ли строка подпоследовательностью

Сразу пройдемся по одной из самых популярных задач.

🟢Сложность: Легкая

Описание:
Даны две строки s и t. Напишите функцию, которая возвращает true, если s является подпоследовательностью t, или false в противном случае.

Подпоследовательность строки — это новая строка, которая формируется из исходной строки путем удаления некоторых (может быть ни одного) символов без нарушения относительного положения остальных символов. (т. е. «ace» является подпоследовательностью abcde, а «aec» — нет).

1️⃣ Пример:
Входные данные

s = "abc"
t = "ahbgdc"

Ответ: true

2️⃣ Пример

Входные данные:

s = "axc"
t = "ahbgdc"

Ответ: false

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

Мы запускаем цикл по всем символам строки t и сравниваем их с символами строки s. Для отслеживания позиции в строке s мы будем использовать указатель left.

- Если символы совпадают, мы двигаем указатель строки left на одну позицию вперед.
- Если после прохода по всем символам строки t указатель left указывает на конец строки s, значит строка s является подпоследовательностью строки t.

💎 Больше разборов задач тут
Please open Telegram to view this post
VIEW IN TELEGRAM
11
🌿 Серия статей Swift Concurrency

Чтобы писать об актуальном контенте я, как минимум раз в неделю, смотрю актуальные вакансии.

Могу смело сообщить — вакансий со стэком SwiftUI, Combine, Async/await стало много. А значит уже необходимо хорошо изучать эти инстурменты, чтобы быть конкурентным на рынке.

Это будет полезно как новичкам, так и опытным, которые застряли в легаси.

Начал серию больших статей про основы Swift Concurrency. В них много кода и примеров.

В первой можно изучить:
🟣Что такое Swift Concurrency
🟣Конструкцию Async/Await
🟣Что такое GCD и его проблемы

Также ждите вопросы для самопроверки и контент по Combine

🌸 Доступ к статье можно получить тут
Please open Telegram to view this post
VIEW IN TELEGRAM
9
📺 Обязательные книги для сеньоров в iOS часть 1

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

Вот собрали обязательные книги для сеньора. Поделюсь частью:

1. Building Mobile Apps at Scale: 39 Engineering Challenges

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

2. Growing as a Mobile Engineer

Достижение уровня старшего и выше старшего мобильного инженера. Книга для инженеров iOS и Android, а также менеджеров по мобильной разработке. Помогает дорасти до сеньора в мобильной разработки. Книга не панацея, но отлично поможет нарисовать свой roadmap

3. MAC OS® X AND iOS INTERNALS

Многие документации по iOS и Mac разработке окутаны тайной. Часто есть только один путь понять кишки — лезть в них самим. Автор книги сделал это за нас и расписал особенности работы ОС. Не факт, что все актуально, но познавательно

🌿 Полный список можно найти в сообществе
Please open Telegram to view this post
VIEW IN TELEGRAM
104
245
💎 Реклама крутого разработчика

За этот пост мне не платили и я не согласовывал его с автором канала. Он сам его впервые увидит. Такой комплиментарности вы не купите у меня ни за какие деньги. Хотя готов поторговаться

Об Астемире @eleev я узнал случайно ресерча интернет. А познакомился лучше уже в нашем чате. Вы уже по-любому видели его работы и упоминания в других каналах. До его скромности мне еще расти и расти. А до таланта тем более.

Вот лишь малая часть из его работ:
🟣Лучший сборник вопросов по SwiftUI
🟣Один из полезных гитхаб аккаунтов
🟣Автора многих сложных анимаций

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

Подписывайтесь на его канал и ждите топ контента @contravariance

Выхода у него теперь нет
Please open Telegram to view this post
VIEW IN TELEGRAM
3764
💎 Вопросы для собесов по Swift Concurrency | часть 1

В ноушене я продолжаю собирать инфу про современные стэки. Как я уже говорил, по данным hh 90% новых проектов уже пишут проекты на SwiftUI, Combine и Async/Await.

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

Что ждать в сборнике:
🟣 Чем async/await лучше GCD?
🟣 Как создать параллельное выполнение тасок?
🟣 Как отменять ассинхронные операции?
🟣 Что такое Detached Tasks?
🟣 И еще около 15 вопросов

🌿 Этот и другие сборники можно найти тут
🧬 Ознакомиться с другими сборниками тут
Please open Telegram to view this post
VIEW IN TELEGRAM
111
Какой порядок выведется в консоль?

UPD: Вызов из main очереди
61
51
🖥 Когда нужно писать [weak self]: Delayed Deallocation

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

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

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

В примере показан тест кейс, когда использования

guard let self else { return }

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

Также в ноушене я сделал перевод популярной статьи You don’t (always) need [weak self] с актуальными и понятными примерами.


💎 получить доступ можно тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1444
This media is not supported in your browser
VIEW IN TELEGRAM
Даже инфоцыгане в шоке

Вы зачем их обижаете?
861
☄️ Упражнение по проектированию мобильных систем: Чат

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

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

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

Мессенджеры вообще считаются отдельным видом приложений:
🟣Тут вечная нагрузка на батарею, UI
🟣Синхронизация с кэшом и бэком
🟣Работа с пагинацией отдельная жопа
🟣Управление навигацией и много других необычных штук

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

🌄 Вступить в чат и получить на альфу версию фреймворка можно тут
Please open Telegram to view this post
VIEW IN TELEGRAM
844
Media is too big
VIEW IN TELEGRAM
Я не верю, что решая только рабочие задачи мы развиваемся.

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

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

Невозможно просто взять и стать хорошим экспертом. Накрутив в резюме поверив в это. Это навык и ремесло, это нужно практиковать и развивать.
1644
Задачи на алгоритмах: Максимум последовательных единиц

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

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

🟢 Сложность: Легкая

Дан массив единиц и нолей. Найти максимальную последовательность единиц

1️⃣ Пример 1

Input: nums = [1,1,0,1,1,1]
Output: 3

Объяснение: Первые две или последние три цифры представляют собой последовательные единицы. Максимальное количество последовательных единиц — 3.

2️⃣ Пример 2

Input: nums = [1,0,1,1,0,1]
Output: 2

https://leetcode.com/problems/max-consecutive-ones/description/
622
🌿 Скидка на подписку в бусти

Не знаешь чем занять себя на майских? Я решил сделать скидку в это подходящее для саморазвития время.

Если ты устанешь от шашлыков, то можешь:
🟣 Изучить или проверить себя ответив на ~250 вопросов для собесов
🟣 Порешать 50 самых популярных задач по алгоритмам. А если не выйдет, то изучить решения и техники
🟣 Узнать как проходится систем дизайн, архитектурные собесы и какие задачи на нем спрашивают
🟣 Пообщаться в чате, который ни дня не остается без сотен полезных сообщений

Прошлые подписки по акции разобрали за 3 дня. Пока поставлю ограничение в 30 активаций.

Лучше сразу брать на несколько месяцев: так и мне понятно на сколько планировать контент и вам дешевле

💎 Оформить подписку можно тут
Please open Telegram to view this post
VIEW IN TELEGRAM
97
О творческой импотенции или почему запрещено слишком много обсуждать зп и офферы в чате

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

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

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

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

От этих разговоров веет банальностью, скукой и усталостью от жизни. А иногда даже бессилием и наивностью, что сумма в кармане даст тебе идеи и возможности её правильно применить.

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

Программисты — творческий народ. Да и не бедный. Рано или поздно многие опытные разработчики понимают, что деньги не закрывают всех их потребностей, хоть и дают свободы. Многие выгорают, из-за того, что не находят огня в своих глазах.

Достоевский писал, что отсутствие творчества в действиях — признак бессилия.

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

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

В своей среде я не хочу быть зацикленым на бабках. Я хочу создать среду, которая зациклена на творческих возможностях
1996