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

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

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
Forwarded from AvitoTech
Инженерные практики: Live Site Review

Мы настроили алёрты для синтетического мониторинга, алёрты от мониторингов сервисов. Юзаем общий дашборд по пользовательским событиям в Grafana. Создали специальный «проблемный» канал в Mattermost. И всё равно что-то может пойти не так.

Чтобы не просто решить проблему, но и исключить рецидив, мы используем практику live site review или LSR. Прототип взяли у Google и редактировали процесс под себя.

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

#playbook_avitotech
👍4
Неплохой набор всяких расширений к Swift. Можно не тащить в проект, а просто почитать для насмотренности

https://github.com/vincent-pradeilles/swift-tips
👍12❤‍🔥3
Domain Driven Design

Если кто-то скажет вам, что понимать бизнес разраб не должен — смело посылайте этого советника читать о DDD. Ведь нет ничего лучше.

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

DDD на практике
DDD и SwiftUI
DDD и подлодка
DDD и самостоятельное обучение
👍6🍓4💋1
Прикольная фича у деливири. Иногда забываешь, что заходишь с включенным впном. А тут тебя носом тыкают
3
Так я получаю образование бизнес информатика и мне это нравится, то у меня уже куча материала как итшник может повлиять на бизнес. Вам интересно?
Anonymous Poll
67%
Да, было бы интересно разнообразить тех.скиллы
13%
Нет, давай только инфу о хардах
11%
Вообще все равно
16%
Да, но только поверхностно и немного
Проблемы айфона при херовом состоянии батареи

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

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

Тест модов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Советы по оптимизации энергии в iOS

Минимизировать чтение/запись данных

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

Минимализация работы с таймером

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

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

Меньше работать в фоном потоке
Приложения, выполняющие ненужную фоновую деятельность, тратят энергию впустую. Например, не уведомляет систему о конце работы. Загружает ненужную инфу. Обновляет местоположение или подключается к устройствам
👍6
Идеальный кодревью

За почти 10 лет опыта процесс кодревью в 90% компаний был неправильным. Часто на нем писали неважные комментарии. Смысл которых больше стилистический: "поменяй нэйминг", "убери пробел".

Кто-то находил в этом процессе пользу. Рассказывал, что с помощью него можно обучать людей. Я не считаю, что если кодревью даже на 40-50% — это механическая работа человека по комментариям линтера, правок кодстайла с названием романа на полке "Табуляции и пробелы", то в нем мало пользы. А чаще такие споры заканчиваются токсчичностью и психологическими травмами.

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

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

1️⃣ Кодревью — это процесс проверки и оценки правильности измененного кода в соответствии заявленным целям других инженеров.

2️⃣ Одобрение одного из владельцев кода, подтверждающее, что код подходит для конкретной части кодовой базы. Владельцы действуют как "цензоры"

3️⃣ Проверка на удобочитаемость. Гарантия понятности изменений для других инженеров

4️⃣ Воспитание командной ответственности

5️⃣ Чекпоинт для понимания, что большое кол-во забракованных реквестов говорит о неправильных процессах

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

Также есть множество рекомендаций как сделать его полезней:

1️⃣ Нужно быть вежливым и профессиональным. Ох, наверное тут самое трудное для меня. Как быть вежливым, когда кто-то учит тебя как писать правильно наш идеальный код? Пукан горит, а чел просто не шарит. Но есть множество советов как сделать свою обратную связь продуктивной. Один из них уважать решения автора и предлагать альтернативы. Говорят, нужно оставаться в строго профессиональных рамках.

2️⃣ Писать небольшие изменения. Тут все понятно. Не стоит тащить огромный реквест и ждать, что его проверят быстро и без замечаний.

3️⃣ Хорошие описания к изменениям. Описание изменений должно быть понятно для всех и начинаться с краткой формы, а заканчиваться (само)документацией изменений.

4️⃣ Привлекать к обзору минимальное число рецензентов. Чаще большое число ревьюеров приводит к спору между ними и ненужным комментариям. А если же привели, то желательно, чтобы они сосредоточились на разных аспектах.

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

- Обсуждения кодревью на подлодке тимлидов
- Инструмент кодревью от гугл
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1🌚1
Осознанная меркантильность или рациональное бескорыстие

Можете скипать, если вам неинтересна философия.

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

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

Были ли искушения делать также? Конечно. Я родился в маленьком ауле Казахстана населением 800 человек. Хотел ли я денег? Да. Я всегда хотел выбраться и усердно старался научиться зарабатывать, чтобы не спиться в гаражах как мой лучший друг. Спустя 13 лет я, наверное, смог. И прошел путь пары десятков городов в Москву. Как мне кажется это хороший рывок. Но что дальше?

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

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

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

Эти принципы будут лежать в любом продукте и любой работе. Скажу банальной фразой, но она отлично матчится со мной. Лучше быть, а не казаться.
22👍8🔥2🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Рубрика «нихерасебе че нашел»

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

Оцените идею по Фаренгейту. Когда апки доставки стали быть игровыми приставками?
🔥1
Полный гайд по прохождению system design'а

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

- Горизонтальное и вертикальное масштабирование
- Сервера, хранилища, прокси, кэширование
- Очереди
- Балансировщики, DNS
- Файловые системы
- Базы данных
- Распределенные системы
- Машинное обучение
- Облачные технологии

Ощутим себя никчемными красителями кнопок

- Набор инструментов для современного проектирования
😢4👍2
🔥 Что такое ассерты и зачем их использовать?

На одном собесе меня ввел в ступор вопрос: "А как бы ты сделал свой force unwrap?". Я начал паниковать и потеть. Тогда я еще не знал, что вопрос был супер изивым и на самом деле меня спрашивали про assert'ы

Так для чего же они нужны? Да как раз сломать приложение. Если вы думаете, что любая ошибка в программировании приводит к крашу, то это не так. Это очень везет, что мы легко понимаем где и почему у нас пошло не так. Об этом я писал в посте про fail safety и его вреде

На деле же мы сами можем преждевременно завершить работу нашего приложения если:
- неправильно используем API или SDK
- неверный результат
- неожиданное поведение

Ассерты могут быть 5 видов. Подробнее о них в слайдах.

👌 Зная их мы можем сделать работу нашего приложения более предсказуемым и безопасным
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥114🐳21
Про выгорание

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

Данные советы не являются рекомендацией.

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

С 10 лет я ушел на казахскую борьбу. Это было навязанное решение моим отцом, который был и тренером. Он много отдал спорту и его кумирами были Ван Дам и Шварцнегер. Даже сейчас он выглядит в свои 51 моложе чем я. Но обратим особое внимание на навязанность. Пару лет у меня ничего не получалось. Меня все выигрывали, а любая моя маленькая победа была семейным праздником. Я с неохотой ходил в зал, халтурил, когда он отворачивался. В 10 лет я будто приходил на ненавистную работу, на которой мне нужно просто отсидеться.

Все изменилось в 16. Я пришел на боевое самбо. Этот вид единоборств был богаче и разнообразнее. Тут у меня появилось желание и я начал выигрывать сложные бои в столичных соревнованиях (моя любимая история про супер приз — ложки и кружки), а позже, в 21 год, стал призером одного из престижных республиканских соревнований, где было разрешено почти все: и в пах бить, и с головы, и с логтей. Это были 5 сложных боев в моей жизни, но помимо увлекательной истории Вам и моим внукам, с привкусом крови на губах я получил понимание как достается победа.

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

Мои правила:
- Успех — это марафон. Под успехом можно вкладывать любой смысл: получать регулярно зп, карьерный рост
- Любой процесс базируется на внутреннем желании. Его нужно сохранять и не убивать износом организма
- Здоровый образ жизни. Да да. Я сам могу выпить и закурить, но делаю это крайне редко. Не чаще 1 раза в 1-2 месяца.
- Здоровый сон.
- Активный образ жизни. Баланс требует контраста. Если мой труд — сидячий образ жизни, то ментально и физически я могу отдохнуть только работая телом.
- Путешествия.
- Книги
- Уметь правильно отдыхать. Звучит как успешный успех, но после 25 уже примерно начинаешь понимать что это такое, а к 30 еще лучше. Говорят к ближе 40 вообще гуру становишься

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

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

Но я не доктор Хаус и все советы работают только со мной.
🔥16👍3😁1