iOS Makes Me Hate
3.94K 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
❤️ Подборка ресурсов для эффективного кодревью

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

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

Попробовал собрать хорошие правила практик для эффективного код ревью:

🌄 Официальное руководство по стилю Kodeco Swift. Бывший сайт Рей Вандерлея собрал неплохие практики по многим частым вопросам.

🌄 Swift API design guideline. Нельзя не упомянуть всеми известную доку от разрабов нашего любимого языка.

🌄 Coding Guidelines for Cocoa. Еще один сборник рекомендаций от разрабов инфры Cocoa.

🌄 The Standard of Code Review in Google. Принципы и правила кодревью в гугле. Материал не о том, как писать код, а скорее общие стандарты по эффективному код ревью

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

Прежде чем стандартизировать процесс производства кода, мне кажется, нужно выявить общий компромисс
Please open Telegram to view this post
VIEW IN TELEGRAM
77
Что ждёт мобильную разработку в 2024 году

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

Вкратце, все будет хорошо. Главное не останавливаться и не отчаиваться

Ну и кстати, кто не знал, я автор контента на Яндекс практикуме
155
💎 MVC — это не твоя проблема

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

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

Для чего же это полезно? К спорам с коллегами в чате кто как правильно понял MVC от дядюшки Боба. А также чтобы не пугаться огромных модулей, которые используют паттерны MVC. Возможно, в них есть свои принципы и методики.
Please open Telegram to view this post
VIEW IN TELEGRAM
53
❤️ Форма любви

У Эриха Фромма есть хорошее определение любви:

Любовь — это активная заинтересованность в жизни и развитии того, что мы любим. Где нет активной заинтересованности, там нет любви


Вся философия моего развития — находить вещи, с которыми происходит химия.

Наша жизнь слишком коротка. Не деньги и вещи дают свободу. Это сложная и тонкая материя. Все материальное отягощает и обесценивает. Усложняет и нагружает.

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

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

Надеюсь, что мы все дойдем до алтаря любви с близкими и делом жизни.
Please open Telegram to view this post
VIEW IN TELEGRAM
305
🆙Обновление ноушена за неделю

🟣 Добавлен блок “Код ревью”. В нем будут материалы и статьи про качественный код
🟣Добавлен блок “Архитектура”. Все про архитектурные и дизайн паттерны
🟡Добавлена статья о MVC.
🟣Добален блок с алгоритмами в ноушене. Здесь будет все про алгосы
🟡Добавлена статья “Как оценивать сложность алгоритмов ч.1”.
🟣Добавлена статья “Процессы, Потоки, Очереди и зачем нужен Grand Central Dispatch”
🟣Добавлена статья “Динамическая высота ячейки в коллекции: Frame Based”

Впереди еще материалы с вопросами собесов для джунов про UIKit и язык Swift.

Также чуть буду менять структуру для упрощенной навигации.

получить доступ можно тут
Please open Telegram to view this post
VIEW IN TELEGRAM
194
🧬 Как разрабатывать хороший API и почему это важно

Снова контент про стандарты качества. На этот раз древний материал, откопанный в забытой цивилизации. Но это настоящий клад по базовым советам написания кода

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

Скоро мы подробнее изучим правила написания читабельного и хорошего кода. Внутри чата мы уже активно ревьюим друг друга.
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Неудавшийся прогноз тысячетелетия
164
🌺 Вопросы на собеседованиях: UIKit | Junior

Одна
из важных и ключевых секций любого собеса

Начал добавлять вопросы к собесам на UIKit:
- Теория
- Практика
- Ресурсы
- Квизы

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

Весь контент с вопросами по памяти и многопоточки тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
15
Почему увольняют людей?

Пост немного безжалостный, но честный.

Вы удивитесь. Одна из главных причин увольнения людей это не отсутствие результата. Это недостаточный результат.

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

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

Почему не получится просто придти на работу и делать минимум, который устраивает всех?

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

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

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

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

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

Здесь мы не строим ложных надежд и веру в быстрые и легкие пути.
2554
Какой цвет будет у вью? Какой цвет будет в дебаг иерархии?

Почему?
💎 Вопросы на собеседованиях: Swift | Junior

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

Скорее всего, это будет самый объемный блок.

Начал добавлять вопросы к собесам на Swift:
- Теория
- Практика
- Ресурсы
- Квизы

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

Весь контент с вопросами по памяти, UIKit и многопоточки тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
18
Добавление метода GroupBy в Sequence

Одной из самой практичной задачей, которую я встречал на работе и на собесах — это группировка элементов по ключам.

Поэтому вот подборка всяких реализаций и вопросов:
- Group elements of an array by some property
- Swift’s Dictionary grouping and how underrated it is

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

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

Задача была прикольная, потому что:
1. Проявлял разные подходы и инструменты продуктовой аналитики. Собирал какие плюсы и минусы есть у сканеров. Как вообще они влияют на бизнес метрики
2. Пытался запроектировать универсальный модуль сканера, который бы использовался в разных продуктовых флоу.

Мне все больше начали нравятся продуктовые задачи, тк в них есть много понимания «а точно ли это нужно кому-то»
132
21 пара по сложности алгоритмам

Нашел какой-то дикий по объему материал про сложности алгоритмов. 21 пара по полтора часа. Нет ни одного похожего по объемам и после просмотра этих лекций можно стать экспертом по алгосам. Теориком*

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

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

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

Доступ все там же
14
какой порядок принтов будет?

ответ разобрали уже в чате