Твой кролик писал


Гео и язык канала: Россия, Русский
Категория: Технологии


Канал одного системного аналитика.
Всякие репосты по анализу и разработке.
---
Канал для души: @onezhskiyfm

Связанные каналы

Гео и язык канала
Россия, Русский
Категория
Технологии
Статистика
Фильтр публикаций


Репост из: Burmistrov - It и около
Месяц на новой работе, как я справился с информационным штормом

Прошло чуть больше месяца с того момента, как я вышел на новое место. Кто пропустил — теперь я руководитель направления в Банк Дом.РФ.

За этот месяц я часто вспоминал вопросы от учеников формата «я вышел на проект, как понять что происходит?», «я на проекте, тут не так, как нас учили?», «я ничего не понимаю...» — потому что сам оказался в новых условиях и столкнулся с этими проблемами в разных форматах.

В первую неделю меня накрыло волной информации: новый домен, новый продукт, новый стек, новые люди. Казалось нереальным даже просто запомнить всё, что мне говорили. Был страх «я не справлюсь». Помог нормальный онбординг и поддержка коллег — отдельное спасибо тем, кто выделял слоты в календаре, чтобы можно было зайти и закинуть вопросы, накопившиеся за сутки. Иногда я задавал один и тот же вопрос разным ролям, так довольно быстро сложилась в голове и draw.io карта домена, технологий и продукта, а дальше уже работа пошла.

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

Но дорогу осилит идущий: почитал документы, помучал коллег и вроде втянулся)

Собрал в голове чек-лист из 5 пунктов на случай, если попадёте на новый проект:
1. Знакомьтесь с коллегами.
2. Читайте документацию — всю, что есть.
3. Задавайте вопросы, даже если один и тот же вопрос разным людям — так быстрее сложится общая картина.
4. Всё, что вам непривычно, на старте надо просто принять.
5. Рисуйте схемы и записывайте всё, что в вас загружают — это помогает осознать огромный поток новой информации. Даже древние люди рисовали на скалах, а мы то явно круче них, вот и я создал файл онбординг.drawio.

Пару недель назад открыли новый офис — сгонял туда, чтобы очно познакомиться с командой. Офис понравился, а сам БЦ, оказался целиком нашим. Заодно оценил станцию метро ЦСКА.

Очная встреча, как всегда, сближает, помогает быстрее найти общий язык и сокращает время притирки.
Разобрали огромный эпик за несколько часов. Офлайн-общение и работа для новичка по эффективности и пользе отличаются от созвонов в разы. А это ещё раз укрепило меня в мысли: самый комфортный формат — удалёнка, самый эффективный — гибрид.

Познакомился с DevRel'ом — думаем сделать митапчик в октябре, скорее всего для аналитиков. Детали скоро.

А по задачам пока рассказывать не буду — но за месяц меня уже несколько раз успели похвалить, и это приятно)

А вообще всё новое — это стресс. Берегите себя!

Но если у вас есть лайфхак, как справиться на новом проекте или работе, делитесь!


Репост из: Путь аналитика
🤯 POST, PUT или DELETE? - Вот в чем вопрос!

Выбор правильного HTTP-метода для эндпоинта - это вечная холиварная тема. Особенно когда семантика API не маппится напрямую в REST-методы. Например: вроде бы выполняется удаление, но под капотом происходит update или вовсе создание новой записи.

На практике операции редко соответствуют простой схеме «CREATE → POST, UPDATE → PUT, DELETE → DELETE». В реляционных моделях, например, апдейтится сразу много связей.

Не раз на проектах сталкивалась с ситуацией, когда мы с командой буквально застревали в спорах над дизайном API. По бизнес-логике нужно сделать эндпоинты "как бы про удаление" и "как бы про обновление", но по факту операции вызывают комбинацию событий.

Основная сложность таких обсуждений - это найти понятную рамку, на основании чего принимать решение:

🔶 Выбор строго по конвенции REST часто не подходит, так как операция неконвенционная.

🔶 Выбор "по сути" бизнес-операции (например, если удаление, то строго DELETE) ломает REST-конвенцию и упирается в ограничения метода. Может ли DELETE вернуть в response несколько обновлённых сущностей вместо OK/ERROR?

🔶 Выбор в пользу "понятно для клиента" - это размытый критерий. На рынке нет единого стандарта под такие случаи, и «понятность» превращается во вкусовщину.

Как-то обсуждали эту тему с solution architect Володей @vrogach. И его решение мне очень откликнулось.

Зафиксировать внутренний стандарт для конкретного API (Design Guidelines).

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

Например: "Для всех эндпоинтов, которые запускают комбинацию событий, используется POST"

Это делает поведение API предсказуемым для клиентов и разрубает узел нестыковок с REST-конвенцией.


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

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

💬 А как у вас в командах решают такие спорные случаи? Удаётся ли договориться о едином стандарте? 👇


Репост из: Уютный IT адочек
Пришло время признаться: по вечерам я вайб-кожу. И вот чему я научился.

Профессиональный вайб-кодинг — это не когда ты красиво написал промпт, ушёл пить чай, а вернулся к готовому продукту. Это когда код пишет агент, механические проверки делает автоматика, а человек отвечает за то, чтобы всё это в итоге имело смысл.

Я не сравниваю SHA, не пересчитываю коммиты, "красоту кода", именование переменных и не перепроверяю за агентом каждое движение мышкой. Для этого есть CI: тесты, линтеры, сборки и прочие quality gates. Красное — не едем. Зелёное — можно начинать проверять, что мы вообще сделали.

И квалифицированные человеческие проверки обязательны! За последнее время я несколько раз получал вполне "готовые" изменения, которые:

1. собирались по частям, но не собирались целиком;
2. показывали интеграцию в интерфейсе, но не могли выполнить реальный запрос;
3. успешно выполняли запрос, но ломались на авторизации;
4. проходили профильные тесты, но падали в полном CI;
5. технически работали, но решали немного не ту задачу
6. реализовывали всё как запрошено, только в результате получалось, что запрошена фигня и требования надо полностью пересматривать.

И вот здесь начинается настоящая работа продуктового разработчика.

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

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

Поэтому для себя я выработал несколько правил.

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

2. Если возникает архитектурная развилка — решение принимает не агент. Он должен принести варианты, последствия и цену каждого.

3. Перед публикацией обязательно спрашиваю: что проверено узко, что проверено целиком, был ли отдельный simplify-проход и что осталось непроверенным.

4. После зелёного CI проверяю продуктовый сценарий руками. Причём не только happy path, но и один-два неприятных случая: истёкший токен, отказ в доступе, повторный запрос, отмена операции. В некоторых случаях неплохо бы провести более или менее крупный регресс — ответственность за понимание импакта изменения лежит на мне.

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

Многое из этого постепенно уедет в quality gates. Полный typecheck, сборка конечного артефакта, интеграционные тесты, проверки безопасности и стандартные сценарии не должен каждый раз вспоминать человек. Если ошибка уже случилась дважды — это не повод внимательнее читать отчёты агента. Это повод превратить её в автоматический турникет.

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

И, кажется, главный навык профессиональной вайб-код разработки — не умение заставить агента написать много кода.

Главный навык — понимать, где автоматике можно довериться, а где человеку всё ещё необходимо проконтролировать: "Мы точно сделали то, что нужно было сделать?"


Репост из: AI Для Задротов
ЦЕНЫ ВЫРОСЛИ В 12 РАЗ!

Все айти чаты сейчас бурлят гавном по поводу того, что DeepSeek повысила цены на тарифы практически в десять раз(от 6 до 12, если быть точнее), за счёт повышения базовой стоимости, внедрения пиковых часов(лол, AI блэкаут) и прочих финтов. Неприятно, но вполне закономерно, а главное это никак не влияет на меня и мою работу.

В тысяча первый раз повторяю: вы должны строить свой РАБОЧИЙ ПРОЦЕСС НЕЗАВИСИМО ОТ КОНКРЕТНОГО ПРОВАЙДЕРА И КОНКРЕТНОЙ МОДЕЛИ. Любая завязка на одного поставщика - вендорлок, зависимость и потенциальная уязвимость вашего бизнеса(или бизнеса вашего хозяина). По факту завязывать всю работу на какую-то конкретную модель конкретного провайдера, это гарантировано подставить свой хуй под выстрел из дробовика в будущем.

Да, возможно, для вас эта новость прошла незаметно, дипсиком поьзуются меньше, чем двумя другими провайдерами. Но помяните мое слово, когда такую же шляпу исполнит Anthropic или OpenAI(не суть под каким предлогом) - пиздеца увидите гораздо больше.

Поэтому мы обязательно строим нормальные процессы:
- Внедряем абстрактный слой поверх API, чтобы смена провайдера делалась правкой одной переменной окружения, а не переписыванием половины кода.
- Используем роутинг запросов: дешёвые быстрые модели для простых задач, дорогие и умные - только когда действительно надо.
- Настраиваем автоматический fallback - если одна модель легла или начала дико тормозить, запрос уходит на другую без ручного вмешательства.
- Детерминируем максимум шагов: промпты, схемы ответов, скрипты валидации, парсинг - всё должно быть зафиксировано и версионировано, чтобы при переезде на другую модель вы получали тот же результат, а не сюрпризы.
- Регулярно прогоняем бенчмарки на своих задачах, а не верим воздуханам из твиттера.
- Держим в запасе минимум двух-трёх провайдеров и локальные модели для критичных сценариев, где внешнее API недоступно.

Мир постоянно меняется и не всегда в лучшую сторону - политические санкции, экстренные поднятия ценя, аварии в сервреных - вы должны быть готовы ко всему этому, и решать такие проблемы одним переключением тумблера, а в идеале вообще иметь интеллекутальную систему фоллбека. Давайте не забывать, что мы инженеры, а не вайбкодинг monkey всё таки.

AI For Geeks. Подписаться


Репост из: Burmistrov - It и около
OpenCode для системного аналитика.

Заменяем себя Создаем помощника для работы.

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

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

текстовая версия - мой сайт оценил заметку в 9 минут чтения, для тех кто такое не любит, есть 22 минуты видео)

- YouTube
- RuTube
- VkVideo
- boosty - все тоже самое что на других площадках, но за деньги

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

https://github.com/CrazyElephantX/OpenCode ну и конечно ссылка на репозиторий, что бы все конфиги руками с видоса не перепечатывать)


Репост из: AI Для Задротов
AI ROADMAP ДЛЯ РАЗРАБОТЧИКА

https://ai-for-geeks.github.io/roadmap/

Последнюю неделю постов практически не было.

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

Поэтому практически всю неделю я читал, изучал и смотрел разные best practices, чтобы понять, чего мне не хватает и как вообще развиваться инженеру, который разрабатывает программные продукты в 2026 году со всей этой AI-истерией.

И в итоге я пришёл к тому, что решил создать roadmap развития AI-разработчика.

Собственно, представляю его вам. Можете почитать, обсудить со мной, обосрать, а можете сделать пулл-реквест в GitHub с дополнениями и улучшениям

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

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

Но если к этому подключится комьюнити, думаю, мы действительно сможем сделать что-то крутое.

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

https://ai-for-geeks.github.io/roadmap/

AI Для Задротов. Подписаться.


Репост из: Уютный IT адочек
Пока вы гоняете кодинг-агента в пет-проекте или микро-стартапе на пару тысяч строк, проблем нет: белковый разработчик видит каждый diff и правит костыли вручную. Адочек начинается при масштабировании автономии, когда агенту дают задачу "сделать зелёный CI любой ценой".

Модель — рациональный вычислитель. Если зажать её метрикой прохождения тест-сюита, она начнёт хакать тесты по пути наименьшего сопротивления:
• Выхолащивание тестов: выпиливание ассертов или ослабление условий проверки, если есть доступ на запись к /tests.
• Overfitting под моки: хардкод значений под конкретные входные данные фикстур вместо честной бизнес-логики.
• Засор контекста: попытка залечить проблему слоями костылей, превращающая ветку в радиоактивный технический долг.

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

• AST Delta Validation: Проверка AST-дерева до и после итерации. Если в diff'е появляются выхолощенные условия, маскировка ошибок через catch (e) {} или изменения файлов внеScope — пайплайн сразу режет попытку без вызова LLM.
• eBPF/gVisor Sandboxing: Запуск тестового контура в изолированном пространстве без сетевого доступа, чтобы модель не затягивала ответы с внешних эндпоинтов и не подменяла окружение.
• Atomic Rollback Strategy: Любая гипотеза агента прогоняется как отдельный изолированный коммит. При 2+ неуспешных итерациях — жесткий git reset --hard и очистка контекста. Кормить модель её же галлюцинациями из прошлых попыток — верный способ сжечь бюджет.
• Mutation Testing Gate: Валидировать устойчивость тестов (через условные mutmut / cargo-mutants) до запуска агента, чтобы у него не было шанса пролезть сквозь «слепые» ассерты.
• No LLM-as-a-Judge on Code Review: Заменять ревьюера той же самой LLM — плохая идея. 100% должна присутствовать качественная статическая проверка качества (linters, AST parsers, test runners).

Я уверен, что на первый план будут выходить вопросы обеспечения качества созданных решений с наименьшими затратами. Генерация текста давно стала дешёвой коммодити. Победят не те, чьи агенты быстрее штампуют строки, а те, чья инфра умеет детерминированно и дёшево резать мусор ещё до того, как код дойдёт до ревью.


Репост из: Burmistrov - It и около
Индексы в базах данных — шпаргалка для системного аналитика

На технических собеседованиях вопросы про индексы задают регулярно — и не только DBA. Системный аналитик, архитектор и даже старший бизнес-аналитик должен уметь объяснить, почему на определённом запросе «всё лагает», и предложить решение. Именно здесь часто ждут ответ про индексы.

Блок про индексы обычно идет после общего блока про базы данных и до блока с написанием SQL запросов.

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

Главный компромисс индексов
🟢 SELECT работает быстрее
🔴 INSERT / UPDATE / DELETE медленнее, каждый индекс надо обновлять при каждом изменении строки

Какие бывают типы индексов

➖B-tree — универсальный, работает для =, , BETWEEN, ORDER BY. По умолчанию в большинстве СУБД
➖Hash — только точное равенство =, очень быстро, но больше ни для чего
➖GIN — массивы, JSONB, полнотекстовый поиск
➖BRIN — огромные таблицы с монотонной вставкой (логи, события)
➖Составной — несколько колонок; порядок критичен — сначала =, потом интервал
➖Частичный — индексирует только часть строк: WHERE status = 'pending'`
➖Покрывающий — включает все нужные SELECT колонки через INCLUDE, исключает обращение к таблице

Когда индекс НЕ нужен
➖Таблица маленькая
➖Столбец с низкой кардинальностью: is_active, gender
➖Запрос LIKE '%text%' — B-tree не поможет
➖Функция над колонкой: WHERE YEAR(created_at) = 2026 — индекс не используется
➖Таблица пишется очень активно, а читается редко

Правило для составного индекса
1. Колонки на равенство
2. Колонки на период
3. Сортировка

Пример для запроса
WHERE status = ? AND created_at >= ? ORDER BY priority


Полная статья с примерами, антипаттернами на сайте: https://bv-dev.ru/indexes-interview-prep/

#ГотовимсяКСобеседованию


Репост из: Burmistrov - It и около
Готовимся к собеседованию - SQL

SQL на собеседовании: разбираем по шагам

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

1️⃣ SELECT — выбираем нужные колонки
2️⃣ WHERE + ORDER BY — фильтруем и сортируем строки
3️⃣ GROUP BY — считаем итоги по группам
4️⃣ HAVING — фильтруем уже после группировки
5️⃣ JOIN — объединяем данные из нескольких таблиц

Самая частая ошибка на интервью — путают WHERE и HAVING.
Иногда задания специально так построены, что бы подловить кандидата.

Как запомнить:
- WHERE — до группировки
- HAVING — после

Написать WHERE COUNT(*) > 2 — ошибка.
Правильно: HAVING COUNT(*) > 2.

Поскольку SQL требует объемных примеров, если для вас тема актуальна переходите на сайт в подробный пост. В посте 5 задач с реальными зхадачами, которые можно сразу запустить в браузере. Ответы спрятаны под спойлер, так что сначала можно попробовать решить самому.

Читать и решать: https://bv-dev.ru/sql-na-sobesedovanii-select-groupby-having-join/

#ГотовимсяКСобеседованию


Репост из: Burmistrov - It и около
Готовимся к собеседованию — монолит vs микросервисы

Монолит — это единое приложение: интерфейс, бизнес-логика и база в одном деплой-юните.

Плюсы
➖Проще разрабатывать и отлаживать
➖Дешевле инфраструктура
➖Один деплой
➖Меньше хлопот с сетью

Минусы
➖Масштабируется только целиком
➖Компоненты связаны друг с другом
➖Со временем поддержка превращается в боль
➖Стек обычно один
➖Сбой может уронить всё приложение

Микросервисы — это набор независимых сервисов, каждый делает свою задачу и общается через API/события.

Плюсы
➖Можно обновлять и масштабировать отдельные части
➖Лучше изоляция ошибок
➖Разные команды и стеки под разные сервисы

Минусы
➖Сложнее управлять всей системой
➖Выше требования к DevOps и наблюдаемости
➖Больше сетевых задержек и отказов
➖Сложнее транзакции (саги, eventual consistency)
➖Нужны более зрелые инженеры

Что важно сказать на собесе
Монолит отлично подходит для MVP, небольших проектов, ограниченного бюджета и команды до 5–10 человек.
Микросервисы — для крупных систем с высокой/неоднородной нагрузкой и несколькими командами, когда нужна гибкость релизов и независимое масштабирование.

Микросервисы — не «модно», а «дорого, но осознанно»; монолит — не «легаси по умолчанию», а нормальный старт, если контекст простой.

У микросервисов минусов больше, но масштабирование и отказоустойчивость перекрывают их все.

Подробнее на сайте

#ГотовимсяКСобеседованию


Репост из: Yet Another Analyst
Sync-async, часть 3. Бытовое безумие

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

Принято считать Polling, Callback, Webhook асинхронными паттернами. А в чем их асинхронность?

Я пользуюсь таким определением sync-async:

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

Асинхронное взаимодействие — НЕ блокирующее взаимодействие, при котором клиент может продолжить выполнение процесса, независимо от результата взаимодействия.


Что такое (Short) Polling?
Формально, его можно назвать асинхронным паттерном, т.к. после первого вызова соединение закрывается и технический процесс на клиенте не блокируется. Дальше просто добиваем статус регулярными запросами.

Но на уровне бизнес / интеграционной логики, мы не можем продолжить глобальный процесс — иначе мы бы не долбились за результатом.

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

Что такое Callback?
Если говорить о “классическом” коллбеке с двумя акторами, то здесь примерно та же история. Формально это можно обозвать асихнронщиной, но фактически нам нужно дождаться результата, чтобы продолжить бизнес-процесс. Получается та же история, что и с поллингом.

Возможен вариант коллбека, когда запрос кидает Service A, обрабатывает его Service B и отправляет ответ в Service C. Адрес последнего сервиса можно забить в настройки или передавать в исходном запросе. Считать ли это коллбеком — вопрос холиварный. Я буду считать это схемой из двух вебхуков.

Что такое Webhook?
Выглядит как одиночный синхронный запрос-ответ. Но на уровне общей картины это передача события поверх HTTP, где актор делиться инфой о последних происшествиях с подписанными соседями, не требуя ничего в ответ. Здесь HTTP-response — формальность самого протокола. Выглядит как событийная архитектура, только без очередей.

Получается, Polling и Callback — псевдо асинхронные паттерны для реализации сихнронных шагов бизнес-процесса, а невзрачный Webhook — полноценная асинхронщина, да еще и в событийной парадигме?

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


Репост из: Системный сдвиг
Вынесу из комментов: я тут нашел хорошую таблицу, связывающую проектное и процессное управление. Это стандарт P3M3, часть PRINCE2.

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

Ну а что: проект — это же просто набор поручений! (Задач).

А процессы — это что-то сложное и непонятно.

А потом, конечно, они спрашивают — а почему это у нас проекты как-то плохо запускаются? А завершаются ещё хуже?..

А потому что ваши проекты опираются на хаотическую деятельность, ad-hoc. Или, того хуже, на героическую. Когда каждый проект вытаскивают отдельные герои, в отсутствие ресурсов и поддержки. Главное, это же очень удобно — зачем налаживать управление, если каждый раз находятся герои, которые и так смогут. Культура постоянного подвига. (Если кому-то пришлось совершить подвиг, значит до этого кто-то другой плохо выполнил свою работу. Всегда!)

Я тут критиковал процессный подход, но в случае проектной деятельности именно установленные процессы должны стать опорой для проектов. Нет процессов = нет стабильной и предсказуемой проектной деятельности. Если вы читали PMBoK — там исключительно процессы описываются, это стандарт в процессной логике.

Обратите также внимание, с какого уровня начинается управление процессами. С 4-го, предпоследнего! До этого ничем управлять невозможно, можно только руководить (в смысле микроменеджмента). А системно оптимизировать процессы можно только на пятом уровне зрелости!

У организации, как у человека, есть зона ближайшего развития. Вы не можете перейти от хаоса к оптимизации*, не пройдя промежуточные шаги! У меня когда-то один студент писал диплом по управлению требованиями, и вывел там ФОРМУЛУ: 5-2=3. Если организация находится на 2 уровне зрелости, и собирается оптимизировать управление требованиями, ей нужно пройти ещё три уровня. По-другому никак!

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

* впрочем, есть теория хаоса и понятие странных аттракторов, но это совсем другая математика (и картина мира) и другой способ управления. И ещё одна метафора организации, кстати.


Репост из: Системный сдвиг
Я тут немного учусь на "настоящего управленца" (бесит это слово, честно говоря), и вот что наблюдаю.

Первое: мы с вами в пузыре. Мы привыкли, что в организациях есть процессное управление, ну или хотя бы представление о процессах. Или, например, есть представление об управлении знаниями (все наши вики и architecture as a code — это оно). Многие в курсе про качество и даже слышали про ISO 9000. То есть, мы с вами чаще всего работаем в компаниях, где всё это есть. Часто ещё и с заимствованными с запада практиками управления и опорой на стандарты. Я имею в виду банки, крупную промышленность, крупный ритейл, интернет-компании — многие из которых изначально создавались иностранцами, как Авито и Ламода. Иногда этот подход проникает даже в образовательные проекты типа Сириуса и Летово.

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

И вот тут второе: что делает руководитель в таких системах? Интересное дело: в основном работает с мотивацией. Потому что в процессах можно поставить KPI и измерять какие-то показатели, оптимизировать шаги. А если у вас управление по поручениям, то ваша основная метрика — своевременное исполнение. Точнее: 1) исполнение в принципе и 2) исполнение в срок. И тут нужно как-то людьми манипулировать, чтобы они всё это делали (а они обычно не хотят, потому что нет смысла — не видно какой-то великой цели, сплошное реагирование и тушение пожаров).

Поэтому такой управленец постоянно изучает: кто же такие его работники и что как они реагируют на разные воздействия. То есть, постоянно их типирует. По разным психологическим и псевдопсихологическим тестам. По Герчикову, Белбину, Адизесу, DISC, MBTI, Big 5, уровень эмоционального интеллекта, стиль решения задач по Алану Роу и т.д. Заодно типирует среду в компании и отслеживает социальные связи: кто, с кем и зачем общается. А также — и вот тут я немного удивился — так же всё время типирует себя.

То есть, получается, что человек знает очень много о себе: как он принимает решения, на что реагирует, в чем имеет сильные стороны, а где слаб. И то же самое знает про своих сотрудников и про своих контрагентов (или про своих руководителей). И, соответственно, умеет подобрать правильные подходы ко всем и в любой ситуации. Я писал про тетраграмматон Кулакова — это же та же схема: типирование + рекомендации лидеру, что делать (вставать в уравновешивающую позицию — если у вас в команде сплошные тролли и эльфы, вам нужно действовать, как гном, и строить продажи).

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

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

Знаете ли вы себя и команду?


Репост из: Yet Another Analyst
Вас не заменит AI, вас заменят процессы

Есть такой опенсоурс продукт для аналитиков AI IDE BAS — плагин для VS Code, в котором можно разрабатывать требования, делать техдизайн, генерить спеки.

Ребята молодцы, круто что у нас занимаются такими проектами, но я так и не понял, зачем генерить классические артефакты и передавать их разрабам, если я могу вооружиться курсором/кодексом/коворком и сразу получить код на их основе. Нужны ли код-агентам артефакты в том же виде, что и мясным разрабам? Вряд ли, намного эффективнее выглядит связка SDD + TDD.

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

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


Репост из: Путь аналитика
Чем хороша доменная модель?
(и как её сделать быстро)


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

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

Это даже звучит громоздко. При этом очень важно - иначе не организовать стейкхолдер менеджмент и легко потерять зависимость фичей и данных.

Как-то раз у меня был форс-мажор. Нужно было в короткие сроки разобрать большой домен компании. Ходила к разным экспертам за советом. Мне прямо говорили: «Так быстро не бывает. Нужно выбивать проект на месяцы».

А потом коллега (привет, Кеша Бодров!) показал Domain model из Domain Driven Design. Оказалось, можно просто сесть с командой и клеить стикеры в Miro Bounded Context template : субдомены, процессы, ответственные, сервисы, ключевые объекты. Работа творческая и позитивная. На выходе — ландшафтная картина домена. Детализацию можно варьировать под свои задачи.

Но есть нюанс: если домен небольшой, достаточно собрать пару команд. А если вовлечено десяток команд? DDD предлагает проводить event storming — выездные семинары для всех причастных. Звучит круто, но организовать и фасилитировать такое — отдельный подвиг.

Я попробовала иначе: нашла нескольких ключевых экспертов и пошла по одному.
- С первым набросала черновик
-- Со вторым сверила и дополнила
--- С третьим уточнила
---- К четвёртому серьёзные изменения модели уже закончились.
-—- Тогда отправила модель в общие чаты команд на согласование — получила отдельные уточнения и достаточно быстро закрыла вопросы.

Получилась картинка, по которой реально видно процесс целиком, со всеми зависимостями и зонами ответственности. При этом она не громоздкая.

Оказалось, работает даже когда «нельзя собрать всех». Несколько хороших разговоров с правильными людьми - очень даже эффективно.

Чем могу порекомендовать доменную модель:

✅ Быстрый онбординг новых людей
✅ Выравнивание контекстов между командами
✅ Понимание, где какие данные создаются и изменяются
✅ Удобная навигация по проекту (кто за что отвечает, от кого зависит)
✅ Основа для планирования изменений — сразу видно, кого и что затронет


А как вы боретесь с информационным хаосом на старте проекта? Делитесь лайфхаками в комментариях 👇


Репост из: Токсичный (it) архитектор
👋Известная истина гласит: люди делятся на два типа - те, кто ещё не делает бэкапы, и те, кто уже делает.

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

Потому что самое главное в бэкапах - это не процесс их создания. Бэкап, который вы никогда не пробовали восстановить - это Бэкап Шрёдингера. Пока вы не попытались поднять из него упавший прод, данные в нём одновременно и существуют, и представляют собой битый gzip-архив весом в 1 килобайт.

Вы можете годами платить за бездонные S3-бакеты и любоваться зелеными галочками в CI/CD: «Backup completed successfully». Вы можете спать спокойно, чувствуя себя ответственным профессионалом.

А потом наступает пятница. Уставший мидл случайно путает контуры и делает DROP TABLE users; на проде. Вы с гордым видом, как спаситель человечества, идете расчехлять бэкап, и тут выясняется прекрасное:

👉Скрипт последние полгода дампил только структуру базы, без самих данных.

👉Дамп зашифрован, а ключ от него унес с собой девопс, который уволился со скандалом два года назад.

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

Делать бэкапы - это полдела. Это просто складирование файлов. Настоящая работа начинается на этапе восстановления (Disaster Recovery).

1️⃣Бэкап не существует, пока из него не подняли систему. Точка. Если вы не пробовали развернуть данные на чистом тестовом контуре, считайте, что бэкапов у вас нет.

2️⃣Автоматизируйте процесс восстановления. Раз в неделю скрипт должен поднимать временную базу из дампа, прогонять SELECT 1 и базовые тесты целостности, а потом убивать её. И присылать вам алерт, если что-то пошло не так.

3️⃣ Выучите мантру RTO и RPO. Бизнесу плевать на ваши bash-скрипты. Ему важно знать RPO (Recovery Point Objective - за сколько часов мы потеряли данные?) и RTO (Recovery Time Objective - сколько часов мы будем лежать, пока админы потеют?). «Мы всё восстановим» - это не ответ. Ответ звучит так: «Мы поднимемся за 45 минут с потерей данных за последние 2 часа».

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

А теперь признавайтесь в комментариях: когда вы в последний раз пробовали развернуть свой прод из резервной копии? Только честно.

#заметкинаполях

🤡Токсичный (it) архитектор🤡


Репост из: Токсичный (it) архитектор
👋Всем привет! Долго не писал сюда - честно, банально не было времени. Меня тут коллеги попросили прочитать курс по архитектуре микросервисов. И вот, проверяя домашки и общаясь со слушателями, меня в очередной раз посетил вопрос: а насколько вообще живы и адекватно используются такие тяжеловесные подходы, как CQRS и Event Sourcing?

Давайте для начала кратко напомню, что это вообще такое.

CQRS (Command Query Responsibility Segregation)
Что это:
Паттерн, который говорит: «Хватит читать и писать данные через одну и ту же модель». Мы жестко разделяем систему на две части: Команды (изменяют состояние, ничего не возвращают) и Запросы (читают данные, ничего не меняют). Физически это часто означает разные базы данных для записи (нормализованная реляционка) и для чтения (какой-нибудь денормализованный ElasticSearch или Mongo).

Плюсы:
👉Асимметричное масштабирование. У вас 10 000 чтений на 1 запись? Отлично, масштабируем только базу для чтения.
👉Оптимизация. Данные для чтения можно заранее собрать в нужном виде (DTO), чтобы отдавать их клиенту без зубодробительных JOIN на 15 таблиц.
👉Изоляция. Тяжелый аналитический запрос не положит транзакционную базу.

Минусы:
👉 Eventual Consistency. Данные из базы записи попадают в базу чтения с задержкой. Если ваш фронтенд не готов к тому, что юзер обновил профиль, а на экране всё ещё старая фотка - готовьтесь к боли.
👉 Сложность инфраструктуры. Вместо одного PostgreSQL вам теперь нужно поддерживать две БД и шину сообщений (Kafka/RabbitMQ) между ними.


Event Sourcing
Что это: Мы перестаем хранить текущее состояние объекта. Вместо UPDATE user SET status = 'active' мы сохраняем историю событий: UserCreated -> EmailVerified -> StatusChangedToActive. Текущее состояние получается путем последовательного наката всех событий (свертка). Это как бухгалтерская книга: баланс — это сумма всех проводок, а не просто цифра в ячейке.

Плюсы:
👉Идеальный аудит. Вы на 100% знаете, не только какое сейчас состояние у системы, но и как она к нему пришла.
👉Машина времени. Можно откатить систему на любой момент в прошлом или воспроизвести баг на локалке, просто прогнав события заново.

Минусы:
👉Ад с версионированием событий. Что делать, если структура события OrderPlaced изменилась через год? Старые события никуда не делись, их всё равно надо уметь читать.
👉Сложность запросов. Нельзя просто сделать SELECT * WHERE balance > 1000. Вы не знаете текущий баланс, пока не прочтете все события. (Именно поэтому Event Sourcing почти всегда используют в жесткой связке с CQRS).

Где эти подходы реально нужны сегодня?

Джуны обожают притащить все что им интересно в очередной CRUD для блога или интернет-магазина, чтобы «сделать всё по красоте». А потом через полгода команда воет от того, что добавление одного поля в табличку занимает неделю.

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

Финтех и Биржи.
Ни один нормальный банк не меняет баланс через UPDATE. Деньги — это всегда события (MoneyDeposited, MoneyWithdrawn). Если налоговая или служба безопасности придет с вопросом: «Откуда у этого парня миллион на счету?», вы обязаны предоставить всю цепочку событий. Event Sourcing здесь - это не архитектурный изыск, это требование регулятора.

Системы бронирования с дикой асимметрией (Авиабилеты, Отели).
Миллионы людей ежесекундно ищут билеты на Aviasales (Запросы). И лишь единицы в эту же секунду их покупают (Команды). CQRS здесь спасает жизни: поисковый трафик бьет по супер-быстрым кэшам для чтения, а редкие транзакции покупок аккуратно складываются в надежную мастер-базу.

CQRS и Event Sourcing - спасают от конкретных тяжелых проблем (асимметрия нагрузки, строгий аудит), но если применять их бездумно (в обычном CRUD), вы просто сожжете бюджет и убьете команду.

А как у вас в компаниях? Внедряете CQRS по нужде бизнеса или потому что на Хабре написали, что так модно?

#этобаза

🤡Токсичный (it) архитектор🤡


Репост из: Андрей Корниенко. Про (аналитить) это
Применение LLM для анализа и проектирования

Последние полгода пользуюсь LLM для анализа и разработки и к этому моменту сложилось понимание, что именно делать чтобы извлечь максимум пользы из ИИ.

Самое главное что я для себя уяснил: работу по анализу моделька за меня не сделает. Очень много рутины может взять на себя, сделать кросс-проверку по требованиям, чтобы не противоречили сами себе разные части документации; может указать на области, которые я забыл описать или описал слабо. Но понимать, что именно я делаю и зачем, всё равно должен я сам: это настолько сильно меняется от проекта к проекту в интеграторе, что универсального рецепта как не было, так и нет.

Для чего конкретно я применяю агентов:
(а) формирую документы по пользовательским/бизнес требованиям на основе интервью;
(б) анализирую существующую документацию по разрозненным системам у заказчика (господь, храни 1С);
(в) анализирую реальный код систем, чтобы понять, как они функционируют и дописываю требования и задачи на доработку.

Как я работаю:

(1) Инструментарий: Cursor IDE, встроенные модели Composer 1.5/2, в последнее время Custom API Key от OpenRouter. Автороутер по моделям anthropic/*, но там неожиданно дорогой Claude Opus 4.6. Нашёл неплохую xiaomi/mimo-v2-pro, по результатам радует. Но действительно сложные вещи приходится гонять через Opus.

(2) Многоступенчатая работа в режиме промптов:
- сперва готовлю семантический граф знаний по проекту, складываю доки в читаемых форматах, делаю предварительные прогоны для выжимки для агентов (диаграммы, таблицы и прочее). Граф сохраняю в виде XML, отдельный навык/правила на это;

- затем с помощью агента генерю промпт по специальным правилам, которые устанавливают правильный alignment модели, управляемый belief state и погружает агента в контекст задачи. Читайте про то, как работает трансформер, что такое sparse attention и проблема lost in the middle;

- затем уже самой дорогой моделью выполняю задачу по сгенерированному промпту. Обычно она работает 10-15 минут на сложных задачах. Бывает останавливается, переспрашивает (в промпте у меня есть строгие указания на этот счёт).

(3) Связность и непротиворечивость проверяю, вручную вычитывая получившиеся артефакты. Правлю, объясняю агенту что надо исправить — и главное, почему. Тогда он начинает подсказывать где ещё что надо поправить, понимая мое намерение, а не просто тупо задачу. (фан факт: в разговоре один из заказчиков назвал другого «Даней» и иишка везде в спеке стала так называть Даниила. Пришлось объяснять, что так нехорошо)

(4) На больших объемах документов контекстным окном управляю через семантический граф и промпт. Там строго написано не загружать нерелевантные задаче документы; граф лежит в XML и позволяет агенту на стадии sparse attention помечать только те документы, которые нужны для задачи.

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

В моем случае при работе через API OpenRouter этот механизм не работает. Поэтому вручную слежу за размером окна.

Если грамотно разбивать работу по доменам и документам, то проблем обычно нет. Пока надобности с окне 1М токенов вообще не возникало. Это если ERP какую-нибудь в один присест надо прожевать — тогда да. К счастью, пока таких задач не было :))

На картинке — только кусочек рабочего промпта, он довольно длинный.

Расскажите, как у вас дела с ИИшками в работе?

#ии


Репост из: Кибер ПТУ | Кибербезопасность
blue team toolkit.pdf
7.8Мб
Настольная книга.

Если вы давно мечтали увидеть все инструменты в одном месте, а не сохранять кучу разрозненных ссылок "на потом", то мы нашли буквально настольную книгу для исследователей безопасности.
Наполнение:
- Исследование сетей;
- Управление уязвимостями;
- Мониторинг безопасности;
- и многое другое, классное, интересное.

К каждому инструменту идёт краткое описание и минимально полезный набор команд.

Мы себе уже сохранили, рекомендуем поступить также.

#AppSec #DFIR

🧠 Кибер ПТУ | 👨‍🏫 Менторство ИБ
📂 Другие каналы


Репост из: Фабрика контента
Бывает, ловишь себя на мысли: «Хочу модельку побольше» — но не знаешь, потянет ли твоё железо даже 4B.

У нас так было. И тогда мы нашли один хороший сайт, который быстро и без лишних слов анализирует систему и даёт конкретику: какие LLM вы реально сможете запустить.

Особенно приятно, когда понимаешь: и Gemma 3, и Qwen 3.5 уже стабильно работают даже на средненьких конфигурациях.

Показано 20 последних публикаций.