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
Советы по прохождению алгоритмических собеседований

На моей практике около 300 проведенных собесов. Это не считая моков и работы с менти. Реальные собесы сильно отличаются от тестовых: совсем другой уровень напряжения и стресса; тайминги; требования и конкуренция.

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

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

Давайте же разберемся что же оценивают на алгоритмических собеседованиях:

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

2. Поиск корнер-кейсов. Никто не дает вам полных условий. В каждой задаче есть специально не озвученных 3-4 кейса, которые кандидат должен сам найти. Если кандидат ждет идеально описанных условий и требований, то это плохой кандидат

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

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

5. Не спеши отдавать код. Твоя задача не отдать первое попавшееся решение. Нужно еще перепроверить. Все мы ошибаемся

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

7. Будь вежлив и дружелюбен. Помни, что тебя оценивают не только по хардам, но и софтам. Много случаев, когда разработчик начинал психовать и токсичить, когда встречался со сложной задачей. Тебя оценивают не просто как генератора хороших идей, но и коллегу в команду.
Please open Telegram to view this post
VIEW IN TELEGRAM
995
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Push уведомления: как создать кастомный пуш с видео, гифкой или фото

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

Как-то на одном собеседовании в банк меня спросили: "Умеет ли по умолчанию пуш уведомление открывать гифку, фото или проигрывать видео?"

Как раз для этого вопроса я подготовил статью. Узнаем:
🟣Что такое Rich Notifications
🟣Как создавать и настраивать кастомные пуши
🟣Как тестировать пуши

Записал даже видео туториалы

🧬 Получить доступ к статье можно через подписку в бусти или в боте
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Погружаемся глубже в CoW

Наверное, лучшая статья про Copy-On-Write.

В ней разбираются не просто очередные вопросы про стандартную работу и для чего нужен isKnownUniquelyReferenced, а более глубже:
🟣покопается в исходниках
🟣объяснит работу языка и компилятора
🟣дойдем до SIL и Swift Runtime

Изучайте быстрее, а то скоро начнут на собесах спрашивать, если уже не начали.

Ну а мы чуть позже сделаем расширенный разбор CoW в ноушене
Please open Telegram to view this post
VIEW IN TELEGRAM
13
🧬 Вопросы для собеседований: Push-уведомления

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

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

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

В этом блоке из ~20 вопросов мы соберем основные тезисы из двух моих последний статей
🟣Какие виды пуш-уведомлений существуют
🟣Что такое APNS
🟣Какие библиотеки бывают и как это все тестировать
🟣Как создавать кастомные пуши
🟣А также многое другое

Статьи тут:
🧬 Push уведомления: APNS, виды пушей, хитрости и гайд по настройке
🖥 Push уведомления: как создать кастомный пуш с видео, гифкой или фото

🧬 Получить доступ к вопросам можно через подписку в бусти или в боте
Please open Telegram to view this post
VIEW IN TELEGRAM
33
Как прокачать себя на поведенческом интервью

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

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

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

На то, чтобы объяснить своему менеджеру, что ты именно тот сотрудник, у тебя есть час. В статье очень хорошо расписан фреймворк как делиться правильно своим опытом
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Идеальное приложение

На днях я вернулся в Spotify. Сейчас расскажу о самом лучшем приложении на текущий момент. Как такие приложения влюбляют в себя и вдохновляют.

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

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

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

Разберем причины:
1. Качество приложения. На своем стареньком 11 pro почти каждое приложение накаляет мое терпение. Любой мини лаг или баг портит лояльность и UX. Но только не со спотифай.

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

2. Контент. Ты то, что ты ешь, слушаешь и читаешь. Сидя в Яндекс музыке или ВК музыке я будто питался отходами на мусорке, представляя себя обделенным человеком и смотря в соседнее окно, где лучшие люди хавают еду, а я их объедки.

Именно поэтому ютуб никогда не заменят рутюбы и ВК видео. Выигрывают те, у кого лучше контент.

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

Только качественная кухня, только высшая лига, только лучший контент.

3. Дизайн и UX. Каждое мое действие предугадывается. Я делаю минимальное действие и получаю лучшую услугу. Приятную, понятную.

Даже зайдя в лифт ничего не виснет и не вылетает, заранее предзагружая мои следующие песни.

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

Пока ничего лучше спотифай я не встречал. Делитесь своими любимым приложениями
128
Гайд по собеседованию iOS инженера в Google

Вчера у нас в чате был ажиотаж. Пришел сеньор разработчик (L5) из гугла. Реальный сеньор, что прошел отбор 5 алгособесов, а не контрактник через упрощенные собесы за жили были.

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

Рассказал о многих интересных вещах. Точнее мы заваливали его вопросами, а он отбивался. Было интересно. Вкратце о важном:
🟣сколько и каких задач надо обрешаться на литкоде чтобы пройти собесы
🟣В гугле не запускают Xcode. Все работает удаленно через облачные сервисы и веб IDE, а исходники запрещенно держать локально. Сборки 5 минут и ipa сразу подгружается в симулятор
🟣Много BDUI. Чаще это свой метаязык, где в некоторых проектах бан на Swift, а уж тем более на SwiftUI
🟣Все разработчики пишут не только для iOS, но также и бэк, фронт и другое.
🟣Всё свое. Свой git, свои собственные программы, которые надо изучать с нуля
🟣Спросили какое было собеседование и какие материалы посоветует
🟣узнали сколько часов в день работает и есть ли переработки

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

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

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

Вступить в чат можно тут c минимальной подпиской.
Please open Telegram to view this post
VIEW IN TELEGRAM
18
Проверка гипотезы производительности Swift Concurrency vs GCD

Многие разработчики делают внутренние эксперименты технологий, прежде чем запихать ее в проект. Проверяют как же она покажет себя на реальном проекте, в текущем окружении. Этот процесс называется апробация или тесты проводятся через tech design review.

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

Нашел отличный материал, где какой-то студент делал крутейший дипломный проект, где сравнивал производительность Swift actors и GCD на примере классических проблем многопоточности.

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

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

Делали ли вы у себя разборы и тесты Swift Concurrency? Упрощало, ускоряло или наоборот разработку? Насколько был большой проект?
93
Media is too big
VIEW IN TELEGRAM
А об этой книге я уже писал и она есть в наших ресурсах

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

Объяснять почему тема перфоманса важна не стоит. В крупных компаниях всегда есть команды, которые следят за быстродействием приложения: как быстро он отрисовывает UI, насколько сильно загружается main thread, как быстро работают запросы в локальную бд и сеть и много другое.

Даже сейчас занимаюсь углубленным анализом перфоманса. Недавно столкнулся с неприятной проблемой фриза приложения. В таких проблемах часто бывает, что баг сложно найти и воспроизветси. У меня все ок, а у мажорных клиентов — фриз и приложение не отвечает. Особенно сложно, когда у тебя много миллионная аудитория и баг воспроизводится лишь у 1-2%. Эта проблема умножается в разы. Приходится придумывать сложные логеры и метрики, писать быстрый код и копать в кишки.

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

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

iOS App Performance Monitoring Best Practices. Базовая обзорная статья с верхнеуровневым объяснением про перфоманс

Подборка материалов iOS-Performance-Optimization. Хороший сборник материалов про оптимизацию: от управления размеров и памяти до практик крупных бигтехов

Check List: 25 Ways To Optimize iOS App Performance. 25 базовых советов как оптимизировать апку.

Ultimate application performance survival guide. Хорошая секция на WWDC, где даются советы по оптимизации.

Writing High-Performance Swift Code. Официальные советы по написанию высокопроизводительного кода
132
Пост (не) о подборке задач и решений сообщества

Грядут перемены. Сначала я писал этот пост как очередняру из-за причины, что закончился месяц и какие у нас новости. Но потом раскрыл свою черепную коробку и нашел другую связь.

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

Эта подборка специально для тех, кто подписан на сообщество, но не читает чат. Мы собираем ее для вас.

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

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

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

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

Недавно я опубликовывал видео «для чего нужны универы». В меня сильно вонзились слова о создании платформы одноидейных людей с +- одинаковым IQ, подсмотрев слова одного препода. Мощного коллективного разума и краудсорсинг платформы.

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

Вступить в чат и стать частью целого можно тут за символичный членский взнос.

Ну или бесплатно, если ты уже вкладывал в общую культуру своими статьями, докладами, опенсоурсами или кто-то о тебе слышал много хорошего :)

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

Меня как-то попросили его написать и я сделал нечто подобное как на первом скрине.

Пишите комменты что бы изменили и добавили

Часто вижу варианты как на второй картинке, но мне кажутся они избыточны

Покидайте свои примеры
9
Главные советы за 12 лет в Google

Интересный пост от инженера, который дает крутые советы после 12 лет в гугле. Они помогают не только в MAANG, но и задают правильное направление в жизни. Пост очень полезный и является настольной книгой и мантрой.

🟣1. Обучайтесь всегда.

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

🟣2. Пользователь всегда прав.

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

🟣3. Умейте сотрудничать.

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

🟣4. Просто начните. Лучше исправить, чем ничего не делать

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

🟣5. Вдохновляйте.

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

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

🟣6. Смотрите шире!

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

🟣7. Сосредоточьтесь на том, что вы можете контролировать

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

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

🟣8. Общайтесь доступным языком

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

🟣9. Стройте мосты, не бункеры

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

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

🟣10. Заботьтесь о себе

Чтобы показывать высокие результаты, помимо технических навыков, необходимо заботиться о себе. Находите время для отдыха, перезарядки и занятий своим хобби. Создайте вокруг себя окружение из людей, которые поддержат вас в трудные моменты: менторы, друзья, семья, коллеги.
Please open Telegram to view this post
VIEW IN TELEGRAM
106
Ну че, учавствуем в конкурсе?

прошлый раз мы взяли призовое

https://t.iss.one/iosmakesmehate/802
11
🧬 Вопросы на собеседованиях: Реактивное программирование | RxSwift ч. 1

Я хейтер RxSwift. Мне не нравится реактивное программирование, но от него никуда не убежишь. Сейчас я, слава всем богам, не юзаю её. Но ее не перестают спрашивать на многих проектах Сбера, БКС, Звука, БериЗаряд и многих других.

Если ты претендуешь на сеньора и выше, то должен знать тот стэк, который используется у них.

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

В этом сборнике я собрал вопросы:
🟣Почему RxSwift хорошо ложится на MVVM?
🟣Какие плюсы мы получаем в проекте от RxSwift?
🟣В чем разница горячих и холодных обсерверов?
🟣В чем главные концепции реактивного программирования?
🟣И еще 15 частых вопросов, которыми меня душили

🧬 Получить доступ к вопросам можно через подписку в бусти или в боте
Please open Telegram to view this post
VIEW IN TELEGRAM
11
Почему вам не нужен Kotlin Multiplatform

Видео, как защита от андроид-фанатов KMP. Причем от одного из самых авторитетных андроидеров и кмпшников. Есть еще вторая часть (но мы ее смотреть не будем). Там говорится чем же крут КМП.

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

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