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
🧬 Кодревью: запахи кода

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

Есть много рекомендаций и советов, которые помогают писать не просто рабочий код, но и чистый, легко читаемый и поддерживаемый.

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

В этой подборке я собрал примеры:
🟣Почему комментарии — зло
🟣В чем же проблема синглтонов
🟣Как дублирование ломает жизнь
🟣Методы борьбы с надуманной сложностью
🟣И многое другое

💎 Я напоминаю, что до конца летней акции осталось пару дней.
Please open Telegram to view this post
VIEW IN TELEGRAM
241
🌿 Систем дизайн в реальной жизни: Как предлагать свои изменения

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

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

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

Не нравится вам архитектура проекта, вынеси свои предъявы и предложи решения. Пора переходить на SwiftUI? Также создай обсуждение и собери аргументы почему именно он сделает жизнь лучше.

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

📺 Какие же инструменты помогают согласовать и синхронизировать изменения в реальной жизни?

Самый частый инструмент для сбора требований — это TDR.

Technical Design Review — это специальный процесс, который помогает эффективно проработать фичу, до того как ты начнешь ее кодить. Именно здесь и нужны все навыки системного дизайна.

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

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

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

Они собирают большой документ с описанной текущей проблемой, предлагаемыми решениями (чаще от 2 до 4), отмечают всех заинтересованных и получают зеленые или красные флаги для раскатки. Все в одном документе для сохранения истории и фокуса.

Только после этого можно приступать к реализациям.

Подробнее о tech design review можно почитать здесь:
- Tech Design Review в Авито
- Technical Design Review (TDR)
- Technical Design Reviews at Marfeel
Please open Telegram to view this post
VIEW IN TELEGRAM
17
Декодирование JSON в Swift медленнее, чем в Python?

Еще один забавный факт. Если у вас большие json’ы, то Swift не такой уж и хороший вариант для их декодирования.

Переходим на Котлин?
162
💎 Вышел мок-собес по систем дизайну

Мы провели первый мок-собес. Добровольцем выступил кандидат из альфы. Задача — спроектировать главный экран инстаграма.

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

Что ожидать еще:
🟣 мок собес по платформе от разработчика из Яндекса
🟣 мок собес по систем дизайну от архитектора из Альфы

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

Ищу желающих провести или пройти собес доступ в канал бесплатный. Участие также бесплатное.

💎 А для остальных для доступа к закрытому каналу
нужно иметь подписку от трех месяцев на мидл или быть подписаным на мидл+
Please open Telegram to view this post
VIEW IN TELEGRAM
163
Кодревью: запахи кода ч.2

Тема запахов кода мне понравилась и я решил сделать вторую часть.

Помню, как в первых проектах мне запрещали писать оператор switch/case. А использование SOLID было не всегда хорошим решением.

Здесь я решил разобрать такие вопросы как:
🟣 Почему наследование невсегда хорошо
🟣Как важна согласованность нэйминга
🟣Магические числа

💎 Сегодня последний день летней акции
Please open Telegram to view this post
VIEW IN TELEGRAM
162
Влияет ли стресс на результативность технического собеседования?

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

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

Я думал, что будет достаточно спокойно и без спешки решать задачи и всё будет окей. А если не прошел собес, то значит просто недостаточно много решал.

Но вот очередные исследования, где доказали как стресс и сжатые условия влияют на результат.

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

Охереть. Я догадывался, что стресс сильно дебафает, но не настолько.

🌋О чем это говорит?

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

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

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

Возможно, именно поэтому мы и сделали мок-собесы, чтобы каждый желающий мог попробовать себя, натренироваться и поделиться опытом с другими.
Please open Telegram to view this post
VIEW IN TELEGRAM
181
Forwarded from XOR
Мир, если бы отменили алгоритмы на собесах

@xor_journal
😁16
что выведется в консоль?
6
🌭 НОВОЕ МОК СОБЕСЕДОВАНИЕ

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

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

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

Подписывайтесь на его канал
@swifyway

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

🧬 Получить доступ к закрытым мок-собесам оформив подписки. В честь первого сентября действуют щедрые скидки на бусти и в боте
Please open Telegram to view this post
VIEW IN TELEGRAM
52
Все что говорят в интернете умножай на ноль

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

Как теперь верить этим громким заголовкам, что будущее не станет как прежде?

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

Десять лет назад мобильную индустрию должен был убить React Native. Потом Flutter. Потом Kotlin Multiplatform. Сейчас BDUI.

Но натив все равно не просто подает признаки жизни — он живее всех живых.

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

Много сказок у нас было в мобильной разработке:
- хайп по архитектурам, которые помогают писать юнит тесты. Которые в итоге никто и не пишет на клиентах.
- кроссплатформы
- BDUI
- тесты
- алгоритмы
- систем дизайн

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

Есть такое про Swift? Или сами сделаем?
143
В чате мы начали новую рубрику. Каждый день решаем какие-то задачи для iOS.

Вы можете предлагать свои в комментах или лс @lvbond

буду иногда делиться тут
6
Что выведется в консоль?
Anonymous Poll
32%
1
52%
2
0%
3
12%
Ошибка компиляции
1%
nil
2%
Другое
This media is not supported in your browser
VIEW IN TELEGRAM
Молодым до 30 посвящается

Остальным кто после соболезнуем
310
This media is not supported in your browser
VIEW IN TELEGRAM
Мы все пришли сюда, чтобы нормально покодить
2442
О слитых сборниках для собесов.

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

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

1. Все сливы — это записи собесов. Стоит ли говорить, что вопросы для джуна и сеньора чаще ничем не отличаются? Ожидается лишь качество ответа. Но в этих сливах был самый рофл — там просто аудиосообщения в комментах телеграма. Будто кто-то диктофоном записал свой собес без кода и тупо выложил свое эканье и бэканье. Ну или в 80% откровенно неправильную инфу.

2. Задачи решены неправильно. Обычно сливами и активной подготовкой к собесам занимаются либо стажеры, либо джуны. Уровень решения на задачи мы уже разбирали в чате. Большинству решений не дашь уровень мидл-, а чаще и джун-. До среднего мидла ответы нужно переписывать раз 10. Многие кейсы не утчены, условия недопоняты.

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

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

Ну а мы пришли сюда, чтобы нормально покодить и найти самые эффективные инструменты развития, не боясь трудностей и ошибок. Главное помнить, что нет никаких сеньорных вопросов, есть только сеньорные ответы и окружение.
14
Media is too big
VIEW IN TELEGRAM
Создаем площадки для взаимообогащения
1510