Forwarded from AvitoTech
Инженерные практики: Live Site Review
Мы настроили алёрты для синтетического мониторинга, алёрты от мониторингов сервисов. Юзаем общий дашборд по пользовательским событиям в Grafana. Создали специальный «проблемный» канал в Mattermost. И всё равно что-то может пойти не так.
Чтобы не просто решить проблему, но и исключить рецидив, мы используем практику live site review или LSR. Прототип взяли у Google и редактировали процесс под себя.
В деталях рассказываем на гитхабе, а в карточках — самые важные поинты.
#playbook_avitotech
Мы настроили алёрты для синтетического мониторинга, алёрты от мониторингов сервисов. Юзаем общий дашборд по пользовательским событиям в Grafana. Создали специальный «проблемный» канал в Mattermost. И всё равно что-то может пойти не так.
Чтобы не просто решить проблему, но и исключить рецидив, мы используем практику live site review или LSR. Прототип взяли у Google и редактировали процесс под себя.
В деталях рассказываем на гитхабе, а в карточках — самые важные поинты.
#playbook_avitotech
👍4
Неплохой набор всяких расширений к Swift. Можно не тащить в проект, а просто почитать для насмотренности
https://github.com/vincent-pradeilles/swift-tips
https://github.com/vincent-pradeilles/swift-tips
GitHub
GitHub - vincent-pradeilles/swift-tips: A collection useful tips for the Swift language
A collection useful tips for the Swift language. Contribute to vincent-pradeilles/swift-tips development by creating an account on GitHub.
👍12❤🔥3
Domain Driven Design
Если кто-то скажет вам, что понимать бизнес разраб не должен — смело посылайте этого советника читать о DDD. Ведь нет ничего лучше.
Что это за монстр такой? Да все просто. При проектировании архитектуры — мы проектируем реальность. Все как работает в жизни 1 в 1. Все в выигрыше. И разрабы херней не занимаются, и манагеры счастливы.
DDD на практике
DDD и SwiftUI
DDD и подлодка
DDD и самостоятельное обучение
Если кто-то скажет вам, что понимать бизнес разраб не должен — смело посылайте этого советника читать о DDD. Ведь нет ничего лучше.
Что это за монстр такой? Да все просто. При проектировании архитектуры — мы проектируем реальность. Все как работает в жизни 1 в 1. Все в выигрыше. И разрабы херней не занимаются, и манагеры счастливы.
DDD на практике
DDD и SwiftUI
DDD и подлодка
DDD и самостоятельное обучение
Хабр
Domain Driven Design на практике
Эванс написал хорошую книжку с хорошими идеями. Но этим идеям не хватает методологической основы. Опытным разработчикам и архитекторам на интуитивном уровне понятно, что надо быть как можно ближе к...
👍6🍓4💋1
Идеальная работа для программиста на всю жизнь
Anonymous Poll
23%
Программировать. Быть отдаленным от бизнеса, управления и встреч
30%
Влиять на продукт. Внедряться на ранних этапах
23%
Техлидерство. Обучать людей технологиям
17%
Тимлидство. Не говорить конкретных вещей,а учить находить решения самому
9%
Уйти в продакт менеджмент без программирования
47%
Открыть свой стартап/компанию
23%
Уйти из ИТ
Так я получаю образование бизнес информатика и мне это нравится, то у меня уже куча материала как итшник может повлиять на бизнес. Вам интересно?
Anonymous Poll
67%
Да, было бы интересно разнообразить тех.скиллы
13%
Нет, давай только инфу о хардах
11%
Вообще все равно
16%
Да, но только поверхностно и немного
Плейлист для вопросов к собесам. Сам не смотрел. Кто посмотрит - отпишитесь
YouTube
iOS Interview Questions and Answers
Your one stop from getting your dream job as an iOS developer. All types of question and details discussion to make you interview ready
👍7
Проблемы айфона при херовом состоянии батареи
Плохая батарея может влиять на наши апки. И в этом режиме нужно следить за производительностью:
- длительное время запуска приложения
- низкая частота кадров при прокрутке
- Приложения, обновляющиеся в фоновом режиме, могут потребовать перезагрузки при запуске
❔ Нужно ли следить за работой апки в таком состоянии? Я думаю хороший разраб учтет это. Режимы экономии энергии может приводить к таким же проблем. А его могут не выключать вообще
Тест модов
Плохая батарея может влиять на наши апки. И в этом режиме нужно следить за производительностью:
- длительное время запуска приложения
- низкая частота кадров при прокрутке
- Приложения, обновляющиеся в фоновом режиме, могут потребовать перезагрузки при запуске
Тест модов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Советы по оптимизации энергии в iOS
Минимизировать чтение/запись данных
Частый доступ к памяти и файлам чаще вейкапит приложение из простоя. Например, слишком частые запросы в сеть, локальную бд, кэширование
Минимализация работы с таймером
Работа с таймерами дорогая тем, что ждет конца определенного интервала, а затем выполняет какое-то действие. Такое пробуждение системы энергозатратно. Не стоит использовать таймеры без необходимости
Приоритезация тасок
Тут все просто. Не стоит класть на главный поток что-то неважное, а лучше использовать ресурсы устройства по важности с помощью QoS.
Меньше работать в фоном потоке
Приложения, выполняющие ненужную фоновую деятельность, тратят энергию впустую. Например, не уведомляет систему о конце работы. Загружает ненужную инфу. Обновляет местоположение или подключается к устройствам
Минимизировать чтение/запись данных
Частый доступ к памяти и файлам чаще вейкапит приложение из простоя. Например, слишком частые запросы в сеть, локальную бд, кэширование
Минимализация работы с таймером
Работа с таймерами дорогая тем, что ждет конца определенного интервала, а затем выполняет какое-то действие. Такое пробуждение системы энергозатратно. Не стоит использовать таймеры без необходимости
Приоритезация тасок
Тут все просто. Не стоит класть на главный поток что-то неважное, а лучше использовать ресурсы устройства по важности с помощью QoS.
Меньше работать в фоном потоке
Приложения, выполняющие ненужную фоновую деятельность, тратят энергию впустую. Например, не уведомляет систему о конце работы. Загружает ненужную инфу. Обновляет местоположение или подключается к устройствам
👍6
Идеальный кодревью
За почти 10 лет опыта процесс кодревью в 90% компаний был неправильным. Часто на нем писали неважные комментарии. Смысл которых больше стилистический: "поменяй нэйминг", "убери пробел".
Кто-то находил в этом процессе пользу. Рассказывал, что с помощью него можно обучать людей. Я не считаю, что если кодревью даже на 40-50% — это механическая работа человека по комментариям линтера, правок кодстайла с названием романа на полке "Табуляции и пробелы", то в нем мало пользы. А чаще такие споры заканчиваются токсчичностью и психологическими травмами.
Проанализировав проблему я понял, что такой не один. Многие разрабы и тимлиды сталкивались с дороговизной и проблемностью самого процесса, если он был неправильно интергрирован. Научить проводить код-ревью — сложно. Да и требовать от этого процесса обучения — затея кмк мертворожденная.
Мне же больше нравятся практики парного программирования, разработка через тестирование и арх.ревью. Но попробуем представить какой же должен быть идеальный процесс?
1️⃣ Кодревью — это процесс проверки и оценки правильности измененного кода в соответствии заявленным целям других инженеров.
2️⃣ Одобрение одного из владельцев кода, подтверждающее, что код подходит для конкретной части кодовой базы. Владельцы действуют как "цензоры"
3️⃣ Проверка на удобочитаемость. Гарантия понятности изменений для других инженеров
4️⃣ Воспитание командной ответственности
5️⃣ Чекпоинт для понимания, что большое кол-во забракованных реквестов говорит о неправильных процессах
Но есть одно но. Гугл заявляет, что все вышеописанное работает в случае, если почти все, что можно было автоматизировать — автоматизировано. Т.е. условный CI провел кучу проверок на стайлгайд, тесты и тп. Гугл даже свой анализатор написали, для предварительной проверки механической работы.
Также есть множество рекомендаций как сделать его полезней:
1️⃣ Нужно быть вежливым и профессиональным. Ох, наверное тут самое трудное для меня. Как быть вежливым, когда кто-то учит тебя как писать правильно наш идеальный код? Пукан горит, а чел просто не шарит. Но есть множество советов как сделать свою обратную связь продуктивной. Один из них уважать решения автора и предлагать альтернативы. Говорят, нужно оставаться в строго профессиональных рамках.
2️⃣ Писать небольшие изменения. Тут все понятно. Не стоит тащить огромный реквест и ждать, что его проверят быстро и без замечаний.
3️⃣ Хорошие описания к изменениям. Описание изменений должно быть понятно для всех и начинаться с краткой формы, а заканчиваться (само)документацией изменений.
4️⃣ Привлекать к обзору минимальное число рецензентов. Чаще большое число ревьюеров приводит к спору между ними и ненужным комментариям. А если же привели, то желательно, чтобы они сосредоточились на разных аспектах.
Итого: кодревью может быть полезным, если у всех есть четкое понимание важности этого процесса. А гит становится доброжелательной и понимающей площадкой для коммуникации разрабов. Реально ли это на практике? Другой вопрос
- Обсуждения кодревью на подлодке тимлидов
- Инструмент кодревью от гугл
За почти 10 лет опыта процесс кодревью в 90% компаний был неправильным. Часто на нем писали неважные комментарии. Смысл которых больше стилистический: "поменяй нэйминг", "убери пробел".
Кто-то находил в этом процессе пользу. Рассказывал, что с помощью него можно обучать людей. Я не считаю, что если кодревью даже на 40-50% — это механическая работа человека по комментариям линтера, правок кодстайла с названием романа на полке "Табуляции и пробелы", то в нем мало пользы. А чаще такие споры заканчиваются токсчичностью и психологическими травмами.
Проанализировав проблему я понял, что такой не один. Многие разрабы и тимлиды сталкивались с дороговизной и проблемностью самого процесса, если он был неправильно интергрирован. Научить проводить код-ревью — сложно. Да и требовать от этого процесса обучения — затея кмк мертворожденная.
Мне же больше нравятся практики парного программирования, разработка через тестирование и арх.ревью. Но попробуем представить какой же должен быть идеальный процесс?
1️⃣ Кодревью — это процесс проверки и оценки правильности измененного кода в соответствии заявленным целям других инженеров.
2️⃣ Одобрение одного из владельцев кода, подтверждающее, что код подходит для конкретной части кодовой базы. Владельцы действуют как "цензоры"
3️⃣ Проверка на удобочитаемость. Гарантия понятности изменений для других инженеров
4️⃣ Воспитание командной ответственности
5️⃣ Чекпоинт для понимания, что большое кол-во забракованных реквестов говорит о неправильных процессах
Но есть одно но. Гугл заявляет, что все вышеописанное работает в случае, если почти все, что можно было автоматизировать — автоматизировано. Т.е. условный CI провел кучу проверок на стайлгайд, тесты и тп. Гугл даже свой анализатор написали, для предварительной проверки механической работы.
Также есть множество рекомендаций как сделать его полезней:
Итого: кодревью может быть полезным, если у всех есть четкое понимание важности этого процесса. А гит становится доброжелательной и понимающей площадкой для коммуникации разрабов. Реально ли это на практике? Другой вопрос
- Обсуждения кодревью на подлодке тимлидов
- Инструмент кодревью от гугл
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1🌚1
Полезно ли вам кодревью?
Anonymous Quiz
62%
Да, помогает развиваться
25%
Да, но скорее косметические правки
4%
Нет, чаще вредно
9%
Не уверен
😁8🌚4😍1🌭1
Осознанная меркантильность или рациональное бескорыстие
Можете скипать, если вам неинтересна философия.
iOS делает меня плакать. Такой заголовок этого канала. Я ко многому отношусь понимающе, еще к бОльшему стараюсь. Только вот есть одна вещь, которую не могу перебороть. Ненависть к инфоцыганам. Ненавижу, блэт, цыган.
Быть может, это потому, что я вырос в семье учителей. Где бескорыстие и желание делиться знаниями была настолько естественной, что любая попытка извратить и сделать из этого приравнивалась бизнес — приравнивалась к греху. Как бы я не учился смирению и сабру, но видеть, как люди предают свои принципы за рекламу и хайп — жопа горит ужасно. Еще больше, когда качество тех знаний завышено в разы.
Были ли искушения делать также? Конечно. Я родился в маленьком ауле Казахстана населением 800 человек. Хотел ли я денег? Да. Я всегда хотел выбраться и усердно старался научиться зарабатывать, чтобы не спиться в гаражах как мой лучший друг. Спустя 13 лет я, наверное, смог. И прошел путь пары десятков городов в Москву. Как мне кажется это хороший рывок. Но что дальше?
В нашем чате часто обсуждают вопрос денег. Важны ли они? Конечно. Делают ли они счастливым? Нет. Лишь временно и смотря как экологично для здоровья были заработаны. Стоит ли мне пойти за трендами? Запустить подкаст? Создать прайд львов и учить их как приукрасить опыт? Нет. Такие пути уже были пройдены и на долгой дистанции показали себя неэффективно.
Последнии годы я сторонник философии "Потока". Важен не результат, а процесс. Если ты улучшаешь его, то результаты становятся только лучше. Долгий марафон, а не быстрый спринт. Если ты бежишь за деньгами, то жди несчастья, обессиленности и кучу межпозвоночных грыж. Злость от невозможности больше ждать заслуженной награды. А те деньги, которые придут, их не хватит на лечение побочных эффектов.
Пытаюсь ли я казаться в своих глазах лучше, чем я есть? Возможно. Но для меня же лучший способ быть счастливым деньгам — упорный труд и честный бой. Такой философии стараюсь придерживаться везде.
Эти принципы будут лежать в любом продукте и любой работе. Скажу банальной фразой, но она отлично матчится со мной. Лучше быть, а не казаться.
Можете скипать, если вам неинтересна философия.
iOS делает меня плакать. Такой заголовок этого канала. Я ко многому отношусь понимающе, еще к бОльшему стараюсь. Только вот есть одна вещь, которую не могу перебороть. Ненависть к инфоцыганам. Ненавижу, блэт, цыган.
Быть может, это потому, что я вырос в семье учителей. Где бескорыстие и желание делиться знаниями была настолько естественной, что любая попытка извратить и сделать из этого приравнивалась бизнес — приравнивалась к греху. Как бы я не учился смирению и сабру, но видеть, как люди предают свои принципы за рекламу и хайп — жопа горит ужасно. Еще больше, когда качество тех знаний завышено в разы.
Были ли искушения делать также? Конечно. Я родился в маленьком ауле Казахстана населением 800 человек. Хотел ли я денег? Да. Я всегда хотел выбраться и усердно старался научиться зарабатывать, чтобы не спиться в гаражах как мой лучший друг. Спустя 13 лет я, наверное, смог. И прошел путь пары десятков городов в Москву. Как мне кажется это хороший рывок. Но что дальше?
В нашем чате часто обсуждают вопрос денег. Важны ли они? Конечно. Делают ли они счастливым? Нет. Лишь временно и смотря как экологично для здоровья были заработаны. Стоит ли мне пойти за трендами? Запустить подкаст? Создать прайд львов и учить их как приукрасить опыт? Нет. Такие пути уже были пройдены и на долгой дистанции показали себя неэффективно.
Последнии годы я сторонник философии "Потока". Важен не результат, а процесс. Если ты улучшаешь его, то результаты становятся только лучше. Долгий марафон, а не быстрый спринт. Если ты бежишь за деньгами, то жди несчастья, обессиленности и кучу межпозвоночных грыж. Злость от невозможности больше ждать заслуженной награды. А те деньги, которые придут, их не хватит на лечение побочных эффектов.
Пытаюсь ли я казаться в своих глазах лучше, чем я есть? Возможно. Но для меня же лучший способ быть счастливым деньгам — упорный труд и честный бой. Такой философии стараюсь придерживаться везде.
Эти принципы будут лежать в любом продукте и любой работе. Скажу банальной фразой, но она отлично матчится со мной. Лучше быть, а не казаться.
❤22👍8🔥2🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Рубрика «нихерасебе че нашел»
По стопам деливири и их змейки нашел в Яндексе лавке прикол с бегущим ко мне курьерчиком.
Оцените идею по Фаренгейту. Когда апки доставки стали быть игровыми приставками?
По стопам деливири и их змейки нашел в Яндексе лавке прикол с бегущим ко мне курьерчиком.
Оцените идею по Фаренгейту. Когда апки доставки стали быть игровыми приставками?
🔥1
Полный гайд по прохождению system design'а
Монументальный гайд для чего нужно проектирование и как проходить его. Тут больше для бэкенд разрабов, но просто ощутить масштаб различий клиентских и серверных.
- Горизонтальное и вертикальное масштабирование
- Сервера, хранилища, прокси, кэширование
- Очереди
- Балансировщики, DNS
- Файловые системы
- Базы данных
- Распределенные системы
- Машинное обучение
- Облачные технологии
Ощутим себя никчемными красителями кнопок
- Набор инструментов для современного проектирования
Монументальный гайд для чего нужно проектирование и как проходить его. Тут больше для бэкенд разрабов, но просто ощутить масштаб различий клиентских и серверных.
- Горизонтальное и вертикальное масштабирование
- Сервера, хранилища, прокси, кэширование
- Очереди
- Балансировщики, DNS
- Файловые системы
- Базы данных
- Распределенные системы
- Машинное обучение
- Облачные технологии
Ощутим себя никчемными красителями кнопок
- Набор инструментов для современного проектирования
Educative
The Essential Guide to System Design in 2025
An ode to the theory behind every groundbreaking piece of tech — and a comprehensive overview of one ex-Meta engineer's first true love.
😢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
🔥11⚡4🐳2❤1