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
Что такое 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
Философия Самураев в ИТ

Я очень долго увлекался восточной боевой философией. Начиная с 10 лет и до 16 занимался дзюдо. Потом увлекся книгами и культурой. Даже сейчас считаю, что ближе всего по менталитету мне Япония.

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

Все мои любимые книги на 3/4 состоят из книг самураев. Будь это "Книга Пяти Колец" или "Самурай без меча".

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

В этой же статье автор делится советами как направить фундаментальные советы военных стратегов в современном ит
Please open Telegram to view this post
VIEW IN TELEGRAM
84
Три совета как сделать значимый импакт

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

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

Автор дает три совета как всегда выдавать хороший результат:

🟣 Стремитесь к росту любой ценой

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

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

🔴 Отражайте свой вклад в метриках

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

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

🔘 Говорите открыто о своих победах

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

Как это можно сделать:
- Пишите обновления по проекту для всех заинтересованных коллег и команд в компании.
- Делитесь успехами и вызовами с вашим руководителем — это помогает показать прогресс и получить поддержку.
- Проводите презентации для команды или всей компании, где рассказывайте о ваших проектах, достижениях и новых фичах.
- Будьте активны в рабочих чатах, обсуждениях и документации. Пусть создается ощущение, что вы находитесь везде, где что-то происходит.
Please open Telegram to view this post
VIEW IN TELEGRAM
9
This media is not supported in your browser
VIEW IN TELEGRAM
Задача отрефакторить код. Тестирую интеграцию чатгпт с Xcode. Ну слушайте, не идеально, но все же очень хорошо.

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

Плюс многие компании говорят, что начали юзать ИИ для написания тестов.
117