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
Идея ничего не стоит

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

1. Скопировать можно все, что угодно. А вот что не получится скопировать, так это конкретно тебя — твой ход мыслей, идеи, видение будущего, взгляды, отношение с другими людьми и все то, что тебя делает тобой. Решения, которые видят конкуренты, — сильно на поверхности, но самое важное происходит «под капотом», самое важное — это то, что происходит у вас внутри команды, то, как вы осмысляете новый опыт. Это то, что сегодня пока никто не видит, а увидит через определённый отрезок времени. Вот этот отрезок и есть то, что невозможно скопировать, потому что он состоит из твоих уникальных особенностей и идентичности твоей команды.

2. А вообще, все вокруг — это копия чего-то. Только некоторые копируют 1:1, поумнее компилируют идеи между собой, и рождается что-то новое. В пустоте ничего не родится. Мы, как вид, потребляем гигабайты контента ежедневно. Современный человек получает за месяц информации больше, чем человек в 17 веке за всю свою жизнь. Так есть ли эта уникальность на самом деле? Уверен, что о том, что я пишу, кто-то уже писал неоднократно, но моё отношение к этому вопросу помогает посмотреть на него под другим углом и даст ход другим идеям, у других людей.

3. Мне нравится мысленный эксперимент: представь, ты делишься всеми текущими идеями/наработками, выкладываешь их в соцсети, максимально делаешь открытой информацию о том, над чем работаешь и с кем работаешь. Страшновато, не так ли?) Если после этого есть ощущение, что у тебя ничего нет, значит, мы по пути потеряли самое главное — знания о том, что ты будешь делать с этой идеей завтра и послезавтра, а без этого знания идея ничего не стоит.

P.S. Есть статистика Global Entrepreneurship Monitor (GEM), в которой подводят итог, что лишь малый процент людей переходит от идеи к действию, например, это хорошо видно по статистике желания людей войти в предпринимательство и фактические данные. В общем, по итогу из всех желающих предпринимателями становятся не более 5%. Бояться не стоит, а наоборот стараться зашерить что-то кайф, главное конечно правильно выбрать с кем)
83
Обновление ноушена за неделю:

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

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

Что же обновилось за неделю?
- Добавил блок с вопросами для собеседований по UIKit (закончен на 75%) и Swift (закончен на 50%). Их можно использовать не только для прохождения, но и для проведения. Тем самым почти закончив блок для джунов
- Начал закидывать вопросы многопоточность для мидлов.
- В алгоритмах добавил раздел об оценки по памяти
- В алгоритмах раздел "как вести себя на собеседованиях" или почему это также оценка софт скиллов.
- Добавил раздел "Частые задачи на собеседованиях" с их решениями
- Обновил оценки алгоритмов: добавил примеры на Swift факториал и 2^n
- Запланировал встречу “Я потерялся. Как развиваться?”. Уже накидываю туда материалы
- Набросал статью "GCD: Основная и глобальная очереди, Async vs Sync, обновление UI, частые ошибки" где разбирали задачи с async/sync

Также допом начали ежедневно решать алго задачи в чате и делиться своими решениями.

🌿 Доступ к ноушену
Please open Telegram to view this post
VIEW IN TELEGRAM
73
Culture Fit собесы

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

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

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

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

По каким критериям оценивают кандидата:
1. Какой опыт работы у кандидата уже есть
2. Самостоятельность инженера
3. Конфликтные ситуации и их решения
4. Инициативность
5. Коммуникация
6. По каким критериям выбираете новое место
7. Есть ли риски что вы быстро уволитесь
8. Стоите ли вы столько, сколько запрашиваете

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

Интересные материалы:
- 49 лучших вопросов для culture fit интервью
- Гайд от Яндекс Практикума

Больше гайдов в закрытой базе знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
82
This media is not supported in your browser
VIEW IN TELEGRAM
Наше сообщество стремительно растет.

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

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

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

Вступай в наше сообщество, если ты единомышленник.
11331
🧬 Some and Any

Ключевые слова some и any не новы в Swift. слово Some было введено в Swift 5.1, тогда как any было введено в Swift 5.6.

Если вкратце, то:

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

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

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

Больше разборов some и any с комментариями и какие проблемы он решает в закрытой базе
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
216
Как джуны романтизируют сеньоров

Частое заблуждение у новичков — сеньоры и лиды все знают и поэтому должны меня обучать. Это разрушительно-губительное мышление.
ИТ невероятно быстро развивается и невозможно быть практикующим или экспертным разарбом, обучать других, если ты непрактикующий спец. Но и представлять, что практикующий спец с 10 годами в FAANG'ах, должен знать абсолютно — плохо.

Главная разница между опытным разрабом и начинающим это:
1. Уметь работать с неопределенностью
2. Задавать правильные вопросы
3. Знать как найти решение

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

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

Это все великая ложь.
9
В России обяжут apple сделать сторонние сторы

Как и следовало ожидать, уступки ЕС цепной реакцией будут требоваться и у нас.

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

Зато у банков вакансий больше станет.
12
Форма для вопросов к собеседованиям

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

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

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

Тыкни сюда

*ответ можно отправлять множество раз

UPD: смотрю ваши ответы и походу скоро будет много дополнений по джунам. Спасибо
8
Как работает сортировка в Swift

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

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

Сложность по времени функции sort — O(nlogn)

@eleev в чате дал комментарий:

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


let partIdx = try _partition(within: range, by: areInIncreasingOrder)
try _introSortImpl(
within: range.lowerBound..<partIdx,
by: areInIncreasingOrder,
depthLimit: depthLimit &- 1)
try _introSortImpl(
within: partIdx..<range.upperBound,
by: areInIncreasingOrder,
depthLimit: depthLimit &- 1)
}
}

Но
introsort использовалась pre Swift 5.0
; после
Swift 5.0
был введен
timsort
, который пришел в Swift
отсюда
.


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

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

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

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

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

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

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

Программирование — это искусство. Безграничное, бездонное. Каждый может во что-нибудь влюбиться.
143
💎 Закончил первый блок вопросов для собеседований на джунов

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

📺 ~80 вопросов с ответами
📺 ~30 задач с объяснениями
📺 ~50 ресурсов и ссылок для изучения

Вышло больше, чем я планировал. Заоодно и прокачал себя. Но после вчерашнего опроса и комментов в чате понял, что упустил или упростил очень много инфы. А некоторое и сам не знал 🤣

Поэтому было решено сделать еще 2-3 части для джуниорова и других грейдов.

Нельзя объять необъятное, но мы попробуем.

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

🌄 Опрос пройди еще раз.
Please open Telegram to view this post
VIEW IN TELEGRAM
81
Метод двух указателей

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

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

💎 Когда использовать этот метод?
1. Поиск пары элементов, сумма которых равна в отсортированном массиве.
2. Удаление дубликатов из отсортированного массива.
3. Определение длины самого длинного подмассива с нужной суммой.
4. Нахождение наименьшего подмассива с нужной суммой.
5. Нахождение ближайшей пары точек на 2D-плоскости.
6. Определение максимальной суммы подмассива в заданном массиве.
7. Поиск первого неповторяющегося символа в строке.

🧬 Как мы его используем? Каков подход?
1. Инициализируйте два указателя, обычно в начале и конце массива или списка.
2. Проверьте, соответствуют ли текущие элементы по двум указателям заданому условию.
3. Если условие выполнено, верните результат.
4. Если условие не выполняется, переместите один из указателей на основе необходимой логики, чтобы уменьшить размер пространства для поиска.
5. Повторяйте шаги со 2 по 4, пока указатели не встретятся или условие не будет выполнено.
6. Если условие не выполнено, верните дефолтный результат.

В скриншотах разбор одной из самых популярных задач "Two sum"

Дополнительные задачи для практики:
- Удаление дубликатов из отсортированного массива
- Удаление элементов
- Поиск палиндрома

Разбор этих задач и другие техники уже есть в ноушене
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1532
Реверс инженеринг тиктока

Если вы решили стать хакером айфонов, то вот видос. Здесь автор учит как менять контент используя знания iOS + Objc + LLDB.

Теперь и вы можете рисовать котиков не только в Xcode
83
👓 Новый раздел в ноушене: SwiftUI

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

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

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

UPD: в чате придумали идея делать общий проект с общим ревью друг друга
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
10
Как чуваки от SwiftUI отказывались

Забавная история. Никогда не было, но вот опять. Компания потратила почти год инженеро-часов, чтобы исправить проблемы:
- Бедный инструментарий
- Проблемы с дебагингом
- Нет контроля жизненных циклов
- Много непонятной магии

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

Думаю, самое время изучить SwiftUI. Ноушен буду наполнять только самыми проверенными вещами, чтобы не превратить в мусорку
171