Когда ИИ заменит разработчиков, то...
Татьяна aka IT DIVA пишет о негативных последствиях замены миддл-инженеров на ИИ. О таких планах заявил Цукерберг на интервью у Джо Рогана (новость, оригинал подкаста на ютубе на 02:07:32). Конкретно прогнозам Цукерберга я бы особо не верил, потому что его мета-вселенные провалились. Но указанная тенденция действительно существует.
Если кратко резюмировать прогнозируемые Татьяной последствия от замены миддлов на ИИ, то получим примерно следующее (рекомендую прочитать пост целиком):
1. Если убрать с рынка джунов и миддлов, то мы усложняем будущий найм сеньоров.
2. Текущая кодовая база и так сложная, а написанный ИИ код будет ещё сложнее. Плюс на большом проекте добиться от ИИ результата будет сложнее.
По первому вопросу полностью согласен. Компаниям в среднем не нужны джуны, потому что обычно не способны выдавать результат, они отвлекают более опытных товарищей и джуны являются скорее инвестицией в будущего сотрудника, чем рабочими руками. Если будет ИИ-джун или ИИ-миддл, то компании предпочтут его. Это ещё и сокращает накладные расходы на коммуникацию, потому что команды нет, есть один условный сениор и его ИИ-ассистент.
Но, вероятно, это можно решить с помощью образования. Институт должен готовить пригодных для работы сотрудников. И крупные компании активно вовлекаются в образовательную движуху. Теперь нужно будет готовить разработчика, который умеет эксплуатировать ИИ для написания кода. Порог входа в профессию вырастет. Но он и сейчас довольно большой. Для разработки нужно знать много технологий, и чем дальше, тем больше. Если классическое образование не справится, то на помощь придут разные книги, курсы (в том числе бесплатные) и другие источники знаний.
А по второму вопросу совсем не могу согласиться. Описывается модель, словно ИИ будет рулить кодовой базой и компанией в целом. Но это не так, если остаются senior developer и прочие квалифицированные кадры. ИИ на текущем этапе может генерировать код, но решение о его внедрении принимает человек. Если эта практика сохранится, то и источник кода не важен, писал ли его человек или ИИ. Важно, чтобы принимающий решение субьект пропускал только качественный код. Тогда и проблем не будет. Причём ИИ может выступать ещё и в качестве высокоуровнего линтера, то есть стать ещё одной ступенькой обеспечения качества результата.
#edu
Татьяна aka IT DIVA пишет о негативных последствиях замены миддл-инженеров на ИИ. О таких планах заявил Цукерберг на интервью у Джо Рогана (новость, оригинал подкаста на ютубе на 02:07:32). Конкретно прогнозам Цукерберга я бы особо не верил, потому что его мета-вселенные провалились. Но указанная тенденция действительно существует.
Если кратко резюмировать прогнозируемые Татьяной последствия от замены миддлов на ИИ, то получим примерно следующее (рекомендую прочитать пост целиком):
1. Если убрать с рынка джунов и миддлов, то мы усложняем будущий найм сеньоров.
2. Текущая кодовая база и так сложная, а написанный ИИ код будет ещё сложнее. Плюс на большом проекте добиться от ИИ результата будет сложнее.
По первому вопросу полностью согласен. Компаниям в среднем не нужны джуны, потому что обычно не способны выдавать результат, они отвлекают более опытных товарищей и джуны являются скорее инвестицией в будущего сотрудника, чем рабочими руками. Если будет ИИ-джун или ИИ-миддл, то компании предпочтут его. Это ещё и сокращает накладные расходы на коммуникацию, потому что команды нет, есть один условный сениор и его ИИ-ассистент.
Но, вероятно, это можно решить с помощью образования. Институт должен готовить пригодных для работы сотрудников. И крупные компании активно вовлекаются в образовательную движуху. Теперь нужно будет готовить разработчика, который умеет эксплуатировать ИИ для написания кода. Порог входа в профессию вырастет. Но он и сейчас довольно большой. Для разработки нужно знать много технологий, и чем дальше, тем больше. Если классическое образование не справится, то на помощь придут разные книги, курсы (в том числе бесплатные) и другие источники знаний.
А по второму вопросу совсем не могу согласиться. Описывается модель, словно ИИ будет рулить кодовой базой и компанией в целом. Но это не так, если остаются senior developer и прочие квалифицированные кадры. ИИ на текущем этапе может генерировать код, но решение о его внедрении принимает человек. Если эта практика сохранится, то и источник кода не важен, писал ли его человек или ИИ. Важно, чтобы принимающий решение субьект пропускал только качественный код. Тогда и проблем не будет. Причём ИИ может выступать ещё и в качестве высокоуровнего линтера, то есть стать ещё одной ступенькой обеспечения качества результата.
#edu
Telegram
IT DIVA - Карьера в IT и BigTech
Пока Марк Цукерберг планирует заменить Middle-специалистов на ИИ - я хочу описать, почему это плохая идея для всего рынка.
А то знаю я, как многие владельцы компаний начнут думать, что это гениально и повторять у себя такой эксперимент, не понимая последствий…
А то знаю я, как многие владельцы компаний начнут думать, что это гениально и повторять у себя такой эксперимент, не понимая последствий…
👍9😁5⚡4
Работаем со связанными ветками в Git
Наткнулся на любопытную статью о работе с ветками в гите во время разработки фичи, и как это дело можно упростить. Но обо всём по порядку.
Автор предлагает делить работу над задачей на несколько логически связанных частей. Каждая часть оформляется в виде отдельной ветки и сопровождается merge request-ом. При этом каждая ветка бранчуется от предыдущей. Например, feature-xyz/part-2 от feature-xyz/part-1, а feature-xyz/part-3 от part-2. Получается такой стек из веток.
Такой подход позволяет упростить ревью – каждый MR охватывает минимальный объем изменений, и создать историю коммитов, которая позволит читать изменения кода по шагам, понимая логику их внесения.
И всё выглядит хорошо до тех пор, пока не нужно внести изменения в part-1 по результатам ревью, а потом влить эти изменения в ветки part-2 и part-3. Или когда в основной dev-ветке появятся изменения, нужно также их затащить во все свои маленькие веточки. Тут приходит на помощь rebase со всеми сопутствующими приседаниями.
Чтобы избежать приседаний, автор предлагает решение: использовать опцию --update-refs команды rebase. В этом случае при ребейзе самой последней вашей ветки git сам обновит все родительские ветки.
Что думаете за такой подход? Выглядит замороченно, плюс нужно иметь высокую культуру в команде, чтобы все следовали договорённостям. По ощущениям, если пилите что-то действительно сложное и большое, когда в проекте много участников и важно ориентироваться в изменениях – выглядит жизнеспособно.
#skills #teamwork
Наткнулся на любопытную статью о работе с ветками в гите во время разработки фичи, и как это дело можно упростить. Но обо всём по порядку.
Автор предлагает делить работу над задачей на несколько логически связанных частей. Каждая часть оформляется в виде отдельной ветки и сопровождается merge request-ом. При этом каждая ветка бранчуется от предыдущей. Например, feature-xyz/part-2 от feature-xyz/part-1, а feature-xyz/part-3 от part-2. Получается такой стек из веток.
Такой подход позволяет упростить ревью – каждый MR охватывает минимальный объем изменений, и создать историю коммитов, которая позволит читать изменения кода по шагам, понимая логику их внесения.
И всё выглядит хорошо до тех пор, пока не нужно внести изменения в part-1 по результатам ревью, а потом влить эти изменения в ветки part-2 и part-3. Или когда в основной dev-ветке появятся изменения, нужно также их затащить во все свои маленькие веточки. Тут приходит на помощь rebase со всеми сопутствующими приседаниями.
Чтобы избежать приседаний, автор предлагает решение: использовать опцию --update-refs команды rebase. В этом случае при ребейзе самой последней вашей ветки git сам обновит все родительские ветки.
Что думаете за такой подход? Выглядит замороченно, плюс нужно иметь высокую культуру в команде, чтобы все следовали договорённостям. По ощущениям, если пилите что-то действительно сложное и большое, когда в проекте много участников и важно ориентироваться в изменениях – выглядит жизнеспособно.
#skills #teamwork
Andrew Lock | .NET Escapades
Working with stacked branches in Git is easier with --update-refs
In this post I discuss how to use the new Git rebasing feature, --update-refs, and how it makes working with stacked branches/PRs easier.
🔥8❤3👍2👎2😁1
Ответ на задачу — проектируем динамическую фильтрацию
В прошлом посте описана задача, которую мы предлагали на собеседовании для разработчиков. Задача была такая: спроектировать фильтрацию результатов поиска товаров с учётом ограничений.
В задачах на проектирование чего-либо интервьюера интересует не столько сам ответ, сколько ход ваших мыслей. Вы можете не дойти до правильного ответа, или дойти с подсказкой. Рассмотрим потенциальные решения задачи и покритикуем их:
💡 Давайте присылать все данные на фронт и фильтровать там.
🚫 1кк записей передавать нецелесообразно. Более того, даже хранить фильтры на фронте не выйдет, так как они динамические и определяются конкретной выборкой. В любом случае, фильтровать должен бекенд.
💡В postgres можно спроектировать схему для хранения фильтров в связке со списком товаров, к которым эти фильтры можно применять.
🚫 Здесь не стали приводить конкретики, но отметим, что при таком подходе будут проблемы с динамическим обновлением счетчиков. А ещё такое решение несёт сложную ментальную нагрузку на разработчика.
💡Можно взять Elasticsearch или Manticore Search и подобное реализовать там.
❓По задаче требуется остаться с PostgreSQL и не вводить доп сущностей. Если можно поднять эластик, решение нормальное и можно обсудить детали.
💡Сведём задачу фильтрации к фасетному поиску. Для этого каждую единицу товара мы характеризуем набором конкретных признаков.
✅ В базе данных нам нужно завести отдельную колонку, где для каждого товара явно хранить набор его признаков и их значений. Для агрегации, подсчета количества и быстрого поиска по выбранным фильтрам можно использовать мощный механизм полнотекстового поиска.
Пример реализации такого решения с использованием полнотекстового поиска в postgres приведен в статье Faceted search using PostgreSQL full text search.
#database #skills #резюме
В прошлом посте описана задача, которую мы предлагали на собеседовании для разработчиков. Задача была такая: спроектировать фильтрацию результатов поиска товаров с учётом ограничений.
В задачах на проектирование чего-либо интервьюера интересует не столько сам ответ, сколько ход ваших мыслей. Вы можете не дойти до правильного ответа, или дойти с подсказкой. Рассмотрим потенциальные решения задачи и покритикуем их:
💡 Давайте присылать все данные на фронт и фильтровать там.
🚫 1кк записей передавать нецелесообразно. Более того, даже хранить фильтры на фронте не выйдет, так как они динамические и определяются конкретной выборкой. В любом случае, фильтровать должен бекенд.
💡В postgres можно спроектировать схему для хранения фильтров в связке со списком товаров, к которым эти фильтры можно применять.
🚫 Здесь не стали приводить конкретики, но отметим, что при таком подходе будут проблемы с динамическим обновлением счетчиков. А ещё такое решение несёт сложную ментальную нагрузку на разработчика.
💡Можно взять Elasticsearch или Manticore Search и подобное реализовать там.
❓По задаче требуется остаться с PostgreSQL и не вводить доп сущностей. Если можно поднять эластик, решение нормальное и можно обсудить детали.
💡Сведём задачу фильтрации к фасетному поиску. Для этого каждую единицу товара мы характеризуем набором конкретных признаков.
✅ В базе данных нам нужно завести отдельную колонку, где для каждого товара явно хранить набор его признаков и их значений. Для агрегации, подсчета количества и быстрого поиска по выбранным фильтрам можно использовать мощный механизм полнотекстового поиска.
Пример реализации такого решения с использованием полнотекстового поиска в postgres приведен в статье Faceted search using PostgreSQL full text search.
#database #skills #резюме
Telegram
DevFM
Задача на собеседовании — проектируем динамическую фильтрацию
Проводили собеседование на разработчика. Задачу для технической части взяли из практики, то есть это прямо то, чем в будущем предстояло заниматься собеседуемому, разве что с упрощением предметной…
Проводили собеседование на разработчика. Задачу для технической части взяли из практики, то есть это прямо то, чем в будущем предстояло заниматься собеседуемому, разве что с упрощением предметной…
🔥17👍7⚡2😁1
Справляемся с рисками
Две совсем несложные статьи (раз, два), посвящённые риску и управлению рисками.
В первой даётся определение риска – это сочетание возможности получить выгоду и вероятности потерь. Мы принимаем риск не ради него самого, а ради целей, которые хотим достичь.
Для анализа риска автор разделяет его на два компонента:
– Вероятность: насколько возможно, что негативное событие произойдёт?
– Последствия: какие убытки или проблемы оно принесёт?
Для оценки риска предлагается использовать матрицы риска, которые делят вероятность и последствия на категории: низкие, средние, высокие. Таким образом можно наглядно увидеть, какие стечения обстоятельств действительно рисковые.
На самом деле важно понимать структуру риска и инструменты для его анализа. Вместо расплывчатого "это слишком рискованно" можно попробовать выдать что-то осмысленное: "Вероятность низкая, но последствия критические, значит, это требует дополнительной подготовки".
Вторая статья посвящена управлению рисками – действиям, направленным на снижение риска.
По сути мы возвращаемся к составляющим риска:
– Снижение вероятности. Мы пытаемся сделать так, чтобы рискованное событие с меньшей вероятностью происходило.
– Снижение последствий. Мы уменьшаем ущерб, если событие всё же произойдёт.
Автор приводит не айтишный пример, но, в целом, неплохо демонстрирующий суть.
Нужно переправиться через реку:
Для снижения вероятности падения в воду мы можем:
– Использовать командные техники переправы
– Искать более мелкий участок реки для перехода
Для снижения последствий попадания в воду мы можем:
– Запаковать вещи в водонепроницаемые мешки, чтобы предотвратить их повреждение
– Разместить спасателей ниже по течению, чтобы минимизировать риск травм или утопления
#teamwork
Две совсем несложные статьи (раз, два), посвящённые риску и управлению рисками.
В первой даётся определение риска – это сочетание возможности получить выгоду и вероятности потерь. Мы принимаем риск не ради него самого, а ради целей, которые хотим достичь.
Для анализа риска автор разделяет его на два компонента:
– Вероятность: насколько возможно, что негативное событие произойдёт?
– Последствия: какие убытки или проблемы оно принесёт?
Для оценки риска предлагается использовать матрицы риска, которые делят вероятность и последствия на категории: низкие, средние, высокие. Таким образом можно наглядно увидеть, какие стечения обстоятельств действительно рисковые.
На самом деле важно понимать структуру риска и инструменты для его анализа. Вместо расплывчатого "это слишком рискованно" можно попробовать выдать что-то осмысленное: "Вероятность низкая, но последствия критические, значит, это требует дополнительной подготовки".
Вторая статья посвящена управлению рисками – действиям, направленным на снижение риска.
По сути мы возвращаемся к составляющим риска:
– Снижение вероятности. Мы пытаемся сделать так, чтобы рискованное событие с меньшей вероятностью происходило.
– Снижение последствий. Мы уменьшаем ущерб, если событие всё же произойдёт.
Автор приводит не айтишный пример, но, в целом, неплохо демонстрирующий суть.
Нужно переправиться через реку:
Для снижения вероятности падения в воду мы можем:
– Использовать командные техники переправы
– Искать более мелкий участок реки для перехода
Для снижения последствий попадания в воду мы можем:
– Запаковать вещи в водонепроницаемые мешки, чтобы предотвратить их повреждение
– Разместить спасателей ниже по течению, чтобы минимизировать риск травм или утопления
#teamwork
jacobian.org
Mitigation - Jacob Kaplan-Moss
So you’ve identified a risk — now what do you do about it? Here’s a simple framework to help frame discussions about risk mitigation. It’s intentionally very simple, a basic starting point. I’ll present a more complex framework later in this series, but I…
❤4⚡3👍3🔥1
DevFM подкаст 3: Роли в ИТ-проекте (youtube / podster / yandex)
В часовом видеоподкасте мы обсудили роли в ИТ-проекте из ~25 человек, занятых разработкой крупного веб-сервиса со сложной бизнес областью. Бизнес аналитики, системные аналитики, тим лиды, разработчики – кто на ком стоял и чем все эти люди занимаются. Представлен достаточно высокоуровневый взгляд на команду, если вы в таком не участвовали – вам точно будет интересно. В конце обсуждаем, можно ли малой командой делать большие проекты и, наоборот, делать большой командой малые проекты.
Подкаст 2. Кто такой тимлид тимлидов
Подкаст 1. Ретроспектива силами команды разработки
#devfm #podcast #teamwork
В часовом видеоподкасте мы обсудили роли в ИТ-проекте из ~25 человек, занятых разработкой крупного веб-сервиса со сложной бизнес областью. Бизнес аналитики, системные аналитики, тим лиды, разработчики – кто на ком стоял и чем все эти люди занимаются. Представлен достаточно высокоуровневый взгляд на команду, если вы в таком не участвовали – вам точно будет интересно. В конце обсуждаем, можно ли малой командой делать большие проекты и, наоборот, делать большой командой малые проекты.
Подкаст 2. Кто такой тимлид тимлидов
Подкаст 1. Ретроспектива силами команды разработки
#devfm #podcast #teamwork
YouTube
DevFM podcast 3. Роли в ИТ-проекте
На больших проектах много ролей. Иногда непонятно, чем они все занимаются. На примере команды из ~25 человек, создающей некоторый сервис с нетривиальной логикой рассмотрим типичные роли: тимлид, техлид, project manager, бизнес аналитик, системный аналитик…
1🔥16❤4👍3
Наш бесплатный курс "Командная строка для разработчиков"
Мы много лет готовим python-разработчиков. Подготовку начинаем с базовых знаний Linux, где прививаем желание и умение работать в терминале. Вдохновляясь курсом "Поколения Python" на степике, сделали бесплатный курс Командная строка для разработчиков, посвящённый терминалу в Linux. Начинающим разработчикам поможем преодолеть неловкость перед текстовым терминалом, опытным разработчикам покажем неочевидные и полезные в работе фишки для увеличения продуктивности.
Уроки курса:
— Команды и работа с файловой системой из терминала
— Модифицируем файловую систему
— Управляем сотнями файлов и пишем первый скрипт
— Знакомимся с текстовыми редакторами nano, mcedit, gedit, vim
— Разбираемся с процессами, jobs, fg, bg, ps, grep и конвейером
— Настраиваем терминал "под себя"
— Разграничение прав доступа и работа с учётными записями
#devfm
Мы много лет готовим python-разработчиков. Подготовку начинаем с базовых знаний Linux, где прививаем желание и умение работать в терминале. Вдохновляясь курсом "Поколения Python" на степике, сделали бесплатный курс Командная строка для разработчиков, посвящённый терминалу в Linux. Начинающим разработчикам поможем преодолеть неловкость перед текстовым терминалом, опытным разработчикам покажем неочевидные и полезные в работе фишки для увеличения продуктивности.
Уроки курса:
— Команды и работа с файловой системой из терминала
— Модифицируем файловую систему
— Управляем сотнями файлов и пишем первый скрипт
— Знакомимся с текстовыми редакторами nano, mcedit, gedit, vim
— Разбираемся с процессами, jobs, fg, bg, ps, grep и конвейером
— Настраиваем терминал "под себя"
— Разграничение прав доступа и работа с учётными записями
#devfm
Stepik: online education
Командная строка для разработчиков – cli-for-dev
Вы научитесь выжимать максимум из клавиатуры, работая в Linux-терминале на примере Ubuntu. В курс входит достаточная теория по внутренностям Linux и много практики в терминале.
👍14🔥8❤6
Простой приём: Как ускорить принятие решений в команде
Если вы руководите людьми, то наверняка сталкивались с ситуацией, когда два специалиста застревают в споре. У каждого есть свои правильные аргументы, но к какому-то окончательному решению прийти не могут.
В этом случае может помочь простой приём — попробуйте предложить радикальное, обоим сторонам неудобное решение.
Приведу пример:
Мы недавно стартовали проект. В качестве базы использовали Postgres. Но так получилось, что новые требования не укладывались в текущую модель данных, обсуждали трейдофы, на которые нужно идти. Время поджимало, обсуждение затянулось на час.Конечно, если обсуждение длится час — его пора заканчивать.
И в один момент я абсолютно серьёзно предложил использовать нереляционную базу. Также серьёзно обосновал своё предложение, почему это может быть хорошим вариантом. И тут случилось чудо – уже через минуту инженеры дружно доказывали мне, что это плохая идея, а заодно быстро пришли к устраивающему всех решению.
В итоге решение найдено, хотя в глазах ребят я предлагаю очень странные идеи.
#teamwork #devfm
Если вы руководите людьми, то наверняка сталкивались с ситуацией, когда два специалиста застревают в споре. У каждого есть свои правильные аргументы, но к какому-то окончательному решению прийти не могут.
В этом случае может помочь простой приём — попробуйте предложить радикальное, обоим сторонам неудобное решение.
Приведу пример:
Мы недавно стартовали проект. В качестве базы использовали Postgres. Но так получилось, что новые требования не укладывались в текущую модель данных, обсуждали трейдофы, на которые нужно идти. Время поджимало, обсуждение затянулось на час.
И в один момент я абсолютно серьёзно предложил использовать нереляционную базу. Также серьёзно обосновал своё предложение, почему это может быть хорошим вариантом. И тут случилось чудо – уже через минуту инженеры дружно доказывали мне, что это плохая идея, а заодно быстро пришли к устраивающему всех решению.
В итоге решение найдено, хотя в глазах ребят я предлагаю очень странные идеи.
#teamwork #devfm
1👍17🔥6⚡3🌭3
Годные авторские каналы
Сегодня хочу поделиться с вами каналами, которые сам читаю с завидной регулярностью, чтобы быть в курсе происходящего вокруг.
– Сиолошная: отсюда узнаю подробности о событиях в мире ml
– Системный сдвиг: тема системного анализа и любого другого анализа близка к разработке, и здесь черпаю информацию о происходящем в мире анализа
– Инжиниринг Данных: тут все просто, автор рассказывает за инжиниринг данных
– addmeto: узнаю о действительно значимых и интересных событиях в мире технологий
– Книжный куб: интересные разборы книг и white papers, беру на заметку, что стоит прочитать
– Чем докажешь и Кнопочка: в области ui/ux существует много интересных исследований, а ещё иногда нужно поставить на место самоуверенного дизайнера
И совсем немного около развлекательного:
– Эргономика жилья: я достаточно сильно заморачиваюсь по комфорту и удобству быта, а этот канал как раз посвящен эргономике вокруг нас
– Ряды Фурье: ребята простым языком раскрывают сложные научные и технологические темы. Позабавила их реклама на Таймс-сквер в Нью-Йорке
– Игорь Кузнецов о темных паттернах: отсюда узнаю, какие дикости творят продакты в своих продуктах, дабы добиться желаемого результата и подкрутить нужные продуктовые метрики
Ну, а как организовать этот бесконечный поток информации в телеграме у нас был отдельный пост.
Если ведёте классный авторский канал – делитесь в комментах.
Сегодня хочу поделиться с вами каналами, которые сам читаю с завидной регулярностью, чтобы быть в курсе происходящего вокруг.
– Сиолошная: отсюда узнаю подробности о событиях в мире ml
– Системный сдвиг: тема системного анализа и любого другого анализа близка к разработке, и здесь черпаю информацию о происходящем в мире анализа
– Инжиниринг Данных: тут все просто, автор рассказывает за инжиниринг данных
– addmeto: узнаю о действительно значимых и интересных событиях в мире технологий
– Книжный куб: интересные разборы книг и white papers, беру на заметку, что стоит прочитать
– Чем докажешь и Кнопочка: в области ui/ux существует много интересных исследований, а ещё иногда нужно поставить на место самоуверенного дизайнера
И совсем немного около развлекательного:
– Эргономика жилья: я достаточно сильно заморачиваюсь по комфорту и удобству быта, а этот канал как раз посвящен эргономике вокруг нас
– Ряды Фурье: ребята простым языком раскрывают сложные научные и технологические темы. Позабавила их реклама на Таймс-сквер в Нью-Йорке
– Игорь Кузнецов о темных паттернах: отсюда узнаю, какие дикости творят продакты в своих продуктах, дабы добиться желаемого результата и подкрутить нужные продуктовые метрики
Ну, а как организовать этот бесконечный поток информации в телеграме у нас был отдельный пост.
Если ведёте классный авторский канал – делитесь в комментах.
👍11🔥4🌭2
Обзор способов защиты контейнеров 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% всех контейнеров, которые находятся в...
🔥8👍7🌭3
Пятничное развлекательное
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
🔥7⚡2👍2😁1
Как проводить 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.
🔥9👍7⚡2
Таки посмотрите на 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. Такой же, как другие пакетные менеджеры, только лучше. Ну, по крайней…
👍10⚡4🔥2❤1
Пятничное развлекательное
Ребята из Ряды Фурье рассказали о супер интересных исследованиях: оказывается, можно "напихать" трезвому здоровому человеку новые воспоминания!
А ещё у них был пост о том, что человеческая память — это нечто вроде write-only: записать можно, но вот прочитать — только с искажениями и перезаписью.
#fun
Ребята из Ряды Фурье рассказали о супер интересных исследованиях: оказывается, можно "напихать" трезвому здоровому человеку новые воспоминания!
А ещё у них был пост о том, что человеческая память — это нечто вроде write-only: записать можно, но вот прочитать — только с искажениями и перезаписью.
#fun
Telegram
Ряды Фурье
Социнженеры, привет! Вот два отличных исследования про то, как можно напихать трезвому здоровому человеку новых воспоминаний.
Первое:
— 24 участникам пытались втопырить ложное воспоминание о том, как они потерялись в торговом центре в детстве.
— Дали описания…
Первое:
— 24 участникам пытались втопырить ложное воспоминание о том, как они потерялись в торговом центре в детстве.
— Дали описания…
❤5🔥3👍1
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"
Долго откладывал эту книжку, а потом каааак прочел на одном дыхании.
Книга описывает философию и подходы к разработке и управлению проектами.
Основные идеи книги включают:
– Простота: Сосредоточьтесь на том, что действительно важно…
Долго откладывал эту книжку, а потом каааак прочел на одном дыхании.
Книга описывает философию и подходы к разработке и управлению проектами.
Основные идеи книги включают:
– Простота: Сосредоточьтесь на том, что действительно важно…
👍13🔥5⚡2
Осенью я посещал конференцию ArchDays и уже делился впечатлениями — восторга она у меня не вызвала. Однако было два доклада, которые мне понравились. Организаторы выложили записи в открытый доступ, и я с удовольствием делюсь этими докладами — они точно заслуживают внимания.
▫️Замечательный своей концептуальностью доклад Александра Поломодова “Архитектура в Т-Банке: вчера, сегодня, завтра”
▫️И очень практический доклад Виталия Минко “Архитектурные практики на практике”
#youtube
▫️Замечательный своей концептуальностью доклад Александра Поломодова “Архитектура в Т-Банке: вчера, сегодня, завтра”
▫️И очень практический доклад Виталия Минко “Архитектурные практики на практике”
#youtube
Telegram
DevFM
Вдохновившись выступлениями прошлых лет, побывал тут на ArchDays 2024.
Были доклады поверхностные – за всё хорошее, против всего плохого, были доклады, где люди просто плохо готовились к выступлению или рассказывали сырой материал.
Однако удалось послушать…
Были доклады поверхностные – за всё хорошее, против всего плохого, были доклады, где люди просто плохо готовились к выступлению или рассказывали сырой материал.
Однако удалось послушать…
🔥7❤2👍2
В продолжение поста про правила коммуникации от 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.
Мы внедряем различные…
👍12❤3🔥2⚡1👎1
"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
👍10❤5🔥5
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.
🔥6👍4⚡1
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
Для чего нужны архитектурные схемы
Один из наших стартапных продуктов дозрел до того, чтобы для него подготовили архитектурную схему. По результату, я даже удивился, насколько всё стало разухабисто.
В недавнем диалоге обсуждали, для чего конкретно нам нужна…
Один из наших стартапных продуктов дозрел до того, чтобы для него подготовили архитектурную схему. По результату, я даже удивился, насколько всё стало разухабисто.
В недавнем диалоге обсуждали, для чего конкретно нам нужна…
🔥7❤3👍2
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 и какой тип данных использовать для хранения строк, то эта заметка для вас.
Автор рассказывает о каждом типе данных,…
👍12🔥7⚡3