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

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

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
Как помогает регулярное решение задач?

В нашем чате мы уже почти год регулярно решаем задачи. Это скорее стало полезной традицией и дисциплиной.

Какую пользу дают регулярные задачи:
🟣твой навык кодинга не деградирует
🟣ты тренируешь мышление
🟣лучше формулируешь мысли кодом.
🟣находишь краевые кейсы
🟣твой код становится лучше

Последнее утверждение самое холливарное. «Хороший код» у всех разное определение. Но насмотренность уж точно полезна.

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

Угадайте где код написанный чатгпт
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9
🧬 Как формируется грейд после собеседований или почему технические собеседования лишь малая часть общего грейда

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

Чем глубже погружаюсь, тем больше вижу заблуждений среди обычных разработчиков и в общем медиаполе. Главное массовое заблуждение — на грейд влияет только результаты технического собеседования. На практике результаты технических интервью лишь 1/5 часть общей оценки. Давайте разберемся.

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

1️⃣. Созвон с HR. Тут все понятно, hr собирает у вас комментарии о ваших требованиях и примерно оценивает взаимный матч. Смотрит на опыт.

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

Эту секцию проводят технические эксперты, которые дают свою оценку.
⚠️ Важный момент: с ней могут не согласиться

3️⃣. После всех интервью вас оценивает нанимающий менеджер. Чаще это тимлид или, если его пока нет, руководитель тимлида. Здесь нужно понимать, что это самый важный этап. Тк, вопреки общему мнению, на ваши года опыта и задачи смотрят не только hr, но еще внимательней — ваши руководители.

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

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

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

В следующем интервью (надеюсь выйдет на неделе) мы подробнее поговорим про это
Please open Telegram to view this post
VIEW IN TELEGRAM
14
Что такое Problem Solving Skill?

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

Problem Solving Skill (навык решения задач) — это способность эффективно анализировать, структурировать и решать проблемы, используя технические, логические и аналитические подходы. В контексте FAANG (Facebook/Meta, Apple, Amazon, Netflix, Google), этот навык является критически важным, поскольку компании ищут инженеров, которые могут справляться со сложными, неопределёнными проблемами в условиях высоких нагрузок и сложных систем.


Problem Solving оценивает:
🔘как кандидат анализирует и понимает суть задачи
🔘декомпозирует и оценивает приоритеты
🔘генерирует идеи и учитывает компромиссы
🔘реализует чистый и понятный код
🔘обрабатывает edge case'ы
🔘оценивает решения по тестированию и предлагает оптимизацию
🔘ведет хорошую коммуникацию и умеет объяснять свое решение интервьюеру

Я все сильнее считаю problem solving interview — лучшим процессом собеседований
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Кстати, чатгпт отлично выполняет роль ментора.

Я скинул ему ссылку с задачи на литкод и сказал провести мне мок-сессию.

Можно уже сказать, что будущее образования за нейросетью.

Репетиторы, менторы и другие идут на мороз
182
🗿 Правила хорошего Software Developer’а

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

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

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

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

🟣Изучи основные фреймворки и библиотеки своего языка.
Например, если мы iOS разработчики, то очень хорошо должны владеть UIKit или SwiftUI, GCD или Swift Concurrency.
Если ты JavaScript разработчик, то должен хорошо знать React.js или Angular.

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

С развитием AI это стало в разы проще.

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

🟣Имей навыки рефакторинга
Разбираться в чужом коде и править сложные баги чаще сложнее, чем переписать. Почти все задачи сейчас — это переписывание старых библиотек, модулей, экранов. Мало делать как было — нужно делать лучше.
Please open Telegram to view this post
VIEW IN TELEGRAM
7
isKnownUniquelyReferenced

Про CoW, наверное, знаю все. Но не все, удивительно, понимают когда нам это пригодится. Немного про реализацию своего Deep Copy механизма.

На скриншотах два поведения:
1. Когда value семантика ведет себя как reference
2. Мы исправили поведение на ожидаемое

Здесь на помогает isKnownUniquelyReferenced.

Это функция, которая проверяет, существует ли только одна сильная ссылка на объект.

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

Когда нам требуется Value семантика? Например, в создании своих структур или коллекций

А еще я сделаю подборку задач на CoW, когда нам полезно понять или сделать на практике
91
Делаем офлайн мобильную конфу в мск в 2025?
Anonymous Poll
32%
Определенно да
11%
Точно да
12%
Неуверенно да
28%
Лучше онлайн
17%
Не знаю
🧬 Подборка задач и вопросов: Сopy-on-Write

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

В этом сборнике вы наконец поймете:
🟣что такое value и reference семантика
🟣чем Copy-On-Write отличается от полноценного копирования
🟣какие задачи решаются на практике с помощью CoW
🟣многое другое

💎 Получить доступ можно на бусти и в телеграмм.
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Media is too big
VIEW IN TELEGRAM
Делюсь отрывком из двух часового подкаста с Сашей Сычевым

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

В этом отрывке он делится почему "накрутка опыта" — это показатель твоих скиллов и индикатор доверия. А доверие — это новый софт скилл
145
Mobile Meetup SberHealth

Привет, коллеги 👋

18 декабря в
18:00 приглашаем на предновогодний открытый митап для мобильных разработчиков в Москве 🩵

В программе доклады от:
▪️ Смирнова Кирилла, Технического лидера iOS команды, про компиляцию массивного проекта и как её готовить.
▪️Беспалова Владислава, Старшего разработчика, о процессе оптимизации аналитики в компании.

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

Принять участие можно как офлайн, так и онлайн.

Узнать подробнее и зарегистироваться 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
17
👨‍🦱 Топ популярных техник для решения задач с массивами и строками

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

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

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

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

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

👨‍🦱 2. Метод скользящего окна. Используется для задач, связанных с подмассивами или подстроками, где важно анализировать последовательные элементы массива или строки.

👨‍🦱 3. Prefix Sum. создать массив prefix, где prefix[i] равно сумме всех элементов до i индекса включительно. Используется, когда нужно работать с суммами элементов подмассивов.

Эти техники очень сильно помогают улучшить навыки программирования
Please open Telegram to view this post
VIEW IN TELEGRAM
1382
Неваляшка

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

Не так часто, но не очень редко, мне дают фидбэк, который почему-то трогает больше всего. Будь это менти, который захотел поучиться дисциплине. Руководитель, который хвалит за смелость. Родственники, которые довольны решительностью. Моя жена называет это «бойцовский iq». А мой психолог важным свойством, которое я не должен стесняться или пугаться.

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

Психологи говорят все идет с детства. Мой отец всю жизнь имел смелость заниматься тем, что ему нравилось. В 90е он испытывал проблему с работой в нашем поселке, месяцами в нашем дома даже не было света. В такие времена смелость набирает в цене. Каждый день он занимался спортом и пока все сбегали в алкоголь он с ним воевал, тк он забрал его отца. К нему пришли родители и сказали, что хотят чтоб он воспитывал их детей. Давал пример силы и характера. Так, не имея образования, каждый день делая свое любимое дело, его нашла не просто работа. Его нашло призвание.

Прошло 30 лет. Из простого учителя в поселке Казахстана он стал одни из лучших учителей боевого самбо в России.

Пусть традиционное воспитание оставляет свои шрамы, и наши отношения сильно похожи на отношения Атрея и Кратоса, но его история стала для меня тем примером, когда вера, смелость и сила сама приводит к тебе счастье.
1576
📺 Управление памятью в iOS: Stack, Heap, RAM

Три года назад я написал статью про управлению памятью. Тогда некоторые каналы называли «одной из самых подробных статей», а некоторые компании давали ее как рекомендацию для подготовки. Тогда это можно было считать знания для мидл+/сеньор-, но знания не стоят на месте.

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

Я хочу переписать эти статьи и сделать расширенный материал. В этой статье мы изучим фундаментальные вещи связанные с управлением памятью.

В этой статье мы разберем:
🟣Что такое RAM и какие виды бывают
🟣Что такое стэк и куча
🟣Что такое Stack Pointer
🟣Сравним плюсы и минусы
🟣Какие данные хранятся в куче, а какие в стэке
🟣И многое другое

Подходящая статья, чтобы изучить глубже на выходных.

💎 Получить доступ можно на бусти и в телеграмм.

Я переделываю большой блок про память для книги. Хочется ультимативно подойди к этому вопросу. Изучить основы операционных систем, погрузиться в дебри Computer Sience, прочитать все пропозалы, посмотреть все WWDC, залезть в каждый исходник и комментарий. Для книги ожидается от 40 до 100 страниц только про память. Поэтому мой контент чуть замедлил скорость, но повысил качество.
Please open Telegram to view this post
VIEW IN TELEGRAM
20
🧠 Набор задач для закрепления популярных техник для массивов и строк

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

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

🟣 Не бегите сразу писать решение. Написание кода должно быть в последнюю очередь.
🟣Проговорите вслух условие. Много раз. Часто много проблем банально, что неправильно поняли задачу
🟣Подумайте о краевых кейсах. Обычно, во многих задачах специально спрятаны сценарии, которые должен найти кандидат
🟣Подумайте о решениях. Расскажите о них вслух. Оцените их понятность. Сгенерируйте в голове несколько и выберите лучшее
🟣Не смотрите сразу на ошибку и тест кейс, который выдает литкод. Попробуйте сами понять где могли ошибиться.
🟣Помните, ваша задача не просто сгененировать решение, копируя ответы. Вы качаете problem solving skills

Two pointers:
557. Reverse Words in a String III
917. Reverse Only Letters
2540. Minimum Common Value
283. Move Zeroes
2000. Reverse Prefix of Word

Sliding window:
209. Minimum Size Subarray Sum
1456. Maximum Number of Vowels in a Substring of Given Length
1208. Get Equal Substrings Within Budget

Prefix sum
1732. Find the Highest Altitude
724. Find Pivot Index
303. Range Sum Query - Immutable
Please open Telegram to view this post
VIEW IN TELEGRAM
10
This media is not supported in your browser
VIEW IN TELEGRAM
Про System Design

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

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

В этом видосе очень емко и хорошо объясняется суть систем дизайна:
- нас оценивают не только по техничке, но и софты
- коммуникация — важна
- разраб не только решает проблемы своей платформы, но и смотрит на соседние
- у всех свои стандарты и "зазубрить систем дизайн" не получится
- работая только в стартапах чаще не видишь всех подводных камней крупной корпоративной разработки
10
Гайд по интервью в FAANG

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


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

🟣 Большинство кандидатов провалило 4-5 собеседований, прежде чем получить оффер.
🟣 Перенести собеседование, если вы не готовы - это нормальная практика. Для компании дата имеет не такое важное значение, как имеет для кандидата.
🟣 Facebook - наименее хаотична, так как уделяет много времени обучению собеседующих, дает меньше свободы в выборе задачек, все стандартизировано и регламентировано. Apple и Netflix имеют больше непредсказуемости, на успех влияет не только сам кандидат, но и какой собеседующий попадется, какие задачки выберет и какие вопросы задаст.
🟣 На встрече с HR не стоит озвучивать желаемую зарплату рекрутеру, также где параллельно собеседуютесь и на каких стадиях параллельные интервью.
Please open Telegram to view this post
VIEW IN TELEGRAM
92