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
Корпоративная культура — новый товар или как эволюционировала печенька

Рынок растет, требования появляются у всех. Зумеры диктуют новые правила, но и работадатели требуют новых навыков.

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

На такой системе ценностей выстроены многие государственные компании. Платят много, но относятся как к говну.

С приходом нового поколения все меняется. ИТ-компании по-другому начинают относиться к ресурсам и методикам удержания. Кадров мало, только окладами не завлечешь. Печеньками в офисе не подкупишь, в них никто не ходит.

Поколения X, Y, Z. Каждая новая переменная дает разный результат.

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

Ты стал партнером, который также вносит вклад в общее дело, как и бизнес вносит в тебя.

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

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

Бабки, в этих условиях, будто для меня как сделка с дьяволом и продажа своих перспектив и творческой свободы, на добровольное рабство
13
🧬 Три закона сложности ПО

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

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

Вот три закона любого кода:

1. Хороший дизайн со временем становится плохим
2. В погоне за рынком сложность растет быстрее
3. У сложности нет предела
Please open Telegram to view this post
VIEW IN TELEGRAM
42
Чем отличается эконом такси от комфорта

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

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

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

Его политику и менталитет принимали директора разработки. Рефакторинг и комфорт в разработке — для нытиков и понторезов. Говоря ту же метафору с такси: скорость движения в эконом такси ничем не отличается от комфорта. О словах dev.exp они не знали.

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

С тех пор я понял, что и в разработке мы все должны заботиться о комфорте своих коллег.
36
Media is too big
VIEW IN TELEGRAM
Согласны?
345
❤️ Лучшие инструменты для EQ

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

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

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

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

🍷 Эффективные инструменты по нашему мнению:

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

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

2. Спорт и командные виды. Здоровое спортивное соперничество и характер — основа развития. Часто ты борешься не только с соперником, но и с самим собой. Со своими пороками, ленью и вредными привычками. Берешь над собой контроль и вырабатываешь сознательность.

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

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

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

Насчет последнего пункта можно подумать о ежемесячных созвонах в качестве терапии или развития нашего EQ. Обменяемся культурным опытом.
Please open Telegram to view this post
VIEW IN TELEGRAM
12
Почему в ИТ не все так идеально?

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

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

Уважаю творчество Леши, (хоть иногда не согласен по поводу кроссплатформ), его мотивация и желание не стоять на месте и помогать индустрии, а не паразитировать, — очень софтовая и зрелая, которая мотивирует. Без популистких и манипуляторских приемов.

Спасибо за упоминание, кстати ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
11
Как НЕ получить работу в 2024

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

У нас нет общей культуры отмены, но есть групповая реакция.

Видео интересное. Честное. Без иллюзий. Немного грубое, но так все работает.
6
🖥 Задачи по system design: Service vs Repository

У многих есть путаница в чем отличие сервиса и репозитория.

🟣 Репозиторий — это хранилища, которые обрабатывают данные, но с важной оговоркой. У каждого репозитория должна быть только одна бизнес-модель

🔘Сервис — это классы, которые могут работать с несколькими репозиториями. А также объединять их в более сложные бизнес-объекты.

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

Нужно расчитывать среднюю прибыль билета и еды

💎 Полный доступ к статье с кодом и объяснением можно получить через бусти или трибуту
Please open Telegram to view this post
VIEW IN TELEGRAM
92
💎 Алгоритмы в реальной жизни: Алгоритм Кадана

Следующий алгоритм полезен для самых меркантильных.

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

К вам пришла такая задача:

Дан массив целых чисел, найдите подмассив с наибольшей суммой и верните ее сумму. Решение по времени должно быть линейное O(n). Так как нужно быть быстрее конкурентов.


Пример

Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
Output: 6


🔴 Прежде чем перейти к решению остановитесь и подумайте о решении

Возможно, вам в голову пришли разные решения. Некоторые с решением за квадратное время. Где-то даже за линейное с помощью двух указателей.

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

Движемся по массиву слева направо и накапливаем в переменной s текущую частичную сумму. Если в какой-то момент s окажется отрицательной, то присвоим s = 0. Максимум из всех значений переменной s за время прохода по массиву и будет ответом на задачу.


Такое решение будет максимально лаконичным и быстрым.

Поздравляю! Вы самый эффективный и меркантильный человек!

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

Никто никогда не смотрел только на цифру опыта. Все те, кто говорит о такой проблеме — выдумали ее, чтобы оправдать свое существование.

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

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

Также оценивают и в ИТ. У тебя может быть слишком мало опыта, а иногда бывает слишком много.

🧬 Формула такая:
кол-во лет * сложность задач * кол-во задач = опыт

В этом уравнении важна каждая производная. Это формула зрелости.

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

Недостаточно просто залететь на 300к в сек на работу и ничего не делать. Плевать в потолок и забыть о прогрессе. Это подписание смертного приговора. Через год такого темпа на рынке ты не будешь стоить и 200к в год. Поэтому важно искать задачи или саморазвиваться. Повышать сложность и искать челенджи.

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

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

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

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

💎 Доступ по подписке через бусти или бот
Please open Telegram to view this post
VIEW IN TELEGRAM
5
This media is not supported in your browser
VIEW IN TELEGRAM
Функциональная разработка RIP
7
💅 Подборка крутых ресурсов по SwiftUI

В чате мы часто делимся интересными ссылками, докладами и файлами. Сейчас речь зашла про хорошие курсы. Я, не разобравшись в вопросе, хотел похвалить одного автора с громких названием "beginner to senior". Но Астемир легко контр-атаковал меня мощным ударом:

есть несколько альтернатив. Никто из них не маркетит свои курсы, которые значительно круче по содержанию чем у Азама как «beginner to senior”


- stephancodes.com
- cocoacasts.com
- editorscut.com - его книги круче всех курсов имхо Азама
- donnywals.com - так же как и его книги
- essentialdeveloper.com - у них вообще топ, даже бесплатные 60+ сессии на ютубе
- letsbuildthatapp.com - старые но качественные, есть по суи новые
- nsscreencast.com - подписка, охватывает все что есть в iOS и даже больше
- objc.io / Swift Talk - 405 сессий, вот тут SUI реально разбирают
- pointfree.co - все и так знают
- raywenderlich.com - у них микро-курсов тонна на все темы практически и +/- они deliver what they promise
- swiftyplace.com - она реально отлично SUI разбирает книга + курс, много продвинутых тем
- swiftystack.com - есть полезные моменты, но оверпрайснут
- на том же udemy есть "Deep Dive iOS 17 Swift SwiftUI Programming" - около 100 часов

💎 Не забудьте подписаться на канал Астемира
Please open Telegram to view this post
VIEW IN TELEGRAM
2344
💎 Задача по архитектурам: Модуль Избранного

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

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

Звучит так: Нужно спроектировать модуль избранного. Всё. Одно предложение, а работа на пару дней.

Эту секцию ведут всегда максимально свободно. Но оцениваю экспертность по общим качествам:

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

Обязательно рекомендую эту задачу, если понравились предыдущие:

🧬 Custom Notification Center
🖥 Service vs Repository

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

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

Мобильные системы усложняются: появляются офлайн режимы; устройства имеют больше мощности; кроссплатформы расширяют горизонты;

Для этого всего требуется системное мышление, которое поможет оценить множество узлов и связей, избежать ошибок.

Компании адаптируются и вводят новую секцию по оценки кандидатов. Вот подборка интересных секций от бигтехов:

📺Как проходит архитектурная секция в команду мобильной разработки Яндекс 360

🌿Как собеседовать мобильных инженеров? Системный дизайн спешит на помощь!

📺Проводим и проходим Mobile System Design-интервью

🧑‍🦰 А я напоминаю, что сделал форк известного фреймворка и адаптирую его под iOS. Скоро туда будут выложены некоторые задачи и решения из закрытого контента.
Please open Telegram to view this post
VIEW IN TELEGRAM
114
Forwarded from Polymorphic Blueprint (Aѕtɛmiɾ)
#podcast #crossplatform

Ideas on Why Cross-Platform Development Might Be Challenging

Тенденция к кросс-платформенной разработке продолжает развиваться определенными темпами. Автор подкаста постарался перечислить причины, по которым это может быть проблематично:

1️⃣ Performance Issues
• Кроссплатформенные технологии часто приводят к снижению производительности по сравнению с нативной разработкой. Это особенно заметно в сложных приложениях с значительной интеграцией аппаратного обеспечения.
• Хотя кроссплатформенные инструменты улучшаются и некоторые из них транслируются в нативный код, производительность все равно может не соответствовать уровню нативных приложений.
2️⃣Complexity & Maintenance
• Кроссплатформенная разработка часто требует обработки множества кандишенов, специфичных для каждой платформы (например, if iOS, if Android), что приводит к усложнению и увеличению размера кода. Конечно это также может быть решено, но теперь у вас на одну задачу больше. Пусть небольшую.
• Такие платформы обычно сильно зависят от сторонних библиотек, что приводит к возникновению новых проблем, включая риски безопасности и вопросы управления зависимостями.
• Зависимость от сторонних библиотек означает, что вы полагаетесь на их постоянное обновление и поддержку, что не всегда гарантировано (стоит вспомнить Xamarin).
3️⃣ Security Risks
• Внедрение стороннего кода увеличивает потенциальный риск возникновения уязвимостей в безопасности, особенно если эти библиотеки не подвергаются тщательной поддержке и обновлению..
4️⃣ Compatibility & Debugging
• Обеспечение совместимости на различных устройствах с разными аппаратными характеристиками может привести к сложным проблемам и необходимости использования обходных решений в коде.
• Дебаггинг кроссплатформенных приложений может быть более сложным по сравнению с нативными приложениями, где инструменты и среды более зрелые и интегрированные.
5️⃣ Engineering Concerns
• Управление отдельными нативными кодовыми базами может поначалу казаться более сложным, но часто приводит к более плавным циклам разработки и меньшему количеству проблем с интеграцией в долгосрочной перспективе.
• Высокий уровень абстракции приводит к появлению дополнительных слоев, что, в свою очередь, вносит элемент непредсказуемости. Да простые элементы делать легче, но будут ли они всегда таковыми по мере жизненного цикла продукта - вопрос открытый.
• Нативные платформы, как правило, легче поддерживать и они более надежные, так как зависимости напрямую управляются владельцами платформ.
6️⃣ False Promises of Cross-Platform Tools
• Просит единой кодовой базы для нескольких платформ часто не оправдывается на практике, приводит к неожиданным сложностям и утрате видимой простоты, которая изначально была обещана.
• Поддержка и координация кроссплатформенных проектов может превратиться в логистический кошмар, особенно по мере роста и усложнения приложения.
7️⃣ General Preference for Native Development
• Нативные приложения легче поддерживать благодаря лучшей интеграции с экосистемой платформы.
• Нативные приложения часто приводят к меньшему количеству неожиданностей во время разработки, что снижает количество непредвиденных проблем, способных нарушить циклы разработки и выпуска.

• Главный мотив заключается в том, чтобы привнести бОльшую осведомленность/осторожность кросс-платформы, но ни в коем случае не вносить дополнительную дозу карго-культизма в ту или иную сторону.
• Важно помнить, что кросс-платформа это такой же инструмент и пока небыло однозначно доказано, что он может хорошо работать во всех юзкейсах.
• Не обязательно быть на 100% согласным или не согласным - полезные идеи можно найти в неожиданных местах.


[Duration: 13:39 | Language: Eng]

🏛 Polymorphic Blueprint
Please open Telegram to view this post
VIEW IN TELEGRAM
1042
О "сломанной" индустрии

Многие из нас знают о Neetcode. Эта платформа является одной из моих вдохновителей.

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

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

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

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

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

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

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

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

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

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

Мы в сообществе уже почти 5 месяцев регулярно качаем эти навыки. Прорешав уже около 100 задач. Попытались разобрать частые задачи из Яндекса, Авито, ФААНГОВ и других компаний.

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

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

🟣Техники решения алгоритмов
🟣Задачи с массивами
🟣Задачами со строками

🧬Получить доступ ко всему складу можно по подписке через бусти или по скидке тут
Please open Telegram to view this post
VIEW IN TELEGRAM
13
💎 Вопросы на собеседованиях | Память | Junior ч. 3

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

В этом блоке мы затронем:
🟣Где хранятся статические свойства?
🟣Что такое инлайнинг?
🟣Как работают указатели с weak и unowned ссылками?
🟣Какие типы подвязаны под машинное слово?
🟣И еще 10 дополнительных вопросов

Также можно ознакомиться с другими частями:

🟣Вопросы для собесов на память | Junior | ч. 1
🟣Вопросы для собесов на память | Junior | ч. 2

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

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

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

Эксперимент такой, 76 рекрутеров просмотрели порядка 1000 резюме и сделали свои прогнозы. После этого кандидаты прошли mock-интервью на платформе. Полученные результаты сравнили между собой.

Первый вопрос, на который должны были ответить рекрутеры «Стоит ли собеседовать этого кандидата?». То есть при посмотре резюме, пропустит ли рекрутер кандидата дальше или нет? Прогноз совпадает с реальностью только в 55% случаев.

Второй вопрос «Какова вероятность, что кандидат пройдет техническое интервью?».
Те кандидаты, которым пророчили провал (0-5%), на деле успешно сдали в 47% случаев. Те кандидаты, которые по мнению рекрутеров должны были порвать собеседование (95-100%), прошли только в 64%.

Результаты:

🔘Это означает очевидное, что рекрутеры на самом деле не могут предсказать, пройдет ли кандидат или нет. Они оценивают резюме за несколько секунд.

🔘Рекрутеры ищут в резюме упоминания сильных компаний типа MAANG (+35% к успеху) или же представителей меньшинств (+21%).

🔘Если рекрутеры будут тратить 45 секунд на каждое резюме, вместе усредненных 30, то точность исхода вырастет на 34%.
Please open Telegram to view this post
VIEW IN TELEGRAM
10