Годные авторские каналы
Сегодня хочу поделиться с вами каналами, которые сам читаю с завидной регулярностью, чтобы быть в курсе происходящего вокруг.
– Сиолошная: отсюда узнаю подробности о событиях в мире ml
– Системный сдвиг: тема системного анализа и любого другого анализа близка к разработке, и здесь черпаю информацию о происходящем в мире анализа
– Инжиниринг Данных: тут все просто, автор рассказывает за инжиниринг данных
– addmeto: узнаю о действительно значимых и интересных событиях в мире технологий
– Книжный куб: интересные разборы книг и white papers, беру на заметку, что стоит прочитать
– Чем докажешь и Кнопочка: в области ui/ux существует много интересных исследований, а ещё иногда нужно поставить на место самоуверенного дизайнера
И совсем немного около развлекательного:
– Эргономика жилья: я достаточно сильно заморачиваюсь по комфорту и удобству быта, а этот канал как раз посвящен эргономике вокруг нас
– Ряды Фурье: ребята простым языком раскрывают сложные научные и технологические темы. Позабавила их реклама на Таймс-сквер в Нью-Йорке
– Игорь Кузнецов о темных паттернах: отсюда узнаю, какие дикости творят продакты в своих продуктах, дабы добиться желаемого результата и подкрутить нужные продуктовые метрики
Ну, а как организовать этот бесконечный поток информации в телеграме у нас был отдельный пост.
Если ведёте классный авторский канал – делитесь в комментах.
Сегодня хочу поделиться с вами каналами, которые сам читаю с завидной регулярностью, чтобы быть в курсе происходящего вокруг.
– Сиолошная: отсюда узнаю подробности о событиях в мире ml
– Системный сдвиг: тема системного анализа и любого другого анализа близка к разработке, и здесь черпаю информацию о происходящем в мире анализа
– Инжиниринг Данных: тут все просто, автор рассказывает за инжиниринг данных
– addmeto: узнаю о действительно значимых и интересных событиях в мире технологий
– Книжный куб: интересные разборы книг и white papers, беру на заметку, что стоит прочитать
– Чем докажешь и Кнопочка: в области ui/ux существует много интересных исследований, а ещё иногда нужно поставить на место самоуверенного дизайнера
И совсем немного около развлекательного:
– Эргономика жилья: я достаточно сильно заморачиваюсь по комфорту и удобству быта, а этот канал как раз посвящен эргономике вокруг нас
– Ряды Фурье: ребята простым языком раскрывают сложные научные и технологические темы. Позабавила их реклама на Таймс-сквер в Нью-Йорке
– Игорь Кузнецов о темных паттернах: отсюда узнаю, какие дикости творят продакты в своих продуктах, дабы добиться желаемого результата и подкрутить нужные продуктовые метрики
Ну, а как организовать этот бесконечный поток информации в телеграме у нас был отдельный пост.
Если ведёте классный авторский канал – делитесь в комментах.
Обзор способов защиты контейнеров Docker
Докеры мы любим, а думать о безопасности докеров — не всегда.
Неплохая обзорная статья о том, что вы можете сделать для повышения безопасности, чтобы не попасть впросак :)
Автор начинает с актуальности в виде известных инцидентов за 2024 год и, в целом, видов угроз для контейнеров.
Итак, переходим к делу:
🔹 Ограничивайте привилегии контейнеров — по умолчанию они могут запускаться с избыточными правами, что создает новые вектора для атак. Отключайте ненужные привилегии.
🔹 Запускайте rootless-контейнеры — пусть они работают от имени обычного пользователя, а не от root'а.
🔹 Настраивайте сетевую изоляцию — не давайте контейнерам бесконтрольно общаться друг с другом и с внешним миром. Чётко определяйте, кто с кем может взаимодействовать.
🔹 Используйте специальные инструменты — AppArmor, Seccomp и SELinux, они помогут ограничивать системные вызовы и предотвращать несанкционированный доступ к критическим ресурсам.
🔹 Сканируйте образы на уязвимости — Trivy, Docker Scout и аналогичные инструменты помогут обнаружить проблемные зависимости ещё на этапе сборки. Встраивайте эти инструменты в свой CI/CD.
🔹 И, самое базовое, что может делать каждый разработчик — минимизируйте образы, убирайте лишние зависимости, не тяните за собой ненужные файлы, следите за обновлениями базовых образов, запускайте контейнеры от не привилегированных пользователей.
#tools #docker
Докеры мы любим, а думать о безопасности докеров — не всегда.
Неплохая обзорная статья о том, что вы можете сделать для повышения безопасности, чтобы не попасть впросак :)
Автор начинает с актуальности в виде известных инцидентов за 2024 год и, в целом, видов угроз для контейнеров.
Итак, переходим к делу:
🔹 Ограничивайте привилегии контейнеров — по умолчанию они могут запускаться с избыточными правами, что создает новые вектора для атак. Отключайте ненужные привилегии.
🔹 Запускайте rootless-контейнеры — пусть они работают от имени обычного пользователя, а не от root'а.
🔹 Настраивайте сетевую изоляцию — не давайте контейнерам бесконтрольно общаться друг с другом и с внешним миром. Чётко определяйте, кто с кем может взаимодействовать.
🔹 Используйте специальные инструменты — AppArmor, Seccomp и SELinux, они помогут ограничивать системные вызовы и предотвращать несанкционированный доступ к критическим ресурсам.
🔹 Сканируйте образы на уязвимости — Trivy, Docker Scout и аналогичные инструменты помогут обнаружить проблемные зависимости ещё на этапе сборки. Встраивайте эти инструменты в свой CI/CD.
🔹 И, самое базовое, что может делать каждый разработчик — минимизируйте образы, убирайте лишние зависимости, не тяните за собой ненужные файлы, следите за обновлениями базовых образов, запускайте контейнеры от не привилегированных пользователей.
#tools #docker
Хабр
Обзор способов защиты контейнеров Docker: от простого к сложному
Безопасность Docker — один из главных вопросов, занимающих умы DevOps‑инженеров и аналитиков безопасности. Согласно последним отчетам Snyk и Red Hat более 44% всех контейнеров, которые находятся в...
Пятничное развлекательное
No Vehicles in the Park — необычная инди-игра, которая на самом деле не про транспорт, а про контент-модерацию.
Как установить простые правила для сложных явлений? Где границы допустимого? И можно ли вообще создать систему, которая не сломается об исключения и контекст?
Разработчик вдохновился гипотетическим кейсом "No vehicles in the park" (H.L.A. Hart, 1958) и решил показать, что контент-модерация — это не просто вопрос скорости обработки жалоб, а фундаментальная проблема неопределённости.
В итоге получился интерактивный эксперимент: какие "транспортные средства" вы запретите в парке? Где проходит грань между велосипедом и инвалидной коляской, игрушечной машинкой и электросамокатом?
Стоит ли пытаться вписать хаос в жёсткие правила или проще отказаться от модерирования совсем?
#fun #edu
No Vehicles in the Park — необычная инди-игра, которая на самом деле не про транспорт, а про контент-модерацию.
Как установить простые правила для сложных явлений? Где границы допустимого? И можно ли вообще создать систему, которая не сломается об исключения и контекст?
Разработчик вдохновился гипотетическим кейсом "No vehicles in the park" (H.L.A. Hart, 1958) и решил показать, что контент-модерация — это не просто вопрос скорости обработки жалоб, а фундаментальная проблема неопределённости.
В итоге получился интерактивный эксперимент: какие "транспортные средства" вы запретите в парке? Где проходит грань между велосипедом и инвалидной коляской, игрушечной машинкой и электросамокатом?
Стоит ли пытаться вписать хаос в жёсткие правила или проще отказаться от модерирования совсем?
#fun #edu
Как проводить skip level 1-1
Любопытная статья, посвящённая проведению 1-1 встреч с коллегами на два и более уровня ниже вас. Такие встречи называются один-на-один, или one-to-one, сокращённо 121.
Я не знаю термина, обозначающего такие встречи на русском языке, но в английском есть емкое название skip level 1-1.
С моей точки зрения, начало статьи достаточно банальное, но в разделе с советами автор даёт несколько действительно полезных рекомендаций.
По части организации таких встреч:
— Встречи должны быть прозрачными. Важно заранее обозначить для собеседника формат встречи, её цели, подготовить примерный набор вопросов и ожиданий от встречи.
— Желательно, чтобы такие встречи проводились регулярно. Это позволит избежать нежданчиков и стресса для коллег.
— Руководители людей, с кем вы проводите встречи, также должны быть в курсе таких встреч и их целей.
По части проведения встреч:
— Добавьте в общение какой-то персонализации, заранее узнайте что-то о человеке и его достижениях, это позволит установить более тёплые и честные взаимоотношения.
— Вопросы должны быть конкретными. Если задавать абстрактные вопросы, то ответы, скорее всего, будут размытыми, вроде "да, в целом, всё нормально".
— На таких встречах можно получить фидбек из первых уст по внедрённым недавно изменениям или новым практикам. Также может оказаться, что какие-то инициативы были внедрены, но сотрудники либо понимают их по-разному, либо вообще не в курсе. В итоге получается такой отличный heartbeat.
— На таких встречах можно получить фидбек об их руководителе (вашем подчинённом), чтобы посмотреть на работу вашего непосредственного подчинённого под другим углом.
— Фиксируйте повторяющиеся темы и паттерны. Если одна и та же проблема всплывает у разных людей, это важный сигнал.
Статья не затрагивает тему, что делать с полученной информацией, но это, пожалуй, выходит за рамки заявленной темы.
#teamwork #edu
Любопытная статья, посвящённая проведению 1-1 встреч с коллегами на два и более уровня ниже вас. Такие встречи называются один-на-один, или one-to-one, сокращённо 121.
Я не знаю термина, обозначающего такие встречи на русском языке, но в английском есть емкое название skip level 1-1.
С моей точки зрения, начало статьи достаточно банальное, но в разделе с советами автор даёт несколько действительно полезных рекомендаций.
По части организации таких встреч:
— Встречи должны быть прозрачными. Важно заранее обозначить для собеседника формат встречи, её цели, подготовить примерный набор вопросов и ожиданий от встречи.
— Желательно, чтобы такие встречи проводились регулярно. Это позволит избежать нежданчиков и стресса для коллег.
— Руководители людей, с кем вы проводите встречи, также должны быть в курсе таких встреч и их целей.
По части проведения встреч:
— Добавьте в общение какой-то персонализации, заранее узнайте что-то о человеке и его достижениях, это позволит установить более тёплые и честные взаимоотношения.
— Вопросы должны быть конкретными. Если задавать абстрактные вопросы, то ответы, скорее всего, будут размытыми, вроде "да, в целом, всё нормально".
— На таких встречах можно получить фидбек из первых уст по внедрённым недавно изменениям или новым практикам. Также может оказаться, что какие-то инициативы были внедрены, но сотрудники либо понимают их по-разному, либо вообще не в курсе. В итоге получается такой отличный heartbeat.
— На таких встречах можно получить фидбек об их руководителе (вашем подчинённом), чтобы посмотреть на работу вашего непосредственного подчинённого под другим углом.
— Фиксируйте повторяющиеся темы и паттерны. Если одна и та же проблема всплывает у разных людей, это важный сигнал.
Статья не затрагивает тему, что делать с полученной информацией, но это, пожалуй, выходит за рамки заявленной темы.
#teamwork #edu
Rubick
Jade Rubick - Why and how to do skip level 1-1s
I share what I've learned about doing skip level 1-1s.
Таки посмотрите на uv
Мы уже писали о быстром пакетном менеджере для Python — uv. Кто-то уже успел его пощупать? Я затащил его в несколько своих проектов — полёт нормальный. В продакшн хотели затащить, но так и не нашли весомых причин.
На днях вышла статья — A year of uv: pros, cons, and should you migrate. Автор в восторге от uv, и когда постарался упомянуть минусы, то даже от них скорее в восторге. В итоге текст — отличный вариант вдохновиться на использование этого инструмента. А если хотите узнать про подводные камни — залетайте в комменты, там автору уже насували.
#tools #python
Мы уже писали о быстром пакетном менеджере для Python — uv. Кто-то уже успел его пощупать? Я затащил его в несколько своих проектов — полёт нормальный. В продакшн хотели затащить, но так и не нашли весомых причин.
На днях вышла статья — A year of uv: pros, cons, and should you migrate. Автор в восторге от uv, и когда постарался упомянуть минусы, то даже от них скорее в восторге. В итоге текст — отличный вариант вдохновиться на использование этого инструмента. А если хотите узнать про подводные камни — залетайте в комменты, там автору уже насували.
#tools #python
Telegram
DevFM
uv: Unified Python packaging
У авторов линтера ruff, которым мы активно пользуемся и всем советуем, вышло большое обновление ещё одной интересной их тулзы – uv: Unified Python packaging. Такой же, как другие пакетные менеджеры, только лучше. Ну, по крайней…
У авторов линтера ruff, которым мы активно пользуемся и всем советуем, вышло большое обновление ещё одной интересной их тулзы – uv: Unified Python packaging. Такой же, как другие пакетные менеджеры, только лучше. Ну, по крайней…
Пятничное развлекательное
Ребята из Ряды Фурье рассказали о супер интересных исследованиях: оказывается, можно "напихать" трезвому здоровому человеку новые воспоминания!
А ещё у них был пост о том, что человеческая память — это нечто вроде write-only: записать можно, но вот прочитать — только с искажениями и перезаписью.
#fun
Ребята из Ряды Фурье рассказали о супер интересных исследованиях: оказывается, можно "напихать" трезвому здоровому человеку новые воспоминания!
А ещё у них был пост о том, что человеческая память — это нечто вроде write-only: записать можно, но вот прочитать — только с искажениями и перезаписью.
#fun
Telegram
Ряды Фурье
Социнженеры, привет! Вот два отличных исследования про то, как можно напихать трезвому здоровому человеку новых воспоминаний.
Первое:
— 24 участникам пытались втопырить ложное воспоминание о том, как они потерялись в торговом центре в детстве.
— Дали описания…
Первое:
— 24 участникам пытались втопырить ложное воспоминание о том, как они потерялись в торговом центре в детстве.
— Дали описания…
The 37signals Guide to Internal Communication
Мы уже писали про замечательную книгу Getting Real от ребят из 37signals.
Давно хотел написать про ещё один классный гайдлайн от ребят — The 37signals Guide to Internal Communication.
Мы внедряем различные практики разработки — как пишем код, какие линтеры используем, как проводим ревью и т.д. А вот как правильно коммуницировать, чтобы были единые, всем понятные правила? На моей практике с этим аспектом не всё так гладко.
В гайде вас ждёт набор очень ёмко сформулированных правил коммуникации. Приведу без перевода особенно откликнувшиеся мне:
— Real-time sometimes, asynchronous most of the time.
— Meetings are the last resort, not the first option.
— Speaking only helps who’s in the room, writing helps everyone.
— If your words can be perceived in different ways, they’ll be understood in the way which does the most harm.
— Never expect or require someone to get back to you immediately unless it’s a true emergency. The expectation of immediate response is toxic.
— Five people in a room for an hour isn’t a one hour meeting, it’s a five hour meeting. Be mindful of the tradeoffs.
— “Now” is often the wrong time to say what just popped into your head. It’s better to let it filter it through the sieve of time. What’s left is the part worth saying.
— Urgency is overrated, ASAP is poison.
— Ask if things are clear. Ask what you left out. Ask if there was anything someone was expecting that you didn’t cover. Address the gaps before they widen with time.
#teamwork #edu
Мы уже писали про замечательную книгу Getting Real от ребят из 37signals.
Давно хотел написать про ещё один классный гайдлайн от ребят — The 37signals Guide to Internal Communication.
Мы внедряем различные практики разработки — как пишем код, какие линтеры используем, как проводим ревью и т.д. А вот как правильно коммуницировать, чтобы были единые, всем понятные правила? На моей практике с этим аспектом не всё так гладко.
В гайде вас ждёт набор очень ёмко сформулированных правил коммуникации. Приведу без перевода особенно откликнувшиеся мне:
— Real-time sometimes, asynchronous most of the time.
— Meetings are the last resort, not the first option.
— Speaking only helps who’s in the room, writing helps everyone.
— If your words can be perceived in different ways, they’ll be understood in the way which does the most harm.
— Never expect or require someone to get back to you immediately unless it’s a true emergency. The expectation of immediate response is toxic.
— Five people in a room for an hour isn’t a one hour meeting, it’s a five hour meeting. Be mindful of the tradeoffs.
— “Now” is often the wrong time to say what just popped into your head. It’s better to let it filter it through the sieve of time. What’s left is the part worth saying.
— Urgency is overrated, ASAP is poison.
— Ask if things are clear. Ask what you left out. Ask if there was anything someone was expecting that you didn’t cover. Address the gaps before they widen with time.
#teamwork #edu
Telegram
DevFM
Книга "Getting Real"
Долго откладывал эту книжку, а потом каааак прочел на одном дыхании.
Книга описывает философию и подходы к разработке и управлению проектами.
Основные идеи книги включают:
– Простота: Сосредоточьтесь на том, что действительно важно…
Долго откладывал эту книжку, а потом каааак прочел на одном дыхании.
Книга описывает философию и подходы к разработке и управлению проектами.
Основные идеи книги включают:
– Простота: Сосредоточьтесь на том, что действительно важно…
Осенью я посещал конференцию ArchDays и уже делился впечатлениями — восторга она у меня не вызвала. Однако было два доклада, которые мне понравились. Организаторы выложили записи в открытый доступ, и я с удовольствием делюсь этими докладами — они точно заслуживают внимания.
▫️Замечательный своей концептуальностью доклад Александра Поломодова “Архитектура в Т-Банке: вчера, сегодня, завтра”
▫️И очень практический доклад Виталия Минко “Архитектурные практики на практике”
#youtube
▫️Замечательный своей концептуальностью доклад Александра Поломодова “Архитектура в Т-Банке: вчера, сегодня, завтра”
▫️И очень практический доклад Виталия Минко “Архитектурные практики на практике”
#youtube
Telegram
DevFM
Вдохновившись выступлениями прошлых лет, побывал тут на ArchDays 2024.
Были доклады поверхностные – за всё хорошее, против всего плохого, были доклады, где люди просто плохо готовились к выступлению или рассказывали сырой материал.
Однако удалось послушать…
Были доклады поверхностные – за всё хорошее, против всего плохого, были доклады, где люди просто плохо готовились к выступлению или рассказывали сырой материал.
Однако удалось послушать…
В продолжение поста про правила коммуникации от 37signals
Пример из практики.
На одном из проектов, где была сильная и слаженная команда, произошел сбой. Разработчик работал по системным требованиям, но в какой-то момент что-то стало непонятно. Он написал системному аналитику в личке, они быстро обсудили вопрос, договорились и разработчик продолжил работу.
И это катастрофа. По факту — частная договоренность, которую никто больше не видел, без фиксации в соответствующих артефактах.
Но это сейчас я рассказываю так всё коротенько. Когда через некоторое время словили проблему, команде пришлось разбираться, кто на ком стоял. В итоге вывели два простых правила:
— Никаких обсуждений в личке. Все вопросы в рабочем мессенджере, в тредах. Там можно публично обсудить проблему, привлечь других участников команды для принятия решения.
— Не начинаем работу без фиксации. Решения должны быть отражены в системных требованиях. Эти артефакты — основа, которую используют все: разработчики, тестировщики и аналитики.
Но самое интересное в другом. Эти правила уже были в команде, но инцидент показал, что они плохо зафиксированы или донесены до новых сотрудников.
Главный урок тут такой: нужно регулярно проверять принятые практики и процессы. Убеждаться, что они работают как надо, и команда о них знает.
#devfm #teamwork
Пример из практики.
На одном из проектов, где была сильная и слаженная команда, произошел сбой. Разработчик работал по системным требованиям, но в какой-то момент что-то стало непонятно. Он написал системному аналитику в личке, они быстро обсудили вопрос, договорились и разработчик продолжил работу.
И это катастрофа. По факту — частная договоренность, которую никто больше не видел, без фиксации в соответствующих артефактах.
Но это сейчас я рассказываю так всё коротенько. Когда через некоторое время словили проблему, команде пришлось разбираться, кто на ком стоял. В итоге вывели два простых правила:
— Никаких обсуждений в личке. Все вопросы в рабочем мессенджере, в тредах. Там можно публично обсудить проблему, привлечь других участников команды для принятия решения.
— Не начинаем работу без фиксации. Решения должны быть отражены в системных требованиях. Эти артефакты — основа, которую используют все: разработчики, тестировщики и аналитики.
Но самое интересное в другом. Эти правила уже были в команде, но инцидент показал, что они плохо зафиксированы или донесены до новых сотрудников.
Главный урок тут такой: нужно регулярно проверять принятые практики и процессы. Убеждаться, что они работают как надо, и команда о них знает.
#devfm #teamwork
Telegram
DevFM
The 37signals Guide to Internal Communication
Мы уже писали про замечательную книгу Getting Real от ребят из 37signals.
Давно хотел написать про ещё один классный гайдлайн от ребят — The 37signals Guide to Internal Communication.
Мы внедряем различные…
Мы уже писали про замечательную книгу Getting Real от ребят из 37signals.
Давно хотел написать про ещё один классный гайдлайн от ребят — The 37signals Guide to Internal Communication.
Мы внедряем различные…
"All you need is Postgres" – наверняка слышали этот боевой клич
Недавно наткнулся на целый репозиторий, где собрали кучу интересных задач и способов их решения прямо в Postgres.
Репозиторий оказалася очень залипательным, можно походить по ссылочкам, узнать какие штуки бывают. Так, например, узнал про PGlite — Postgres in WASM. Просто берёшь и запускаешь базу прямо в браузере. Без всяких линуксовых виртуальных машин. Ну очень интересно!
Конечно, не стоит пытаться решать все проблемы с помощью Postgres, но ситуации бывают разные и знать о таких штуках может быть полезно.
#database
Недавно наткнулся на целый репозиторий, где собрали кучу интересных задач и способов их решения прямо в Postgres.
Репозиторий оказалася очень залипательным, можно походить по ссылочкам, узнать какие штуки бывают. Так, например, узнал про PGlite — Postgres in WASM. Просто берёшь и запускаешь базу прямо в браузере. Без всяких линуксовых виртуальных машин. Ну очень интересно!
Конечно, не стоит пытаться решать все проблемы с помощью Postgres, но ситуации бывают разные и знать о таких штуках может быть полезно.
#database
GitHub
GitHub - Olshansk/postgres_for_everything: How to reduce complexity and move faster? Just Postgres for everything.
How to reduce complexity and move faster? Just Postgres for everything. - Olshansk/postgres_for_everything
Value Stream Mapping
В рамках анализа затыков в процессе поставки релизов наткнулся на статью, рассказывающую о Value Stream Mapping (VSM).
Value Stream Mapping — метод визуализации процесса работы. Он помогает увидеть весь процесс от начала написания кода до деплоя в прод, выявить узкие места и наметить улучшения.
Но, прежде чем строить карту потока, важно понять, зачем мы это делаем. Здесь помогает Outcome Mapping:
1. Собираем ключевых участников.
2. Формулируем, какую стратегическую задачу мы хотим решить.
3. Записываем проблемы, вопросы, идеи.
4. Группируем их, выбираем главную область для улучшения.
5. Формулируем конкретный и измеримый результат.
В статье ещё приводится несколько конкретных примеров Outcome mapping.
Теперь можно перейти к построению VSM.
Что нужно отразить на карте:
— Ключевые шаги — от написания кода до деплоя, тут важно выбрать для себя достаточный уровень детализации процесса, но это можно сделать только эмпирическим путем.
— Задержки — проанализировать и отразить места, где работа простаивает.
— Хенд-оффы — уделить особое внимание на передачу задачи между командами, например, между анализом и разработкой.
— Время ожидания — время, когда кто-то на каком-то этапе кого-то ждет
В целом и раньше подобное делали, но не использовали какую-то конкретную практику. Теперь попробуем применить. Расскажите, применяете ли вы что-то подобное на практике? Как ищете узкие места?
На тему ускорения процесса доставки у нас был пост, где мы анализировали источники багов.
А сократить путь бага нам помогает табличка с зонами ответственности.
#systemdesign
В рамках анализа затыков в процессе поставки релизов наткнулся на статью, рассказывающую о Value Stream Mapping (VSM).
Value Stream Mapping — метод визуализации процесса работы. Он помогает увидеть весь процесс от начала написания кода до деплоя в прод, выявить узкие места и наметить улучшения.
Но, прежде чем строить карту потока, важно понять, зачем мы это делаем. Здесь помогает Outcome Mapping:
1. Собираем ключевых участников.
2. Формулируем, какую стратегическую задачу мы хотим решить.
3. Записываем проблемы, вопросы, идеи.
4. Группируем их, выбираем главную область для улучшения.
5. Формулируем конкретный и измеримый результат.
В статье ещё приводится несколько конкретных примеров Outcome mapping.
Теперь можно перейти к построению VSM.
Что нужно отразить на карте:
— Ключевые шаги — от написания кода до деплоя, тут важно выбрать для себя достаточный уровень детализации процесса, но это можно сделать только эмпирическим путем.
— Задержки — проанализировать и отразить места, где работа простаивает.
— Хенд-оффы — уделить особое внимание на передачу задачи между командами, например, между анализом и разработкой.
— Время ожидания — время, когда кто-то на каком-то этапе кого-то ждет
В целом и раньше подобное делали, но не использовали какую-то конкретную практику. Теперь попробуем применить. Расскажите, применяете ли вы что-то подобное на практике? Как ищете узкие места?
На тему ускорения процесса доставки у нас был пост, где мы анализировали источники багов.
А сократить путь бага нам помогает табличка с зонами ответственности.
#systemdesign
dora.dev
DORA | Value stream mapping for software delivery
DORA is a long running research program that seeks to understand the capabilities that drive software delivery and operations performance. DORA helps teams apply those capabilities, leading to better organizational performance.
Backup: архитектура систем
Про system design часто пишут в контексте подготовки к собеседованиям. Мы же в первую очередь пишем про практический аспект — зачем архитектура вообще, как её описывать, какими инструментами мы пользуемся, как вообще процесс можно организовать.
— Для чего нужны архитектурные схемы
— Как документировать архитектуру
— Google design docs
— C4 model для документирования архитектуры
— Анализ источника багов как начало улучшения процессов работы в команде
— Фиксируем зоны ответственности проекта
— визуализируем работу с помощью Value Stream Mapping
Это продолжение цикла тематических подборок. Предыдущая подборка материалов по базам данных.
#backup #systemdesign
Про system design часто пишут в контексте подготовки к собеседованиям. Мы же в первую очередь пишем про практический аспект — зачем архитектура вообще, как её описывать, какими инструментами мы пользуемся, как вообще процесс можно организовать.
— Для чего нужны архитектурные схемы
— Как документировать архитектуру
— Google design docs
— C4 model для документирования архитектуры
— Анализ источника багов как начало улучшения процессов работы в команде
— Фиксируем зоны ответственности проекта
— визуализируем работу с помощью Value Stream Mapping
Это продолжение цикла тематических подборок. Предыдущая подборка материалов по базам данных.
#backup #systemdesign
Telegram
DevFM
Для чего нужны архитектурные схемы
Один из наших стартапных продуктов дозрел до того, чтобы для него подготовили архитектурную схему. По результату, я даже удивился, насколько всё стало разухабисто.
В недавнем диалоге обсуждали, для чего конкретно нам нужна…
Один из наших стартапных продуктов дозрел до того, чтобы для него подготовили архитектурную схему. По результату, я даже удивился, насколько всё стало разухабисто.
В недавнем диалоге обсуждали, для чего конкретно нам нужна…
Postgres — как делать не надо
В вики Postgres есть отличный гайд с десятками полезных советов о том, как не стоит делать — и, самое главное, объяснениями, почему так делать плохо и как делать правильно.
Вот несколько интересных моментов:
— Не используйте char(n) — у нас был отдельный пост о разнице между char, varchar и text.
— Не используйте serial
— Не используйте NOT IN
— Не используйте timestamp без timezone
#database
В вики Postgres есть отличный гайд с десятками полезных советов о том, как не стоит делать — и, самое главное, объяснениями, почему так делать плохо и как делать правильно.
Вот несколько интересных моментов:
— Не используйте char(n) — у нас был отдельный пост о разнице между char, varchar и text.
— Не используйте serial
— Не используйте NOT IN
— Не используйте timestamp без timezone
#database
Telegram
DevFM
Postgres – как хранить строки?
Если каждый раз при проектировании базы данных задаётесь вопросом, чем отличаются char, varchar или text и какой тип данных использовать для хранения строк, то эта заметка для вас.
Автор рассказывает о каждом типе данных,…
Если каждый раз при проектировании базы данных задаётесь вопросом, чем отличаются char, varchar или text и какой тип данных использовать для хранения строк, то эта заметка для вас.
Автор рассказывает о каждом типе данных,…
Markwhen — для построения роадмапов
Обычно построением роадмапов занимаются руководители проектов, но иногда это нужно и тимлидам или другим техническим руководителям.
Хочу поделиться гиковским опенсорсным инструментом — Markwhen.
Markwhen позволяет строить роадмапы с использованием синтаксиса Markdown и хранить их в git. Из минусов обнаружил невозможность выставлять зависимости между колбасками.
Вот тут можно потыкать инструмент, посмотреть на его возможности, синтаксис и способы визуализации. А тут документация.
Также у ребят есть всевозможные расширения в том числе для Obsidian и VSCode.
#tools
Обычно построением роадмапов занимаются руководители проектов, но иногда это нужно и тимлидам или другим техническим руководителям.
Хочу поделиться гиковским опенсорсным инструментом — Markwhen.
Markwhen позволяет строить роадмапы с использованием синтаксиса Markdown и хранить их в git. Из минусов обнаружил невозможность выставлять зависимости между колбасками.
Вот тут можно потыкать инструмент, посмотреть на его возможности, синтаксис и способы визуализации. А тут документация.
Также у ребят есть всевозможные расширения в том числе для Obsidian и VSCode.
#tools
GitHub
GitHub - mark-when/markwhen: Make a cascading timeline from markdown-like text. Supports simple American/European date styles,…
Make a cascading timeline from markdown-like text. Supports simple American/European date styles, ISO8601, images, links, locations, and more. - mark-when/markwhen
Получил рассылку от Postgres с интересным докладом: Механизмы секционирования больших таблиц, который будет проводиться 25 марта, то есть завтра. Записался, надеюсь, что это не маркетинговый доклад, а то среди тем заявлен pgpro_autopart, а это уже часть Postgres Pro. Посмотрим, что расскажут.
pgconf.ru
PGMeetup: Механизмы секционирования больших таблиц | PGConf.Russia
Вебинар по PostgreSQL PGMeetup: Механизмы секционирования больших таблиц,
Diagrams
Нравится мне python, а если с его помощью ещё и архитектурные диаграммы рисовать — вообще красота. Поэтому принес ещё один инструмент, позволяющий кодом на питоне создавать архитектурные схемы. В примерах можно посмотреть как это выглядит: тут и тут.
Затащить в полноценное использование командами такой инструмент у меня, конечно, не получится (да и смысла большого нет), но развернуть локально и потыкать интересно. На практике мы используем Structurizer. А ранее у нас был пост, зачем мы документируем архитектуру.
#tools
Нравится мне python, а если с его помощью ещё и архитектурные диаграммы рисовать — вообще красота. Поэтому принес ещё один инструмент, позволяющий кодом на питоне создавать архитектурные схемы. В примерах можно посмотреть как это выглядит: тут и тут.
Затащить в полноценное использование командами такой инструмент у меня, конечно, не получится (да и смысла большого нет), но развернуть локально и потыкать интересно. На практике мы используем Structurizer. А ранее у нас был пост, зачем мы документируем архитектуру.
#tools
Mingrammer
Diagrams · Diagram as Code
Life Altering Postgresql Patterns
Постгрю я, конечно, люблю не так сильно, как питон, но всё равно периодически посматриваю на хорошие практики.
В статье автор дает несколько полезных советов при работе с постгрей. За некоторым исключением, во многом с ним согласен.
🔹 UUID вместо автоинкремента — если работаешь с распределёнными системами или API, лучше сразу использовать uuid DEFAULT gen_random_uuid(). Избавит от проблем с конфликтами ID
🔹 created_at / updated_at — каскадное удаление может привести к неожиданным потерям данных. Лучше контролировать процесс вручную
🔹ON DELETE RESTRICT вместо CASCADE — защищает от случайного удаления связанных данных. Лучше удалять вручную при необходимости
🔹Используйте схемы — не нужно всё пихать в public, схемы помогают логически разделить данные
🔹Таблицы вместо ENUM — если нужно хранить фиксированный набор значений, лучше делать это в отдельной таблице. Всегда так делал, а ещё удивляюсь, что иногда енамки хранятся на уровне кода
🔹Таблицы в единственном числе — user вместо users. Логичнее: одна строка = один объект. Хотя наверняка найдутся сторонники другого подхода
🔹Soft delete вместо удаления — автор убеждён, что хранение дешевле, чем восстановление данных, и почти всегда рекомендует soft delete (deleted_at TIMESTAMP NULL)
🔹 JSONB вместо сложных JOIN'ов — удобно для метаданных и настроек, если структура может меняться. Но я бы тут осторожно подходил к такому решению. Например, что будет со старыми данными, если формат json поменяется? А не будет ли проблем с TOAST? На эти темы у нас были отдельные посты: раз, два
🔹Понятные имена join-таблиц — просто объединяйте имена связываемых таблиц и не городите чего-то этакое
#database
Постгрю я, конечно, люблю не так сильно, как питон, но всё равно периодически посматриваю на хорошие практики.
В статье автор дает несколько полезных советов при работе с постгрей. За некоторым исключением, во многом с ним согласен.
🔹 UUID вместо автоинкремента — если работаешь с распределёнными системами или API, лучше сразу использовать uuid DEFAULT gen_random_uuid(). Избавит от проблем с конфликтами ID
🔹 created_at / updated_at — каскадное удаление может привести к неожиданным потерям данных. Лучше контролировать процесс вручную
🔹ON DELETE RESTRICT вместо CASCADE — защищает от случайного удаления связанных данных. Лучше удалять вручную при необходимости
🔹Используйте схемы — не нужно всё пихать в public, схемы помогают логически разделить данные
🔹Таблицы вместо ENUM — если нужно хранить фиксированный набор значений, лучше делать это в отдельной таблице. Всегда так делал, а ещё удивляюсь, что иногда енамки хранятся на уровне кода
🔹Таблицы в единственном числе — user вместо users. Логичнее: одна строка = один объект. Хотя наверняка найдутся сторонники другого подхода
🔹Soft delete вместо удаления — автор убеждён, что хранение дешевле, чем восстановление данных, и почти всегда рекомендует soft delete (deleted_at TIMESTAMP NULL)
🔹 JSONB вместо сложных JOIN'ов — удобно для метаданных и настроек, если структура может меняться. Но я бы тут осторожно подходил к такому решению. Например, что будет со старыми данными, если формат json поменяется? А не будет ли проблем с TOAST? На эти темы у нас были отдельные посты: раз, два
🔹Понятные имена join-таблиц — просто объединяйте имена связываемых таблиц и не городите чего-то этакое
#database
Telegram
DevFM
Работа с json в PostgreSQL
Цикл супер-полезных практических заметок о работе с json в PostgreSQL.
Затрагиваются вопросы:
— чем json отличается от jsonb
— как парсить json. В том числе: извлечение поля из json-объекта, получение тип данных, проверка существования…
Цикл супер-полезных практических заметок о работе с json в PostgreSQL.
Затрагиваются вопросы:
— чем json отличается от jsonb
— как парсить json. В том числе: извлечение поля из json-объекта, получение тип данных, проверка существования…
Как я провожу синки с тимлидами
Недавно с коллегами заходил разговор за формат синков с тимлидами. Расскажу, как я провожу подобные встречи.
Формат
Обычно, такие встречи проходят раз в неделю. Цель – синхронизация по текущим задачам, проблемам и приоритетам.
Каждый синк – отдельная повторяющаяся приватная таска в таск трекере (как я веду задачи писал тут), либо приватная страничка в вики (в нашем случае конфлюенсе), где фиксируется повестка. Важно, что повестку наполняют оба: руководитель и подчиненный.
Структура
Повестка состоит из трёх частей:
1️⃣ Обязательная часть
Фиксированный список тем, которые обсуждаются на каждой встрече. Этот раздел редко меняется.
Как правило это:
– Посмотреть action points с предыдущего синка
– Общий статус по задачам в работе
Для разных лидов обязательная часть может отличаться. Например, с некоторыми лидами у нас есть пункт по тайм менеджменту, потому что с этим часто бывают вопросы.
2️⃣ Опциональная часть
Эта такой живой раздел. Сюда каждый из участников записывает темы/вопросы, накапливающиеся в течение недели. Темы могут быть самыми разными: какой формат перфоманс ревью в этом полугодии, обсудить новую идею по изменению шаблонного сервиса, внедрение новых метрик и т.д.
3️⃣ Action points
Самый важный раздел. Здесь фиксируем договоренности с синка с указанием дедлайнов и ответственных.
Соответственно, такой скелет повестки с пояснениями по каждому разделу создается для каждой встречи и наполняется в течение недели.
Почему именно так?
Кому-то может показаться, что такой формат слишком бюрократичен. И в целом, когда у тебя пара подчиненных, действительно можно держать многое в голове, но когда их становится больше, то подобный формат мне дает:
✅ прозрачное отслеживание всех вопросов и договоренностей
✅ возможность накидывать темы заранее, не теряя их
✅ отсутствие стихийных созвонов, когда появляется какой-то вопрос. Всегда есть понятное место, куда его можно припарковать
✅ наличие повестки заранее, что позволяет лучше подготовиться к встрече
✅ лучше работает на асинхронное взаимодействие – если какая-то тема потеряла актуальность за неделю, можно просто её удалить, не тратя время на обсуждение
О применении ТГ для асинхронной работы была отдельная статья.
#teamwork #devfm
Недавно с коллегами заходил разговор за формат синков с тимлидами. Расскажу, как я провожу подобные встречи.
Формат
Обычно, такие встречи проходят раз в неделю. Цель – синхронизация по текущим задачам, проблемам и приоритетам.
Каждый синк – отдельная повторяющаяся приватная таска в таск трекере (как я веду задачи писал тут), либо приватная страничка в вики (в нашем случае конфлюенсе), где фиксируется повестка. Важно, что повестку наполняют оба: руководитель и подчиненный.
Структура
Повестка состоит из трёх частей:
1️⃣ Обязательная часть
Фиксированный список тем, которые обсуждаются на каждой встрече. Этот раздел редко меняется.
Как правило это:
– Посмотреть action points с предыдущего синка
– Общий статус по задачам в работе
Для разных лидов обязательная часть может отличаться. Например, с некоторыми лидами у нас есть пункт по тайм менеджменту, потому что с этим часто бывают вопросы.
2️⃣ Опциональная часть
Эта такой живой раздел. Сюда каждый из участников записывает темы/вопросы, накапливающиеся в течение недели. Темы могут быть самыми разными: какой формат перфоманс ревью в этом полугодии, обсудить новую идею по изменению шаблонного сервиса, внедрение новых метрик и т.д.
3️⃣ Action points
Самый важный раздел. Здесь фиксируем договоренности с синка с указанием дедлайнов и ответственных.
Соответственно, такой скелет повестки с пояснениями по каждому разделу создается для каждой встречи и наполняется в течение недели.
Почему именно так?
Кому-то может показаться, что такой формат слишком бюрократичен. И в целом, когда у тебя пара подчиненных, действительно можно держать многое в голове, но когда их становится больше, то подобный формат мне дает:
✅ прозрачное отслеживание всех вопросов и договоренностей
✅ возможность накидывать темы заранее, не теряя их
✅ отсутствие стихийных созвонов, когда появляется какой-то вопрос. Всегда есть понятное место, куда его можно припарковать
✅ наличие повестки заранее, что позволяет лучше подготовиться к встрече
✅ лучше работает на асинхронное взаимодействие – если какая-то тема потеряла актуальность за неделю, можно просто её удалить, не тратя время на обсуждение
О применении ТГ для асинхронной работы была отдельная статья.
#teamwork #devfm
Telegram
DevFM
Ведение дел – мой опыт
Часто начинающие тим лиды имеют сложности с тайм-менеджментом. У них появляются новые зоны ответственности, новые задачи, интерапты, о которых они раньше и не слышали, больше общения с людьми. В общем, совершенно новый опыт.
Что уж…
Часто начинающие тим лиды имеют сложности с тайм-менеджментом. У них появляются новые зоны ответственности, новые задачи, интерапты, о которых они раньше и не слышали, больше общения с людьми. В общем, совершенно новый опыт.
Что уж…