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

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

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
🧬 Запах кода: цикломатическая сложность

В одном из прошлых постов про запахи мы поговорили про необоснованную сложность. Сейчас поговорим об её производной.

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

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

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

Интересные ресурсы:
🟣Cyclomatic Complexity: A Complete Guide
🟣Cyclomatic Complexity Calculator
🟣Metric definitions
🟣Cyclomatic Complexity in Swift: Understanding How it Affect Your Code Quality
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
62
Программисты больше не нужны

Вчера в нашем чате сеньор разраб из гугла рассказывал как проводил собес сеньора из apple и как тот максимально провалил собес по SwiftUI и UIKit. Аккуратно под это событие вышел подкаст с принципал инженером из Apple, который дает комменты про Google.

Вкратце:
🟣гугл делает кучу ненужных продуктов, поэтому многие разрабы делают много ненужного
🟣все компании нанимают разрабов, которые умеют переучиваться.
🟣Не важно, на каких языках ты пишешь, но важно, что если не хочешь учить новые языки — ты никому не нужен
🟣Гугл не нанимает программистов. Гугл нанимает умников, которые умеют программировать.
🟣Нельзя выучить литкод. Задача на интервью через литкод понять как ты умеешь решать пазлы
🟣Гугл не нанимает узких специалистов
Please open Telegram to view this post
VIEW IN TELEGRAM
11
🧬 Swift Concurrency: Actors и классические задачи

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

В чате мы уже расширили формат "задач дня". Добавили на рефакторинг простых блоков кода с помощью Swift Concurrency. В будущем разберем больше задач и разных решений.

Ну а сейчас я потихоньку и тезисно формулирую статьи в базе знаний, но больше фокусируюсь на практике. В этой статье разобрал несколько примеров:
🟣отправка классического запроса в сеть
🟣совместимость кода на GCD и Swift Concurrency с помощью continuations

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

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

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

Это многомесячный план обучения, чтобы пройти подготовку в крупные FAANG компании. По заверениям автора это полноценная замена университета, но в отличии от инфоцыганщины он сразу предупреждает что нужно время, усидтчивость и терпение.
1172
🌿 Mock System Design Podcast: Модуляризация с Tuist

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

В этом выпуске ведущий iOS инженер рассказал как переводил проекты на туист и с чем столкнулся.

Детально пробежались по:
🟣Чем это помогло в проекте
🟣Почему именно туист
🟣Как улучшилась скорость сборки
🟣Как туист помогает найти циклические зависимости
🟣Сколько стоит внедрение туиста в готовый проект

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

🧬 Получить доступ к этому и другим видео можно тут
Please open Telegram to view this post
VIEW IN TELEGRAM
17
Как находить решения в алгоритмах

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

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

Я уже много раз говорил, что уже 7 из 10 инженеров могут дать рабочее решение. Где только рабочее не будет главным. Важно эффективное.

Условно, есть задача написать функцию, которая принимает массив отсортированных чисел и нужно отдать такой же отсортированный массив квадратов этих чисел. Все просто, можно пройти линейно и просто умножить каждое число на себя. Но это решение не подойдет. Потому что вы не подумали о краевом кейсе, когда могут быть отрицательные числа. Приходит в голову другое решение: умножить каждое число на себя и отсортировать. Но это решение тоже не очень, так как нужно уложиться в сложность O(n), а сортировака O(nlogn). И таких деталей множество. Нужно их все учесть желательно без подсказок.

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

Вот как раз такую статью я и нашел.
9
«Нас заменит не ИИ, а люди, кто эффективней им пользуется»

Эту фразу сказал директор Яндекса. Она емкая и предельно точная.

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

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

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

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

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

Стоит ли бояться ИИ? Нет. Стоит ли бояться людей? Да.

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

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

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

Развитие это долгий путь. Где нужно много сил, времени и дисциплины. У меня скоро день рождения и каждый год я основательно меняю свой роадмап развития, который веду еще с 2013 года. Ставлю годовые цели, выбираю ветки куда расти.

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

Собрал, на мой взгляд, самые полезные инструменты для составления ИПР:

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

🟣Шаблон ИПР от Qiwi. Еще один инструмент от руководителя групп разработки Авито с детальными советами. Как минимум я лично убедился в эффективности этого инструмента, где множество разрабов выросло в своих навыках.

🟣Книга "The Software Engineer's Guidebook". Очень подробный сборник универсальных советов для бигтехов и стартапов.

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

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

Гении обхода санкций. Тут прям целое искусство
23
🌄 Реализация Debounce: Swift Concurrency, Combine, GCD, Timer

Debounce — очень частая задача везде. От собеса, до реальной практики. Недавно помогал одной компании делать тестовое и в нем ожидал, что кандидат применит дебаунсер.

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

В этой статье я сделал реализацию на почти всех популярных вариациях:
🟣GCD
🟣Swift Concurrency
🟣NSTimer
🟣Combine

🧬 Получить доступ к статье можно через подписку в бусти или в боте
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Все чаще слышу от бизнеса, как многие разработчики отказываются принимать офферы из-за BDUI. Где объем задач на нем > 80%. Кого-то даже бизнес просит сделать рекламные доклады как крут BDUI.

Пришли бы вы на проект, где только бы пришлось работать с BDUI?
Anonymous Poll
15%
Да, мне ок
20%
Да, но за прайс выше рынка
6%
Да, был опыт, все ок
18%
Нет, опыта нет. Не хочу
7%
Нет, опыт был. Не понравился
10%
Нет, когда-нибудь потом
25%
Да кто ваш такой этот BDUI?
🤔🤔🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
84
Стартапы vs бигтехи

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

Я часто говорил своим менти, что не стоит романтизировать работу в какой-то компании. У нас даже был опыт с одним. Он самоучка, где мы долго готовилсь в ВК, получил оффер, но спустя пару месяцев он дико разочаровался в найме и ушел делать свои продукты. Где уже 3 года успешно занимается этим и даже собрал штат, где делает продукты на заказ.

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

В этой статье хорошо расписано что ожидать от разных компаний
11
This media is not supported in your browser
VIEW IN TELEGRAM
Rocket Sim

Купил подписку на инструмент, о котором слышу уже года два. Удобный дебагер, который помогает с частыми задачами:
🟣анализ трафика (если лень запускать снифферы)
🟣дизайн ревью верстки
🟣симуляция локации
🟣Быстрая настройка доступов апки
🟣Пуши и диплинки

Я пока еще не пользовался с целью улучшения перфоманса и полностью не прощупал инструмент. Поэтому можете поделиться в каких задачах он вам уже помог и какая функция для вас более полезная.
Please open Telegram to view this post
VIEW IN TELEGRAM
9
Всегда ходите на собеседования

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

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

Автор статьи рассказывает почему IC8 инженер из Меты посоветовал ему всегда быть "острым":

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

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

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

🟣Некоторые навыки, как эффективное решение алгоритмов, можно прокачать только усердной подготовкой. Чем больше времени между собесами, тем сложнее все вспоминать.

Ну а лучшие материалы для подготовки и чат с практикующими разрабами из всех компаний мира тут 😬
Please open Telegram to view this post
VIEW IN TELEGRAM
18
Не ходите часто по собеседованиям

В противовес предыдущему посту я хочу поделиться своими и чужими мыслями почему не стоит часто ходить на собесы. Основано на реальных данных.

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

Рынок вакансий все меньше, а значит и выбора.

🟣Вас забанят. Компании замораживают ваш статус на полгода/год и повторно пройти интервью нельзя.

Это особенно критично при внезапной потери работы.

🟣Рост внутри компании лучше. Выражу непопулярное мнение, но не всегда скачки по компаниям это хорошо. Чаще новое место может быть всего на 10-15% больше от текущего бюджета. Задачи, процесс и коллектив хуже. На долгосрочной дистанции это скорее проигрыш, а не победа. Прыгая туда сюда, в поисках себя, можно потерять драгоценное время. Начать разгоняться и быстро остановиться, заново собирая ресурсы и вникая в работу.

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

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

Навык прохождения собеседований никак не связан с постоянным и долгосрочным перформингом. Когда у тебя 6мес.-1 год опыта в компаниях, то скорее всего ты мало чему научился и быстро сменил место работы как только тебя раскусили
Please open Telegram to view this post
VIEW IN TELEGRAM
13
Премиальные услуги и товары в цифровой экономики

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

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

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

Вдохновение разрывает, особенно перед предстоящим микро-отпуском. Все это определено скажется на моем контенте и работе.

Поделитесь, какие услуги и товары вы считаете в категории премиум? Или довольны их высочайшим уровнем качества?
11
Инвестиции в долгосрочную или в погоне за инженерностью

Продолжаю читать книгу “the software engineer guidebook” и уже могу сказать, что она лучше предыдущих книг автора.

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

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

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

Я могу на практике подтвердить эти мысли.
Все чаще новые менти ищут ту самую «инженерность». Хотят заполнить внутреннюю пустоту и достигнуть той самой просветленности.

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

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

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

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

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

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

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

Те, кто стоит на месте, все дальше от требований. А спрос все растет.

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